【问题标题】:How do I increase the efficiency (speed) of dash-plotly line graph in python如何提高python中虚线图的效率(速度)
【发布时间】:2021-09-21 07:59:08
【问题描述】:

我在 python 中使用破折号。我正在绘制正在记录到 SQLite 数据库中的实时数据,目前,我正在绘制单个值与时间线图。我计划再添加 20 个图表,但目前,随着时间的增加,情节变得更慢,我认为这是由于重新绘制了整个情节。那么任何人都可以让我知道是否有有效的方法来做到这一点?我是 dash-plotly 的新手,所以任何帮助都会对我有很大帮助。

谢谢。

import random
import dash
import plotly
import plotly.graph_objs as go
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Output, Input

X = list()
X.append(0)
Y = list()
Y.append(0)
app = dash.Dash(__name__, suppress_callback_exceptions=True,)
app.layout = html.Div([html.Div([
    dcc.Graph(id='live-graph'),
    dcc.Interval(
        id='graph-update',
        interval=0.05 * 1000
    ),
])
])

latest_sno = 0


@app.callback(Output('live-graph', 'figure'),
              [Input('graph-update', 'n_intervals')])
def update_graph_scatter(input_data):
    X.append(X[-1]+1)
    Y.append(0+random.randint(-2,2))
    data = plotly.graph_objs.Scatter(
        x=X,
        y=Y,
        name='lines',
        mode='lines'
    )
    if (len(X)) > 1000:
        x_l = max(X) - 1000
    else:
        x_l = 0
    return {'data': [data], 'layout': go.Layout(title="BMS_01_CellVolt_AVG01",
                                                xaxis=dict(range=[x_l, max(X) + 1]),
                                                yaxis=dict(range=[min(Y) - 0.15, max(Y) + 1]),
                                                yaxis_title="Voltage in (V)",
                                                xaxis_title="TIME",
                                                )}
if __name__ == '__main__':
    app.run_server(debug=True,port = 5050)

【问题讨论】:

  • 嗨,感谢您的回复,我浏览了链接,但这对我没有帮助,我正在尝试消除重新绘制整个图表的任务。如果您看到我使用 2 个列表(XY)来存储数据的代码,我正在绘制图表,以便随着时间的增加,当我再次重新绘制整个图表时,图表变得滞后。有没有一种方法可以让我只追踪最新的点而不是所有的点。
  • 是的,在我发布的链接中,演示了如何通过定位 'extendData' 属性来避免重绘整个图表(当您定位 'figure' 属性时会发生这种情况)。跨度>
  • 我很困惑,据我了解,他正在更新为一个数字并保留以前的值,但就我而言,我还需要在图表上保留以前的值。你能帮我解决这个问题吗?我对此完全陌生?
  • 您说您希望有人对您的代码进行更改,但您的代码需要本地文件才能运行。如果您将代码编辑为mre,其他人无需访问您的数据库即可运行,您的运气可能会更好。

标签: python plotly plotly-dash plotly-python


【解决方案1】:

好的经过这么多天的努力,我找到了解决问题的方法。您可以使用可扩展图表来实现它,请按照此链接查找示例代码 https://community.plotly.com/t/extend-or-append-data-instead-of-update/8898/25

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2012-06-30
    • 2013-03-27
    • 2017-07-12
    • 2016-11-20
    • 1970-01-01
    相关资源
    最近更新 更多