Python 当我 select 下拉值时,Dash 回调不更新数据
Python Dash Callback is not updating Data when I select Dropdown Values
任何人都可以告诉我为什么当我 select 下拉值时我的代码没有用数据更新图表吗? (下面评论中的 link 中的完整 GitHub 代码)
def filterPollutants(selected_pollutants):
if selected_pollutants:
dff = df.loc[df.pollutant_abb.isin([selected_pollutants])]
else:
dff = df
bar_fig = {
"data": [
go.Bar(
x=dff["U_SAMPLE_DTTM"],
y=dff["DISPLAYVALUE"],
)
],
"layout": go.Layout(
title="Sampling for Local Limits",
# yaxis_range=[0,2],
yaxis_title_text="Metals mg/L",
),
}
根据您分享的 Github link 处的代码测试,我认为问题出在您在回调中过滤数据集的这一行:
dff = df.loc[df.pollutant_abb.isin([selected_pollutants])]
这一行的问题在于回调中 selected_pollutants
的值是 ['SELECTED_VALUE_FROM_DROPDOWN']
而不是 'SELECTED_VALUE_FROM_DROPDOWN'
的形式。这是因为您的下拉菜单已将 multi
设置为 True
。
但是正因为如此,您的 isin
过滤器不起作用,因为您实际上是在这样做:
dff = df.loc[df.pollutant_abb.isin([['SELECTED_VALUE_FROM_DROPDOWN']])]
而不是这个:
dff = df.loc[df.pollutant_abb.isin(['SELECTED_VALUE_FROM_DROPDOWN'])]
所以解决方法可能是删除 selected_pollutants
:
周围的列表
dff = df.loc[df.pollutant_abb.isin(selected_pollutants)]
任何人都可以告诉我为什么当我 select 下拉值时我的代码没有用数据更新图表吗? (下面评论中的 link 中的完整 GitHub 代码)
def filterPollutants(selected_pollutants):
if selected_pollutants:
dff = df.loc[df.pollutant_abb.isin([selected_pollutants])]
else:
dff = df
bar_fig = {
"data": [
go.Bar(
x=dff["U_SAMPLE_DTTM"],
y=dff["DISPLAYVALUE"],
)
],
"layout": go.Layout(
title="Sampling for Local Limits",
# yaxis_range=[0,2],
yaxis_title_text="Metals mg/L",
),
}
根据您分享的 Github link 处的代码测试,我认为问题出在您在回调中过滤数据集的这一行:
dff = df.loc[df.pollutant_abb.isin([selected_pollutants])]
这一行的问题在于回调中 selected_pollutants
的值是 ['SELECTED_VALUE_FROM_DROPDOWN']
而不是 'SELECTED_VALUE_FROM_DROPDOWN'
的形式。这是因为您的下拉菜单已将 multi
设置为 True
。
但是正因为如此,您的 isin
过滤器不起作用,因为您实际上是在这样做:
dff = df.loc[df.pollutant_abb.isin([['SELECTED_VALUE_FROM_DROPDOWN']])]
而不是这个:
dff = df.loc[df.pollutant_abb.isin(['SELECTED_VALUE_FROM_DROPDOWN'])]
所以解决方法可能是删除 selected_pollutants
:
dff = df.loc[df.pollutant_abb.isin(selected_pollutants)]