欢迎访问宙启技术站
智能推送

通过Dash和Plotly构建实时数据监控仪表盘

发布时间:2023-12-24 11:16:17

Dash是一个基于Python的开源框架,用于构建Web应用程序。它具有简单易用的API,可以轻松地创建交互式仪表盘、报告和数据可视化应用。

Plotly是一个交互式可视化库,可以创建各种类型的图表,包括折线图、散点图、热图等。它可以与Dash结合使用,为仪表盘提供数据可视化功能。

下面是一个使用Dash和Plotly构建实时数据监控仪表盘的示例。

首先,我们需要安装Dash和Plotly库。可以使用以下命令在终端中进行安装:

pip install dash
pip install plotly

接下来,我们创建一个Python文件,并导入所需的模块:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import pandas as pd
import random
import time
from dash.dependencies import Output, Input

然后,我们可以开始构建仪表盘的布局。在这个例子中,我们将创建一个包含实时图表和实时更新数值的仪表盘。

app = dash.Dash(__name__)

app.layout = html.Div(
    children=[
        html.H1("实时数据监控仪表盘"),
        
        html.Div(
            id="live-update-text",
            style={"marginBottom": "20px"}
        ),
        
        dcc.Graph(id="live-update-graph")
    ]
)

在布局中,我们添加了一个标题和两个组件。 个组件将用于显示实时更新的数值,第二个组件将用于显示实时更新的图表。

接下来,我们需要定义用于更新数据的回调函数。

@app.callback(
    Output("live-update-text", "children"),
    Output("live-update-graph", "figure"),
    Input("interval-component", "n_intervals")
)
def update_data(n):
    # 模拟获取实时数据
    data = {
        "时间": time.strftime("%Y-%m-%d %H:%M:%S"),
        "数值": random.randint(0, 100)
    }
    
    # 更新实时数据
    df = pd.DataFrame(data, index=[0])
    
    # 更新文本和图表
    return html.H4(f"最新数值:{data['数值']}"), px.line(df, x="时间", y="数值")

在这个回调函数中,我们模拟了获取实时数据的过程,并在每次回调时更新数据。然后,我们使用更新后的数据更新文本和图表。

最后,我们需要启动应用程序:

if __name__ == "__main__":
    app.run_server(debug=True)

现在,我们可以运行应用程序,并在浏览器中访问http://127.0.0.1:8050来查看实时数据监控仪表盘。

整个示例中,我们使用Dash和Plotly构建了一个简单的实时数据监控仪表盘。可以根据实际需求自定义布局和数据更新逻辑。仪表盘可以实时更新,并提供直观的数据可视化。