如何使用python将Poot.ly仪表板中的“播放”按钮合并到Dash中?

问题描述 投票:3回答:1

我目前有一个带有scattermapbox地图的仪表板,它绘制了人们在网络中的移动情况,并使用几个回调来更新基于hoverdata等的图形。地图框图使用滑块(dcc.Slider)来调整当前的时间步长展示。我想添加一个“播放”按钮,可以自动点击滑块上不同时间步的点击过程。

我在Plotly中使用相同的数据集和参数创建了一个播放按钮,因为没有回调,滑块是图中布局字典中的一个元素。但是,我不确定在Dash中为按钮设置回调的位置,并且不确定它是否应该使用animate方法或者relayout方法。

目前我刚刚为每个时间步长创建了一个框架(与数据中包含的跟踪分开)。

python button plotly plotly-dash
1个回答
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

最终的结果是每秒触发我的滑块回调,推进它。注意最后的模数可以阻止它走远。

© www.soinside.com 2019 - 2024. All rights reserved.