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

如何在Altair图表的颜色条中选择连续数值范围?

实现Altair连续颜色条的范围选择交互

Altair目前不支持直接将区间选择器绑定到连续颜色的原生图例上,所以你之前尝试的bind="legend"方法对连续编码无效。不过可以通过创建独立的渐变颜色条图表作为交互控件,实现类似的范围选择功能,具体步骤如下:

完整实现代码

import altair as alt
from vega_datasets import data

cars = data.cars()

# 定义针对Acceleration的区间选择器
color_selection = alt.selection_interval(encodings=['y'])

# 主散点图:根据选择器高亮符合范围的点
scatter = alt.Chart(cars).mark_circle(size=60).encode(
    x='Horsepower:Q',
    y='Miles_per_Gallon:Q',
    color=alt.condition(
        color_selection,
        'Acceleration:Q',
        alt.value('lightgray')  # 未选中的点置灰
    ),
    tooltip=['Name', 'Acceleration', 'Horsepower', 'Miles_per_Gallon']
).add_params(color_selection)

# 创建渐变颜色条图表(作为交互控件)
color_bar = alt.Chart(cars).mark_rect().encode(
    y=alt.Y('Acceleration:Q', axis=alt.Axis(orient='right')),
    color=alt.Color('Acceleration:Q', legend=None)  # 隐藏原生图例,用这个渐变条代替
).add_params(color_selection)

# 组合主图和颜色条
scatter | color_bar

代码解释

  1. 选择器定义:使用alt.selection_interval(encodings=['y'])创建区间选择器,后续绑定到渐变颜色条的y轴(对应Acceleration的连续值)。
  2. 主散点图逻辑:通过alt.condition判断点是否在选择器的范围内,选中的点显示原颜色,未选中的置为浅灰色。
  3. 渐变颜色条创建:用mark_rect()生成纵向的渐变条,y轴映射Acceleration的连续值,颜色同步映射该字段,同时隐藏原生图例,让这个渐变条作为交互控件。
  4. 图表组合:用|运算符将主散点图和颜色条横向拼接,实现选择联动。

效果说明

拖动渐变颜色条上的选择框,即可筛选出Acceleration在对应范围内的散点,未选中的点自动置灰,完全实现你想要的连续数值范围选择功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:45:00