我正在使用 plotly 的破折号尝试构建一个简单的仪表板,其中包含两个小部件 - 一个图形和一个地图(基于 mapbox)。图表数据点和地图上的位置相互连接,当用户的鼠标悬停在图表上的相关点上时,我想突出显示地图上的相关点。
我尝试使用具有以下布局的破折号回调:
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A web application framework for Python.
''', id='xxx'),
dcc.Graph(
id='example-graph',
figure=sl.draw_graph('Altitude')
),
dcc.Graph(
id='example-map',
figure=sl.draw_map()
),
])
以及以下回调:
@app.callback(
Output('example-map', 'figure'),
[Input('example-graph', 'hoverData')])
def display_hover_data(hoverData):
figure = app.layout['example-map'].figure
figure['data'].append(get_new_highlighted_dot(hoverData))
return figure
请注意,我意识到我应该删除旧的突出显示的点——但这不是重点。
这可以解决问题,但需要不断重新加载 mapbox 图形,这会破坏用户体验。我想要的只是更改地图中的痕迹而不重新加载整个图形。
我尝试使用该mydcc
模块只允许更新数据而不重新加载整个图形,但是当地图上有数千条轨迹时它仍然运行缓慢。
我想知道是否有办法克服这个问题?我也愿意使用其他类似的基于 python 的技术。