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

Altair:使用Repeat时自定义坐标轴标题的方法

在Altair Repeat功能中自定义轴标题的实现方法

可以直接通过Repeat功能实现自定义轴标题,无需修改数据框或手动循环。你之前代码里用alt.datum.label的思路行不通,因为alt.datum指向的是数据集中的单行数据,而Repeat的字段名属于元数据范畴,并非数据行的一部分,没法通过这种方式访问。

下面提供两种直接基于Repeat功能的解决方案:

方法1:用Vega表达式直接替换标题

如果只是简单的字符串替换,可以直接在Y轴的title参数里使用Vega-Lite的内置表达式函数处理Repeat变量,不需要额外定义Python函数:

import altair as alt
from vega_datasets import data

source = data.cars()

alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    # 用Vega表达式替换字段名里的下划线
    y=alt.Y(alt.repeat(), type='quantitative', title=alt.expr.replace(alt.repeat(), '_', ' ')),
    color='Origin',
).repeat(
    repeat=['Miles_per_Gallon', 'Weight_in_lbs'],
)

方法2:结合自定义函数与Repeat的title参数

如果需要更复杂的自定义逻辑,可以先处理字段名得到标题列表,再通过Repeat的title参数绑定到每个重复图表:

import altair as alt
from vega_datasets import data

def replace(label):
    return label.replace('_', ' ')

source = data.cars()
repeat_fields = ['Miles_per_Gallon', 'Weight_in_lbs']
# 提前处理得到自定义标题
custom_titles = [replace(field) for field in repeat_fields]

alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y=alt.Y(alt.repeat('repeat'), type='quantitative', title=alt.repeat('title')),
    color='Origin',
).repeat(
    repeat=repeat_fields,
    title=custom_titles  # 将处理后的标题绑定到对应图表
)

这两种方法都不需要改动原始数据或手动循环生成图表,完全依托Altair的Repeat功能实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:10:18