我目前有一个带有scattermapbox地图的仪表板,用于绘制人们在网络中的移动情况,并使用多个回调根据hoverdata等更新图表。地图框图使用滑块(dcc.Slider)来调整时间步长目前正在展示。我想添加一个" play"按钮,用于自动点击滑块上不同时间步的过程。
我在Plotly中使用相同的数据集和参数创建播放按钮取得了成功,因为没有回调,滑块是图中布局字典中的元素。但是,我不确定在Dash中为按钮设置回调的位置,并且不确定它是否应该使用animate方法或者重新布局方法。
目前我刚刚为每个时间步长创建了一个框架(与数据中包含的跟踪分开)。
答案 0 :(得分:0)
当谈到推进滑块时,我还没有找到一个“好”/自然的方法来做到这一点。但是,我得到了Interval组件的解决方法。
import dash_core_components as dcc
import dash_html_components as html
import dash.dependencies
from dash.dependencies import Input, Output
app.layout = html.Div(children=[
dcc.Interval(id='auto-stepper',
interval=1*1000, # in milliseconds
n_intervals=0
),
dcc.Slider(
id = "steper",
min=1,
max=step_num,
value=1
)]
然后,我有一个回调:
@app.callback(
dash.dependencies.Output('steper', 'value'),
[dash.dependencies.Input('auto-stepper', 'n_intervals')])
def on_click(n_intervals):
if n_intervals is None:
return 0
else:
return (n_intervals+1)%step_num
这样做的最终结果是每秒触发我滑块的回调,推进它。注意最后的模数以阻止它走远。