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

Matplotlib Pyplot共享X轴时,如何单独移动Y轴刻度标签?

Matplotlib共享X轴子图Y刻度标签重叠的解决方法

当使用Matplotlib绘制共享X轴的两个子图且设置hspace=0时,上下子图的Y轴刻度标签容易出现重叠问题。以下是两种通过移动刻度标签位置解决该问题的实用方案,无需调整子图间距或轴范围:


方法一:全局调整刻度标签间距(pad参数)

通过tick_params的pad参数,统一调整Y轴刻度标签与轴的距离,让重叠的标签相互错开。修改后的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt

diagramm, axes = plt.subplots(nrows=2, sharex='col', gridspec_kw={'hspace': 0, 'wspace': 0})
axes[1].set_xlim([0,10])

axes[0].set_ylim(-1.0,1.0)
axes[1].set_ylim(-0.01,0.01)

xval = np.linspace(0,10,100)

axes[0].plot(xval, np.sin(xval), color="red")
axes[1].plot(xval, 0.01*np.sin(xval), color="blue")

# 调整上方子图Y轴刻度标签与轴的间距,让底部标签下移
axes[0].tick_params(axis='y', pad=12)
# 调整下方子图Y轴刻度标签与轴的间距,让顶部标签上移
axes[1].tick_params(axis='y', pad=12)

plt.show()

pad参数的数值可根据实际显示效果调整,数值越大,标签离轴的距离越远。


方法二:精准调整单个重叠标签

如果只想移动重叠的那两个特定标签(上方子图的最低Y刻度、下方子图的最高Y刻度),可以直接获取对应标签对象并修改位置:

import numpy as np
import matplotlib.pyplot as plt

diagramm, axes = plt.subplots(nrows=2, sharex='col', gridspec_kw={'hspace': 0, 'wspace': 0})
axes[1].set_xlim([0,10])

axes[0].set_ylim(-1.0,1.0)
axes[1].set_ylim(-0.01,0.01)

xval = np.linspace(0,10,100)

axes[0].plot(xval, np.sin(xval), color="red")
axes[1].plot(xval, 0.01*np.sin(xval), color="blue")

# 移动上方子图的最低Y刻度标签向下(归一化坐标,0为轴底,1为轴顶)
ytick_labels_top = axes[0].get_yticklabels()
ytick_labels_top[0].set_position((ytick_labels_top[0].get_position()[0], -0.08))

# 移动下方子图的最高Y刻度标签向上
ytick_labels_bottom = axes[1].get_yticklabels()
ytick_labels_bottom[-1].set_position((ytick_labels_bottom[-1].get_position()[0], 1.08))

plt.show()

通过设置小于0或大于1的归一化Y坐标,让标签移到轴外区域,避免与另一子图的标签重叠。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:12:16