You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Altair堆叠柱状图应用筛选转换时如何保留全部图例类别?

解决方案

你遇到的图例消失问题,是因为transform_filter会直接过滤掉未选中类别的所有数据,Altair绘制图例时会自动匹配当前数据集里的类别,所以未选中的类别就会从图例中消失。

修改后的完整可运行代码如下:

import altair as alt
import pandas as pd


df = pd.DataFrame(
    {
        "name": ["Sarah", "Sarah", "Sarah", "Sarah", "Nick", "Nick", "Nick"],
        "level": ["A", "B", "B", "C", "A", "B", "C"],
        "id": range(7),
    }
)

selection = alt.selection_multi(fields=['level'], bind='legend')

alt.Chart(df).mark_bar().encode(
    x="count(id)",
    y="name",
    color=alt.Color("level"),
    # 新增透明度配置:选中的类别可见,未选中的隐藏
    opacity=alt.condition(selection, alt.value(1), alt.value(0))
).add_selection(
    selection
)

核心改动点:

  • 移除了transform_filter配置:该配置会直接删除未选中level类别的对应数据,导致图例缺失对应类别的数据源,自动隐藏相关图例项
  • 新增opacity编码规则:通过条件判断,仅将选中类别的柱状图设置为完全不透明(可见),未选中类别设置为完全透明(不可见),视觉上实现筛选效果,同时全量数据保留,所有图例项会始终展示
  • 原有多选逻辑无需调整:selection_multi默认支持Shift+点击图例实现多类别选中,单击单个图例可切换该类别的选中状态

内容的提问来源于stack exchange,提问作者Vermillion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:15:04