首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Plotly-Dash调整滑块和选择器的范围

如何使用Plotly-Dash调整滑块和选择器的范围
EN

Stack Overflow用户
提问于 2017-10-02 12:29:14
回答 3查看 11.8K关注 0票数 2

我正在尝试使用Dash重新创建这个Plotly example,但我无法获得按钮和范围滑块。有人知道我是怎么做到的吗?

这就是我尝试过的:

代码语言:javascript
复制
traces =[{
            'x':df.index,
            'y':df.level,
            'type': 'scatter',
            'mode': 'lines',
            'name': 'a_level'
    }]
    graphs.append(dcc.Graph(
        id='a_level',
        figure={
            'data': traces,
            'layout': {
                    'type': 'date',
                    'rangeslider': {'visible':True},
                    'margin': {'b': 0, 'r': 10, 'l': 60, 't': 0}
            }
        }
    )
EN

回答 3

Stack Overflow用户

发布于 2017-10-24 03:51:31

RangeSlider是一个Dash Core Component,它不是Graph (也是Dash Core组件)的属性。

下面是一个简单的应用布局:

代码语言:javascript
复制
import dash_core_components as dcc

app.layout = html.Div(children=[
    html.H1('My Dash App'),
    html.Div(
        [
            html.Label('From 2007 to 2017', id='time-range-label'),
            dcc.RangeSlider(
                id='year_slider',
                min=1991,
                max=2017,
                value=[2007, 2017]
            ),
        ],
        style={'margin-top': '20'}
    ), 
    html.Hr(),
    dcc.Graph(id='my-graph')
])

现在,您只需定义一个回调,每次RangeSlider的值发生变化时都会调用该回调。这是导致调用_update_graphInput。您可以有多个输入(例如,一个Dropdown、另一个RangeSlider等)。

Output始终是单个的。在本例中,它是Graph组件的figure属性。

代码语言:javascript
复制
# the value of RangeSlider causes Graph to update
@app.callback(
    output=Output('my-graph', 'figure'),
    inputs=[Input('year_slider', 'value')]
    )
def _update_graph(year_range):
    date_start = '{}-01-01'.format(year_range[0])
    date_end = '{}-12-31'.format(year_range[1])
    # etc...

Dash Core组件可能会导致多个组件更新。例如,RangeSlider可能会导致Label发生更改。

代码语言:javascript
复制
# the value of RangeSlider causes Label to update
@app.callback(
    output=Output('time-range-label', 'children'),
    inputs=[Input('year_slider', 'value')]
    )
def _update_time_range_label(year_range):
    return 'From {} to {}'.format(year_range[0], year_range[1])
票数 3
EN

Stack Overflow用户

发布于 2019-06-12 19:29:47

rangesliderxaxis的属性。

我使用的是这样的东西:

代码语言:javascript
复制
app = dash.Dash(__name__, external_stylesheets=['https://codepen.io/chriddyp/pen/bWLwgP.css'])
    app.layout = html.Div([
        dcc.Graph(
            id='bar_plot',
            figure=go.Figure(
                data=area,
                layout=go.Layout(
                    xaxis={
                        'rangeslider': {'visible':True},
                        'rangeselector': {'visible':True, 'buttons':[{'step':'all'}, {'step':'day'}, {'step':'hour'}]}
                    },
                )))
    ])
票数 3
EN

Stack Overflow用户

发布于 2019-07-23 00:30:35

我做了这样的事情(使用一个具有datetimeindex的df ):

函数

代码语言:javascript
复制
def get__marks(f):

dates = {}
for z in f.index:
    dates[f.index.get_loc(z)] = {}
    dates[f.index.get_loc(z)] = str(z.month) + "-" + str(z.day)

return j

应用布局

代码语言:javascript
复制
dcc.RangeSlider(
    id='range-slider',
    updatemode='mouseup',
    min=0,
    max=len(df.index) - 1,
    count=1,
    step=1,
    value=[0, len(df.index) - 1],
    marks=get_marks(df),
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46519518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档