【发布时间】:2020-04-15 21:20:14
【问题描述】:
我正在尝试创建一个从 Dash 上的多选下拉菜单更新的条形图,但是当我选择要绘制的区号时,没有任何变化。
我的数据框由大约 11 行 4 列组成:
Zip Code Area Name percent no internet Mean Income Past 12 Months
0 38126 South Forum 0.8308 26346
1 38106 South Memphis 0.8223 31403
2 38108 Hollywood 0.7356 31278
这里是回调的代码:
@app.callback(
dash.dependencies.Output('graph1', 'figure'),
[dash.dependencies.Input('demo-dropdown', 'value')])
def update_image_src(selector):
data = []
filtered_data = df[df['Zip Code'] == zip_code]
for zip_code in selector:
data.append(dict(
x=filtered_data['Area Name'][0],
y=filtered_data['percent no internet'][0],
type='bar',
name=zip_code))
figure = {
'data': data,
'layout': {
'title': 'Percent of homes lacking broadband internet',
'xaxis' : dict(
title=data[0],
titlefont=dict(
family='Courier New, monospace',
size=20,
color='#7f7f7f'
)),
'yaxis' : dict(
title='% No Internet',
titlefont=dict(
family='Helvetica, monospace',
size=20,
color='#7f7f7f'
))
}
}
return figure
【问题讨论】:
-
应该
filtered_data = df[df['Zip Code'] == zip_code]在循环中for zip_code in selector而不是之前? -
我尝试了这个并且图形更新并通过添加轴标题来识别更改,但数据本身仍然没有实际绘制。它只是一个带有标题的空图。 @Ben.T
-
我明白了,您能否将数据框作为文本发布在问题中(您可以单击问题底部的编辑),我看不到图像。问题可能来自您从
filtered_data获取数据的方式,实际上,这样做filtered_data['Area Name'][0]意味着您获得列“区域名称”和标签为 0 而不是位置 0 的索引,因此无法查看数据我不确定,但我猜你的索引是不同的标签? -
@Ben.T 我在问题中添加了前 3 行!
-
@Ben.T 我还尝试将所需的数据存储为列表并以这种方式提供它 - l = [], x = df[df['Zip Code'] == ' 38126']['Zip Code'][0], l.append(x), l 因为我目前通过手动创建包含数据子集的字典来处理图表。它适用于此,但我显然想从我的数据框中提取,这就是我尝试这种方法的原因,因为我认为需要将数据作为列表输入,但上述方法也不起作用:/跨度>
标签: python pandas plotly-dash