You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Dash实时绘图无报错但网页无图表求助

问题原因与解决方案

你的代码只搭好了Dash应用的基础框架,但没有编写回调函数来响应dcc.Interval的更新事件,也没给图表提供任何数据,所以网页里只会显示空的图表容器,没有实际内容。

下面是修正后的完整代码,包含实时数据更新的核心逻辑:

# 导入必要模块
from dash import Dash, html, dcc, Input, Output
import plotly.graph_objects as go
import numpy as np

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

# 定义页面布局
app.layout = html.Div(
    [    
        dcc.Graph(id='live-graph', animate=True),
        dcc.Interval(
            id='graph-update',
            interval=1*1000,  # 每秒触发一次更新
            n_intervals=0
        )
    ]
)

# 编写回调函数:响应Interval更新,生成实时图表数据
@app.callback(
    Output('live-graph', 'figure'),
    Input('graph-update', 'n_intervals')
)
def update_graph(n):
    # 模拟实时数据:生成最近10个时间点的随机值
    x = np.arange(n, n+10)
    y = np.random.randn(10)
    
    # 创建图表对象
    figure = go.Figure(
        data=[go.Scatter(x=x, y=y, mode='lines+markers')],
        layout=go.Layout(
            xaxis=dict(range=[n, n+10]),  # 跟随数据更新x轴范围,实现动画效果
            yaxis=dict(range=[-3, 3])
        )
    )
    return figure

# 启动服务器
if __name__ == '__main__':
    app.run_server(debug=True)

关键说明

  • 回调函数:这是实时更新的核心,@app.callback装饰器指定了输入(dcc.Interval的n_intervals,每次触发自增1)和输出(dcc.Graph的figure属性)
  • 数据模拟:用numpy生成随机数据替代真实业务数据,你可以替换成自己的实时数据源(比如数据库读取、传感器数据等)
  • 动画效果:通过设置xaxis.range跟随最新数据,配合animate=True实现滚动的实时图表效果
  • 启动语句:末尾的app.run_server(debug=True)是启动Dash应用的必要代码,你的原代码里也缺少这部分

内容的提问来源于stack exchange,提问作者lesandromarteniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:10:58