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

如何在Altair中实现跨标记/符号的选择联动?

实现Altair多图层间的选择共享与组高亮

要实现选中某点后,其所属分组的所有数据点及连线高亮,核心是让选择器基于分组字段(这里是Origin)进行匹配,并确保所有图层共享该选择状态。以下是修改后的代码及关键说明:

修改后的代码

import altair as alt
from vega_datasets import data

cars = data.cars.url

# 配置选择器,按Origin字段匹配同组数据
selector = alt.selection_point(fields=['Origin'])

# 定义条件颜色编码:选中组显示对应Origin颜色,未选中组为浅灰色
conditional_color = alt.condition(selector, alt.Color('Origin:N'), alt.value('lightgray'))

base = alt.Chart(cars).encode(
    x="Horsepower:Q",
    y="Miles_per_Gallon:Q",
)

points = base.mark_point().encode(color=conditional_color).add_params(selector)
lines = base.mark_line().encode(color=conditional_color)

(points + lines).properties(width=600, height=300).interactive()

关键修改说明

  • 选择器配置:给selection_point添加fields=['Origin'],使选择器不再仅匹配单个点,而是匹配所有具有相同Origin值的数据条目。点击任意点时,该点所属分组的所有数据都会被标记为选中状态。
  • 条件编码优化:使用alt.condition替代原代码的alt.when,更直观地定义选中/未选中状态的颜色逻辑。
  • 图层状态共享:点图层和线图层使用同一个条件编码和选择器,确保选择状态在两个图层间同步生效。

修改后,点击任意数据点,该点所属Origin分组的所有点及对应连线会高亮显示,其余分组的点和线则变为浅灰色,同时支持通过点击图例快速选中/切换分组高亮状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:27:37