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


Python 提供了强大的工具,如 Dash 和 Plotly,用于创建交互式和动态的可视化效果,我们可以使用这些工具创建实时图表,以便实时可视化数据,这对获得有价值的见解至关重要。本文探讨了如何使用 Python Dash 和 Plotly 绘制实时图表。

我们将学习如何设置 Dash 应用程序、定义布局以及使用回调动态更新图表。通过利用 Plotly 丰富的可视化功能和 Dash 的灵活性,我们可以创建响应数据变化的实时图表。无论是监控传感器数据、跟踪财务趋势还是可视化实时分析,Python Dash 和 Plotly 都为交互式绘图提供了一种有效的解决方案。

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

以下是我们将遵循的步骤,以使用 Python Dash 和 Plotly 绘制实时图表:

  • 导入必要的模块:

    • 从 `dash` 和 `plotly` 包中导入 `dash` 和 `plotly.graph_objs`。

    • 从 `dash` 包中导入 `dcc` 和 `html` 用于创建组件。

    • 从 `dash.dependencies` 模块导入 `Output`、`Input` 和 `Interval` 用于定义回调和更新组件。

  • 初始化 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` 用于调试目的,并指定运行服务器的端口号。这里设置为 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 中绘制实时图表提供了一种通用的解决方案。

更新于:2023年7月24日

2000+ 浏览量

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.