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

如何在Altair绘图中创建类似ggh4x的嵌套轴标签?

在Altair中创建类似ggh4x的嵌套轴标签

可以实现,但Altair原生没有提供ggh4x那样直接的嵌套轴标签功能,需要通过手动添加文本标记或复合图表的方式模拟效果,以下是两种可行方案:

方案一:手动添加上层分组标签

先绘制基础图表,再用mark_text()在底层轴标签的上方添加分组标题,通过调整坐标、间距和对齐方式来模拟嵌套结构:

  • 底层轴使用细分类别,设置合适的标签内边距,给上层标签留出空间
  • 用独立的文本标记层绘制分组标签,指定y轴偏移量让它位于底层轴上方
  • 确保分组标签和底层类别的位置对应

示例代码:

import altair as alt
import pandas as pd
from vega_datasets import data

iris = data.iris()
# 给花瓣长度分组,作为底层轴标签
iris['petal_length_group'] = pd.cut(
    iris['petalLength'], bins=3, labels=['短花瓣', '中花瓣', '长花瓣']
)

# 基础柱状图
base_chart = alt.Chart(iris).mark_bar().encode(
    x=alt.X(
        'petal_length_group:N',
        axis=alt.Axis(title='', labelAngle=0, labelPadding=30)
    ),
    y='count()',
    color='species:N'
)

# 上层分组标签
group_labels = alt.Chart(iris).mark_text(
    y=-25,
    align='center',
    fontWeight='bold'
).encode(
    x=alt.X('species:N', aggregate='median', axis=None),
    text='species:N'
)

# 组合图表
final_chart = (base_chart + group_labels).properties(
    height=350,
    width=500
)

final_chart.show()

方案二:用复合图表拼接实现

将不同分组的子图表横向拼接,每个子图表使用自己的细分轴,再在整体上方添加分组标题,适合分组边界清晰的场景:

  • 按上层分组拆分数据,为每个分组绘制子图表
  • 使用hconcat拼接子图表,隐藏子图表之间的重复轴元素
  • 手动添加分组标题到对应子图表的上方

这种方式的优势是分组边界更清晰,但需要处理子图表的对齐和间距问题。

需要注意的是,这些方法都需要手动调整布局参数,不像ggh4x那样自动适配,但可以达到类似的视觉效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:38:24