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

如何用Altair制作支持单选切换月度/年度聚合的交互式折线图

实现方案

该需求完全可以实现,借助Altair自带的参数绑定、条件编码能力,仅需一份代码即可生成支持单选按钮切换的交互式图表,无需拆分多个静态图。

完整可运行代码

import altair as alt
from vega_datasets import data

# 加载示例数据集
source = data.stocks()
# 预提取年份字段
source['year'] = source.date.dt.year

# 创建视图切换单选按钮
view_switch = alt.param(
    value="月度",
    bind=alt.binding_radio(
        options=["月度", "年度"],
        name="选择视图:"
    )
)

# 构建交互式图表
chart = alt.Chart(source).add_params(
    view_switch
).transform_calculate(
    # 动态计算X轴取值
    x_value = alt.condition(view_switch == "月度", alt.datum.date, alt.datum.year)
).transform_aggregate(
    # 动态聚合逻辑:月度保留原始价格,年度计算年均价
    calc_price = "mean(price)",
    groupby = ["symbol", alt.expr.if_(view_switch == "月度", "date", "year")]
).encode(
    x = alt.X(
        "x_value:T" if view_switch == "月度" else "x_value:N",
        title = "时间",
        axis = alt.Axis(
            format = alt.condition(view_switch == "月度", "%Y-%b", "d"),
            grid = False
        )
    ),
    y = alt.Y(
        "calc_price:Q",
        title = alt.condition(view_switch == "月度", "价格", "年度平均价格")
    ),
    color = "symbol:N"
).mark_line().properties(
    width = 600
)

chart

核心逻辑说明

  • 首先创建单选按钮绑定参数,提供月度、年度两个切换选项,设置默认显示月度视图
  • 通过条件计算动态确定X轴的取值、格式,以及Y轴的聚合规则:月度视图直接使用原始日期和价格数据渲染,年度视图自动按年份+股票分组计算年度均价后渲染
  • 坐标轴标题会随视图切换自动更新,无需额外配置

运行代码后即可生成交互式图表,点击对应单选按钮即可在两个视图间无缝切换。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:36:04