Могу ли я создать несколько выпадающих меню в Python Da sh? - PullRequest
0 голосов
/ 22 января 2020

В настоящее время я запускаю раскрывающееся меню в Python, которое работает отлично.

'stat_option' загружает список значений для использования, а затем обратный вызов отправляет значение в фрейм данных, используемый для оси y. Пока все хорошо ..

     dcc.Dropdown(
         id='stats_dropdown',
         options = stat_opt,
         style = {
             'width': '35%'
         },
     ),
     dcc.Graph(
         id='graph',
     ),

... app.callback ...

@app.callback(
    dash.dependencies.Output('graph', 'figure'),
    [dash.dependencies.Input('stats_dropdown', 'value')])

def update_graph(value):
    datasets = df.to_json()
    dff = px.line(df, x = 'time', y = value, color = 'host', line_group = 'host', hover_name = "host", title = 'stats').update_xaxes(categoryorder = "category ascending")
    figure = dff
    return(figure)

Я хотел бы создать второе раскрывающееся меню, которое предоставляет значение для ось х Я создаю второе выпадающее меню и обращаюсь к списку уникальных дат в переменной date_opt:

     dcc.Dropdown(
         id='date_dropdown',
         options = date_opt,
         style = {
             'width': '35%',
         },
     ),

Но когда я назначаю новый Ввод для моего date_dropdown:

@app.callback(
    dash.dependencies.Output('graph', 'figure'),
    [dash.dependencies.Input('date_dropdown', 'value')],
    [dash.dependencies.Input('stats_dropdown', 'value')])

Я получаю следующую ошибку:

dash.exceptions.IncorrectTypeException: The state argument `date_dropdown.value` 
must be of type `dash.State`.

Так как это повторяет stats_dropdown, я предполагаю, что ошибка связана с обработкой более чем одного Ввода? Я искал через форумы сюжетов и потоки stackoverflow, но не имел большого успеха в поиске ответов для нескольких входов, и я надеюсь, что кто-то с опытом работы в da sh сможет пролить свет на мою проблему, и где хорошее место было бы найти ответы на некоторые вопросы (пример был бы хорошим).

1 Ответ

2 голосов
/ 23 января 2020
Обратные вызовы

Da sh принимают три параметра (третий необязательный). Первый параметр - это список da sh .dependencies.Output, второй параметр - это список da sh .dependencies.Input, а третий параметр - список da sh .dependencies.State. Примечание: если у вас есть только один выход, вы можете пропустить его, не помещая в список. Это, однако, не работает для входов или состояний.

Это означает, что у вас есть два варианта: у вас либо статистика в виде состояния (1), что означает, что он не будет вызывать обратный вызов при изменении или как Вход и затем добавьте его в список ввода (2) (и он вызовет обратный вызов при изменении).

(1)
@app.callback(
    dash.dependencies.Output('graph', 'figure'),
    [dash.dependencies.Input('date_dropdown', 'value')],
    [dash.dependencies.State('stats_dropdown', 'value')])

(2)
@app.callback(
    dash.dependencies.Output('graph', 'figure'),
    [dash.dependencies.Input('date_dropdown', 'value'),
     dash.dependencies.Input('stats_dropdown', 'value')])

Ваша ошибка произошла из-за того, что вы передали da sh .dependencies. Введите как третий параметр, в то время как они могут быть переданы только как второй.

...