使用 Python Dash 和 Plotly 绘制实时图表

pythonserver side programmingprogramming

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` 组件以显示标题"Live图表"。

    • 添加一个 `dcc.Graph` 组件,其 `id`"live-graph",以显示图表。将 `animate` 设置为 `True`,以启用实时更新。

    • 包含一个 `dcc.Interval` 组件,其 `id` 为"graph-up​​date",以定义图表更新的间隔。

  • 定义回调函数:

    • 使用 `@app.callback` 装饰器指定将更新图表的函数。

    • 回调函数将 `graph-up​​date` 组件的 `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

# 初始化 Dash 应用
app = dash.Dash(__name__)

# 定义应用的布局
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),
   ]
)

# 回调函数来更新图表
@app.callback(Output("live-graph", "figure"), [Input("graph-update", "n_intervals")])
def update_graph(n):
   # 生成随机数据
   x_data = list(range(10))
   y_data = [random.randint(0, 100) for _ in range(10)]

   # 创建图形轨迹
   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},
   )

   # 创建图形布局
   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 {"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 中绘制实时图表提供了一种多功能解决方案。


相关文章