【问题标题】:Is there a way to display content of several checklist selections in one output with Dash / Plotly?有没有办法使用 Dash / Plotly 在一个输出中显示多个清单选择的内容?
【发布时间】:2019-09-04 09:03:01
【问题描述】:

我尝试构建一个仪表板,允许用户检查不同的复选框,我想出了如何去做。我正在努力解决的是如何将输出合并到页面底部的一行中(而不是单个输出,就在复选框选择下方)。

我发现“状态”和“缓存”是一种可能的解决方案,但我不知道下一步该做什么。

感谢您的帮助。


import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import time

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)



app.layout = html.Div(children=[


    dcc.Checklist(id='my-checklist1',
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    value=['MTL', 'SF']
    ),
    html.Div(id='my-div-checklist1'),
    html.Hr(),



    dcc.Checklist(id='my-checklist2',
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    value=['MTL', 'SF'],
    labelStyle={'display': 'inline-block'}
    ),
    html.Div(id='my-div-checklist2'),
    html.Hr(),


])



@app.callback(Output('my-div-checklist1', 'children'),
              [Input('my-checklist1', 'value')])
def prepare_data(categ):
    if categ:
        return html.Div([dcc.Markdown(
                         '''Output for {}'''.format(categ))])


@app.callback(Output('my-div-checklist2', 'children'),
              [Input('my-checklist2', 'value')])
def prepare_data(categ):
    if categ:
        return html.Div([dcc.Markdown(
                         '''Output for {}'''.format(categ))])


if __name__ == '__main__':
    app.run_server(debug=True)

如果我选择我得到的所有框:

第一部分下的“MTL”、“SF”、“NYC”的输出和 第二部分下的“MTL”、“SF”、“NYC”的输出。

我想要的是: 'MTL'、'SF'、'NYC'、'MTL'、'SF'、'NYC'的输出

【问题讨论】:

    标签: python-3.x radio-button plotly dashboard plotly-dash


    【解决方案1】:

    如果我正确理解您的问题,则无需缓存。您的回调可以有多个输入。您必须将两个复选框都放入装饰器并调整函数头:

    @app.callback(Output('my-div-checklist2', 'children'),
                  [Input('my-checklist1', 'value'),
                   Input('my-checklist2', 'value')])
    def prepare_data(categ1, categ2):
    

    顺便说一句,也可以有多个输出!

    【讨论】:

    • 谢谢。这就是我一直在寻找的。现在可以使用了。
    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2018-06-13
    相关资源
    最近更新 更多