Python 使用Dash和Plotly绘制实时图表
Python提供了强大的工具,如Dash和Plotly,用于创建交互式和动态可视化。使用这些工具,我们可以创建实时图表,以便实时可视化数据,这对于获得有价值的洞见至关重要。本文将探讨如何使用Python Dash和Plotly绘制实时图表。
我们将学习如何设置Dash应用程序,定义布局,并使用回调函数动态更新图表。通过充分利用Plotly的丰富可视化功能和Dash的灵活性,我们可以创建实时图表,使其能够响应不断变化的数据。无论是监控传感器数据、跟踪金融趋势还是可视化实时分析,Python Dash和Plotly都提供了一个高效的交互式图表解决方案。
如何使用Python Dash和Plotly绘制实时图表
以下是使用Python Dash和Plotly绘制实时图表的步骤:
- 导入必要的模块 –
dash
和plotly.graph_objs
从dash
和plotly
包中导入。-
dcc
和html
从dash
包中导入,用于创建组件。 -
Output
,Input
和Interval
从dash.dependencies
模块中导入,用于定义回调函数和更新组件。
-
初始化 Dash 应用:
- 创建一个
Dash
类的实例,并将其赋值给app
- 定义变量:
- 定义应用的布局:
- 使用
html.Div
组件创建应用内容的容器。 -
在
Div
内部添加html.H2
组件,显示标题”实时图表”。 -
添加
dcc.Graph
组件,使用id
为 “live-graph” ,显示图表。将animate
设为True
以启用实时更新。 -
包含一个
dcc.Interval
组件,使用 id 为 “graph-update” ,定义图表更新的时间间隔。
- 使用
-
定义回调函数:
- 使用
@app.callback
装饰器指定将更新图形的函数。 -
回调函数将
graph-update
组件的n_intervals
属性作为输入。该属性表示间隔已经过去的次数。 -
在函数内部,为x轴和y轴的值生成随机数据。在下面的程序示例中,x轴的范围是从0到9,y轴的值是0到100之间随机生成的整数。
-
创建一个
go.Scatter
对象来表示图形的追踪。使用提供的参数自定义其外观。 -
创建一个
go.Layout
对象来定义图表的布局。在这里,我们设置了标题,并根据生成的数据指定了x轴和y轴的范围。 -
返回一个字典,其中包含代表要显示的图表的
data
和layout
组件。
- 使用
-
运行应用程序:
- 使用
if __name__ == "__main__":
块确保应用程序仅在直接执行脚本时运行(而不是作为模块导入)。 -
在该块中,调用
app
的run_server
方法。开始启动Dash服务器的实例。将debug
设置为True
用于调试目的,并指定要在其上运行服务器的port
号。在此处,它被设置为8051。
- 使用
- 创建一个
通过按照以下步骤,我们可以使用Dash和Plotly绘制实时图形。根据您的要求,我们可以自定义图形数据、外观和布局。请记得使用以下命令安装必要的依赖项 ( dash
和 plotly
):
pip install dash plotly
在运行程序之前。
示例
import dash
from dash import dcc, html
from dash.dependencies import Output, Input
import plotly.graph_objs as go
import random
# Initialize the Dash app
app = dash.Dash(__name__)
# Define the layout of the app
app.layout = html.Div(
[
html.H2("Live Graph"),
dcc.Graph(id="live-graph", animate=True),
dcc.Interval(id="graph-update", interval=1000, n_intervals=0),
]
)
# Callback function to update the graph
@app.callback(Output("live-graph", "figure"), [Input("graph-update", "n_intervals")])
def update_graph(n):
# Generate random data
x_data = list(range(10))
y_data = [random.randint(0, 100) for _ in range(10)]
# Create the graph trace
trace = go.Scatter(
x=x_data,
y=y_data,
mode="lines+markers",
name="Data",
line={"color": "rgb(0, 255, 0)"},
marker={"color": "rgb(0, 255, 0)", "size": 8},
)
# Create the graph layout
layout = go.Layout(
title="Live Graph",
xaxis=dict(range=[min(x_data), max(x_data)]),
yaxis=dict(range=[min(y_data), max(y_data)]),
)
# Return the graph figure
return {"data": [trace], "layout": layout}
if __name__ == "__main__":
app.run_server(debug=True, port=8051)
输出
C:\Users\Tutorialspoint>python image.py
Dash is running on http://127.0.0.1:8051/
* Serving Flask app 'image'
* Debug mode: on
结论
总之,Python Dash和Plotly提供了一个强大的组合,用于创建动态可视化数据的实时图表。通过按照本文中概述的步骤,我们可以轻松设置Dash应用程序,定义布局并实时更新图表。
通过自定义图表的外观和行为,Python Dash和Plotly使数据分析师和开发人员能够创建适应不断变化的数据的交互式和有洞察力的可视化。无论是用于监控、分析还是报告,这种方法为在Python中绘制实时图表提供了一种多功能解决方案。