You need to enable JavaScript to run this app. matplotlib实现多行x轴标签:分区间标注趋势并调整主x轴标签位置
优惠活动
大模型
产品
解决方案
定价
更多

matplotlib实现多行x轴标签:分区间标注趋势并调整主x轴标签位置

实现方案

完全通过matplotlib原生的次要刻度功能完成布局,不需要调用ax.text()手动放置文本,代码简洁且样式统一:

  • 位置匹配:Increasing需要在x=0、x=1的正下方居中,对应中心x坐标为0.5;Decreasing在x=3正下方居中,直接取x=3作为锚点
  • 样式统一:将上述两个锚点设为x轴的次要刻度并挂载对应文本,标签会自动继承默认的轴文本样式,和原有“x”标签的视觉效果完全一致
  • 层级调整:通过参数增大主x轴标签的底部留白,让“x”标签落到两个区间标注的下方,形成清晰的垂直分层

完整运行代码

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-1, 5)
y = 6 - np.square(x - 1)

fig, ax = plt.subplots()
ax.plot(x, y, 'b')
ax.scatter(x, y, color='m', zorder=10)
ax.set_ylabel('y')

# 配置区间标注的锚点位置
minor_label_pos = [0.5, 3]
minor_label_text = ['Increasing', 'Decreasing']

# 将锚点设为x轴次要刻度,挂载对应文本
ax.set_xticks(minor_label_pos, minor=True)
ax.set_xticklabels(minor_label_text, minor=True)

# 隐藏次要刻度的刻度线,仅保留文本
ax.tick_params(axis='x', which='minor', length=0)

# 下移主x轴标签,使其位于区间标注下方
ax.set_xlabel('x', labelpad=30)

plt.show()

最终布局效果

x轴区域从上到下形成三级排布:

  1. 原有主刻度的数值标签
  2. 对应锚点位置的“Increasing”“Decreasing”文本
  3. 最下方的主x轴标签“x”
    全程无手动坐标计算,不会出现标注偏移、样式不统一的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 05:36:03