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)]