无法获得多个输入和输出以在Dash中工作

时间:2019-08-07 13:23:55

标签: plotly plotly-dash

我正在尝试从下拉菜单中创建具有多个(介于1和4之间)输入的图形。 我希望有尽可能多的柱形图,如上面的图表中有输入。不幸的是,我似乎无法使其正常工作。

当我“手动”创建图形时,通过在列表中包含条形图列表然后调用它: (我只显示了代码的相关部分,有app.layout,所有必需的div等。)

departments = ['ladies','mens','accessories','kids']
output = []
for dep in departments:
    output.append(
         go.Bar(
             name = dep,
             x = categories[(categories.category == dep)]['sales']
     ))
dcc.Graph(figure = go.Figure(data = output))

按预期工作,绘制条形图。

我试图转向具有部门下拉列表的回调:

dcc.Dropdown(
            id = 'departament_b',
            options =[
                {'label': 'Ladies', 'value': 'ladies'},
                {'label': 'Mens', 'value': 'mens'},
                {'label': 'Accessories', 'value': 'accessories'},
                {'label': 'Kids', 'value': 'kids'}
            ],
            value = ['ladies','mens','accessories','kids'],
            multi = True
        )
,
dcc.Graph(id = 'kategorie-sls')

然后我有我的回叫:

@app.callback(
[Output('kategorie-sls', 'figure')],
[Input('departament_b', 'value')]
)

以及用于更新图形的函数:

def categories-sales(department_b):
    graph = []
    for dep in department_b:
        graph.append(go.Bar(
            name = dep,
            x = categories[(categories.category == dep)]['sales']
        ))

我得到了错误:

dash.exceptions.InvalidCallbackReturnValue: Invalid number of output values for ..kategorie-sls.figure...

预期1得4

如果我从下拉列表中选择1个值(或将其更改为not multi并将仅1个值放入value = ['ladies']中,则会出现此错误:

Failed component prop type: Invalid component prop `figure` key `name` supplied to Graph. Bad object: { 
"name": "ladies", "x": [ 18535.059999999998 ], "type": "bar" } Valid keys: [ "data", "layout", "frames" ]

*(This error originated from the built-in JavaScript code that runs Dash apps. Click to see the full stack trace 
 or open your browser's console.)*

我尝试将输出放入字典in this question

return {'data' : graph}

但是后来我得到一个错误,输出应该是列表还是元组...

我正在努力实现的目标吗?

1 个答案:

答案 0 :(得分:0)

问题是我将回调输出作为列表,但是该函数的实际输出不是应该的列表。 如果没有将callbackOutput定义为列表

@app.callback(Output('xx','value'),..)

然后它将按预期工作。 感谢@alexcjohnson @ plotly社区论坛 https://community.plot.ly/t/cannot-get-multiple-inputs-and-multiple-outputs-to-work/26945