我正在尝试从下拉菜单中创建具有多个(介于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}
但是后来我得到一个错误,输出应该是列表还是元组...
我正在努力实现的目标吗?
答案 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