使用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 中繪製即時圖表提供了一種通用的解決方案。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP