【发布时间】:2019-08-07 13:23:55
【问题描述】:
我正在尝试从下拉列表中创建一个包含多个(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}
但是我得到一个错误,输出应该是一个列表还是一个元组......
我正在努力实现的目标是否可能?
【问题讨论】:
-
您想要做的事情是 100% 可能的。我对你的代码布局有点困惑。例如,
catergories-sales是您的回调函数,还是从回调函数中调用?我也很惊讶-字符被允许,因为那应该是无效的语法。您可以编辑您的帖子以完全显示您的代码,或者至少尽可能多地显示您的代码吗?
标签: plotly plotly-dash