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

如何在Altair中将Y轴标签分置左右两侧?

Altair实现左右Y轴分别显示Group和Unique ID标签(美化用)

要实现左侧Y轴显示group标签(不合并分组)、右侧Y轴显示对应unique_ID标签的美化效果,我们可以通过分层图表+共享Y轴位置的方式实现,并非使用双刻度轴。以下是具体方案:

1. 准备示例数据

假设你的数据集包含unique_ID、group和数值字段,先构造示例数据(替换为你的真实数据即可):

import altair as alt
import pandas as pd

# 示例数据集:每个unique_ID对应一个group和数值
data = pd.DataFrame({
    'unique_ID': ['ID001', 'ID002', 'ID003', 'ID004', 'ID005'],
    'group': ['Group A', 'Group A', 'Group B', 'Group B', 'Group C'],
    'value': [12, 18, 15, 22, 10]
})
# 添加Y轴位置索引,确保每个条形对应唯一位置
data['y_pos'] = range(len(data))

2. 构建主条形图(左侧Y轴显示Group)

创建条形图,用y_pos作为底层Y轴位置,将刻度标签替换为group的值,同时隐藏刻度线和网格:

bars = alt.Chart(data).mark_bar(color='#4287f5').encode(
    x=alt.X('value:Q', title='Value'),
    y=alt.Y(
        'y_pos:O',
        # 左侧Y轴配置:显示group标签
        axis=alt.Axis(
            title='Group',
            labels=True,
            tickCount=0,  # 隐藏刻度线
            grid=False    # 隐藏网格线
        ),
        # 将y_pos的刻度映射为group值
        scale=alt.Scale(domain=data['y_pos'], range=data['group']),
        sort=None
    )
)

3. 构建右侧Y轴(显示Unique ID)

创建一个透明的空图层,复用相同的y_pos位置,将右侧轴的刻度标签替换为unique_ID,仅保留标签:

right_axis_layer = alt.Chart(data).mark_point(opacity=0).encode(
    y=alt.Y(
        'y_pos:O',
        # 右侧Y轴配置:显示unique_ID标签
        axis=alt.Axis(
            title='Unique ID',
            orient='right',  # 轴显示在右侧
            labels=True,
            tickCount=0,
            grid=False
        ),
        # 将y_pos的刻度映射为unique_ID值
        scale=alt.Scale(domain=data['y_pos'], range=data['unique_ID']),
        sort=None
    )
)

4. 合并图层并调整样式

将两个图层合并,移除图表边框,完成最终效果:

final_chart = (bars + right_axis_layer).configure_view(stroke=None)
final_chart.show()

关键说明

  • 核心逻辑:通过共享y_pos的Y轴位置,让左右两侧的标签一一对应每个条形,并非真正的双刻度轴。
  • 不合并分组:因为每个y_pos对应一行数据,即使group重复,也会分别显示对应的标签。
  • 样式控制:通过tickCount=0和grid=False隐藏多余的刻度线和网格,只保留美化用的标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:33:43