为什么缩放在 Dash 中无法使用我的折线图

why zoom doesn't work in Dash plotly with my line graph

我在 Dash 应用程序中绘制了一个折线图,这个图经常更新,假设每 1 秒更新一次,但是当我尝试放大时,它会立即返回到初始视图。我究竟做错了什么?我是 Dash 和网络新手 UI 所以任何帮助都会对我有很大帮助,提前谢谢你。

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

X = deque()
X.append(1)
Y = deque()
Y.append(1)


app = dash.Dash(__name__)
app.layout = html.Div(
    [
        dcc.Graph(id='live-graph', animate=True),
        dcc.Interval(
            id='graph-update',
            interval=1*1000
        ),
    ]
)

@app.callback(Output('live-graph', 'figure'),
              [Input('graph-update', 'n_intervals')])
def update_graph_scatter(input_data):
    X.append(X[-1]+1)
    Y.append(Y[-1]+Y[-1]*random.uniform(-0.1,0.1))

    data = plotly.graph_objs.Scatter(
            x=list(X),
            y=list(Y),
            name='Scatter',
            mode= 'lines+markers'
            )

    return {'data': [data],'layout' : go.Layout(
    xaxis=dict(range=[0, max(X) + 1]),
    yaxis=dict(range=[min(Y) - 0.15, max(Y) + 1]),
    title="Plot Title",
    xaxis_title="x Axis Title",
    yaxis_title="y Axis Title",
    font=dict(
        family="Courier New, monospace",
        size=20,
        color="#7f7f7f"
    )
)}


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

这是因为我每次都渲染整个图表,这反过来会重置图表的视图,即使您缩放 in/out。解决方案是使用可扩展图。 Dash plotly 有此支持访问此 Link 以了解更多信息。 .