如何将x/y轴标签居中于可见坐标轴脊而非绘图区域
解决Y轴标签在可见坐标轴脊居中的问题
可以通过获取坐标轴实际显示的范围,手动调整Y轴标签的位置来实现:
- 获取Y轴实际显示的上下限:调用
ax.get_ylim(),这个方法返回的是绘图窗口中实际可见的Y轴范围,而非你手动设置的ylim值。 - 计算可见脊的中点:将实际上下限相加后除以2,得到可见范围的中点位置。
- 调整Y轴标签的垂直位置:设置
set_ylabel的y参数为计算出的中点,并配合va='center'确保标签垂直居中。
代码示例
import matplotlib.pyplot as plt # 示例绘图流程 fig, ax = plt.subplots() ax.plot([1, 2, 3], [0, 0.03, 0.06]) ax.set_ylim(0, 0.08) # 手动设置的范围,但实际仅显示到0.06 # 获取实际可见的Y轴范围 actual_ylim = ax.get_ylim() # 计算可见脊的中点 mid_y = (actual_ylim[0] + actual_ylim[1]) / 2 # 调整标签位置至可见脊居中 ax.set_ylabel("Y轴数值", y=mid_y, va='center') plt.show()
如果需要更精确控制标签的水平位置,可以用yaxis.set_label_coords()方法:
# 获取原标签的水平位置 label_x = ax.yaxis.get_label().get_position()[0] # 重新设置标签坐标 ax.yaxis.set_label_coords(label_x, mid_y)
内容的提问来源于stack exchange,提问作者The Nightman
相关产品推荐
相关产品推荐

