我正在尝试使用Dash重新创建这个Plotly example,但我无法获得按钮和范围滑块。有人知道我是怎么做到的吗?
这就是我尝试过的:
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}
}
}
)发布于 2017-10-24 03:51:31
RangeSlider是一个Dash Core Component,它不是Graph (也是Dash Core组件)的属性。
下面是一个简单的应用布局:
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_graph的Input。您可以有多个输入(例如,一个Dropdown、另一个RangeSlider等)。
Output始终是单个的。在本例中,它是Graph组件的figure属性。
# 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发生更改。
# 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])发布于 2019-06-12 19:29:47
rangeslider是xaxis的属性。
我使用的是这样的东西:
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'}]}
},
)))
])发布于 2019-07-23 00:30:35
我做了这样的事情(使用一个具有datetimeindex的df ):
函数
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应用布局
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),
)https://stackoverflow.com/questions/46519518
复制相似问题