使用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.