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

如何在Altair时间序列图中实现条件颜色并修复图表问题

问题解决方案

问题1:初始显示所有区域,默认选择未生效

原因是未给主区域选择器设置初始值,导致加载时未自动过滤数据。修改方式如下:

在创建major_region_selection时,添加value参数指定默认选中的"North West":

major_region_dropdown = alt.binding_select(options=df['Major region'].unique().tolist(), name="Major region: ")
major_region_selection = alt.selection_point(
    fields=['Major region'], 
    bind=major_region_dropdown,
    value={"Major region": "North West"}  # 设置初始选中值
)

问题2:子区域线条过多,实现选中高亮

通过添加子区域点击选择器,配合条件颜色编码实现需求:

  1. 创建子区域选择器,绑定点击事件:
# 新增子区域点击选择器
region_selection = alt.selection_point(fields=['Region'], on='click')
  1. 修改color编码为条件判断,选中的线条变红,其余为浅灰色:
color=alt.condition(
    region_selection,
    alt.value('red'),  # 选中区域线条颜色
    alt.value('#e0e0e0')  # 未选中区域浅灰色
)
  1. 将选择器添加到图表的add_params中。

完整修改后的代码

import pandas as pd
import altair as alt
import numpy as np

pd.options.display.max_columns = 10
pd.options.display.max_rows = 50
pd.set_option('display.max_colwidth', None)
alt.data_transformers.disable_max_rows()
df = pd.read_csv("sorted_data.csv")

# Create dropdown for Major region
major_region_dropdown = alt.binding_select(options=df['Major region'].unique().tolist(), name="Major region: ")
major_region_selection = alt.selection_point(
    fields=['Major region'], 
    bind=major_region_dropdown,
    value={"Major region": "North West"}  # 设置初始值
)

# Create dropdown for variable
variable_dropdown = alt.binding_select(options=df['variable'].unique().tolist(), name="Category: ")
variable_selection = alt.selection_point(fields=['variable'], bind=variable_dropdown)

# 新增子区域点击选择器
region_selection = alt.selection_point(fields=['Region'], on='click')

# Main chart
main_chart = alt.Chart(df).mark_line(point=True).encode(
    x='Year:O',
    y='mean(quantity):Q',
    color=alt.condition(
        region_selection,
        alt.value('red'),
        alt.value('#e0e0e0')
    ),
    tooltip=["Major region", "Region", "mean(quantity):Q"]
).add_params(
    major_region_selection,
    variable_selection,
    region_selection  # 添加子区域选择器
).transform_filter(
    major_region_selection
).transform_filter(
    variable_selection
).properties(
    width=450, 
    height=600,
    title="Region"
)
main_chart

说明:点击任意子区域的点,该区域的线条会变为红色,其余保持浅灰;若需要单选效果,可在selection_point里添加toggle=False参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:33:15