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

Python Plotly Dash实时更新图表:如何删除旧点仅绘制最新数据点

Plotly Dash 实时图表仅保留最新数据点实现方案

完全可以实现,不需要修改你现有的回调刷新逻辑,只需要在数据读取环节对数据集做截断,丢弃最早的历史数据即可。

核心问题原因

你当前的代码每次触发刷新都会全量读取CSV内的所有数据绘图,随着CSV不断写入新数据,图表上的历史点会持续累积。

可选实现逻辑

根据你的业务场景二选一即可:

  • 固定点数保留:明确指定图表最多展示N个最新数据点,新数据传入后自动丢弃最早的点,适合采样频率固定的场景
  • 时间窗口保留:如果CSV内包含时间戳字段,可以仅保留最近T时长内传入的所有数据点,适合需要严格按时间范围展示的场景

参考修改代码

以下是固定保留最新30个点的实现版本,你可以根据自己的需求调整保留点数:

import pandas as pd
import dash
import plotly.graph_objects as go
# 旧版本Dash可保留原来的dash_core_components、dash_html_components导入方式
from dash import dcc, html
from dash.dependencies import Input, Output


app = dash.Dash(__name__)
app.title = "Sistem de detectie al punctului mort"
# 配置图表最多保留的最新数据点数量
MAX_DISPLAY_POINTS = 30

def _create_fig():
    df = pd.read_csv('/home/pi/tflite1/csv_data_file.csv')
    df.columns=['x','y']
    # 核心操作:仅取数据集末尾最新的N条数据,更早的历史点直接丢弃不参与绘图
    df_show = df.tail(MAX_DISPLAY_POINTS)
    return go.Figure(
        data=go.Scatter(
            x=df_show['x'],
            y=df_show['y'], 
            mode='markers'
        ),
        layout=go.Layout(
            # 可选配置:固定坐标轴范围,避免开启动画时图表因数据变化频繁跳变
            xaxis_range=[df['x'].min(), df['x'].max()],
            yaxis_range=[df['y'].min(), df['y'].max()]
        )
    )


app.layout = html.Div([
    dcc.Graph(
        id='g1',
        animate = True,
        figure=_create_fig()
    ),
    dcc.Interval(
        id='interval-component',
        interval=1*1000, # 刷新间隔1秒
        n_intervals=0
    )
])

@app.callback(
    Output('g1', 'figure'),
    Input('interval-component', 'n_intervals')
)
def refresh_data(n_clicks):
    return _create_fig()


if __name__ == "__main__":
    app.run_server(host='0.0.0.0', debug=True, port=8099)

注意事项

  • 不建议通过直接修改原CSV、删除旧行的方式实现需求,在树莓派这类设备上频繁磁盘写入删除会增加IO负载,内存中截断数据的方式性能开销更低
  • 如果需要用时间窗口筛选,只需要把df.tail()的逻辑替换为按时间戳字段过滤即可,比如筛选df[df['timestamp'] > time.time() - 10]就能保留最近10秒的数据
  • 如果关闭了动画效果,可以不用固定坐标轴范围,让Plotly自动适配当前展示数据的范围即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:57:32