Streamlit仪表盘动态筛选问题:筛选器无法影响图表显示的解决方案求助
问题解决:Streamlit筛选器无法影响图表的问题
嘿,我一眼就揪出问题所在啦!你已经正确设置了侧边栏的年份多选框,也生成了筛选后的数据集df_selection,但绘制图表的时候你用的还是原始的df2,而非筛选后的df_selection——这就是筛选器完全没效果的核心原因!
修改后的完整可运行代码:
year = st.sidebar.multiselect( "select the year : ", options=df2["Year"].unique(), default=df2["Year"].unique(), ) df_selection = df2.query("Year == @year") # 关键修改:把数据源从df2换成筛选后的df_selection fig = px.bar(df_selection, x="dpe", y="Percentage", color="signature",title="<b> DPE repartition in function of the year <b>") fig.update_layout(plot_bgcolor="rgba(0,0,0,0)") st.plotly_chart(fig) # 别忘了把图表渲染到Streamlit页面上!
核心逻辑说明:
- 替换
px.bar的数据源为df_selection后,侧边栏选择的年份会实时过滤数据集,图表内容也会同步更新 - 最后补充的
st.plotly_chart(fig)是把生成的Plotly图表渲染到页面上的关键步骤,看你原代码里好像漏掉了,加上它才能看到图表哦
这样调整后,你的筛选器就能正常控制图表内容啦!
内容的提问来源于stack exchange,提问作者bruce




