You need to enable JavaScript to run this app. 如何在matplotlib图表中添加y轴次级标签
优惠活动
大模型
产品
解决方案
定价
更多

如何在matplotlib图表中添加y轴次级标签

matplotlib y轴添加次级标签实现方案

你需要的y轴次级标签参考效果如下:
y轴次级标签示例图

实现方法

方法1:手动标注(适配自定义分类分组场景)

这种方式灵活度最高,可任意自定义标签的分组规则、样式、位置,适合非数值映射的次级标签需求。
完整代码示例:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.arange(5)
y = np.random.randint(1, 20, size=5)

# 绘制基础图表
fig, ax = plt.subplots(figsize=(6, 4))
ax.bar(x, y)

# 主y轴基础设置
ax.set_ylim(0, 20)
ax.set_ylabel('主标签:数值')

# 配置次级标签内容与对应区间
secondary_labels = ['低区间', '中区间', '高区间']
label_ranges = [(0, 6), (7, 13), (14, 20)]

# 批量添加次级标签
for label, (y_min, y_max) in zip(secondary_labels, label_ranges):
    ax.text(
        # x坐标小于0代表在y轴外侧,可根据实际效果调整数值
        x=-0.15,
        # y坐标取区间中点位置
        y=(y_min + y_max)/2,
        s=label,
        # 绑定y轴坐标系,避免随x轴范围变化偏移
        transform=ax.get_yaxis_transform(),
        ha='center',
        va='center',
        # 纵向排列标签
        rotation=90,
        fontweight='bold',
        color='gray'
    )

# 调整左侧边距,避免标签被截断
plt.subplots_adjust(left=0.2)
plt.show()

方法2:secondary_yaxis接口(适配数值映射场景)

如果次级标签是主标签的线性映射(比如单位换算),可以直接用matplotlib内置的次级轴接口,会自动同步主轴的缩放、刻度变化。
完整代码示例:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.arange(5)
y = np.random.randint(1, 20, size=5)

# 绘制基础图表
fig, ax = plt.subplots(figsize=(6, 4))
ax.bar(x, y)
ax.set_ylabel('主单位:厘米')

# 定义主单位到次级单位的双向换算函数
def cm_to_inch(x):
    return x / 2.54
def inch_to_cm(x):
    return x * 2.54

# 创建左侧次级y轴
sec_ax = ax.secondary_yaxis('left', functions=(cm_to_inch, inch_to_cm))
# 调整labelpad避免和主标签重叠
sec_ax.set_ylabel('次级单位:英寸', labelpad=30)

# 调整左侧边距
plt.subplots_adjust(left=0.2)
plt.show()

注意事项

  • 手动标注时如果标签位置偏移或重叠,可调整text方法的x坐标、subplots_adjust的left参数预留更多左侧空间
  • 数值映射场景使用secondary_yaxis时,必须传入双向换算函数,否则次级轴刻度无法正常生成
  • 次级标签的样式(颜色、字号、字重)可根据需求自定义修改对应参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:09:03