如何使用matplotlib定义ylabel相对于轴的位置



我需要使用matplotlib独立于我的yticklabels精确控制我的ylabel的位置。这是因为我有一个matplotlib动画,当我更改yticklabels时,ylabel正在四处跳跃。这是不可取的。

文件似乎只允许我指定与我的yticlabels最左边部分的距离。

一种解决方案是手动放置标签。但是有更简单的方法吗?

您可以通过在轴上显式添加文本来模拟普通y标签的行为。如果y限制变化很大,最好将文本放置在轴坐标中,而不是数据坐标中。这是通过transform关键字参数完成的,如下所示:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
t = ax.text(-0.1, 0.5, 'Y label', rotation=90, 
verticalalignment='center', horizontalalignment='right', 
transform=ax.transAxes)
ax.set_ylim(-10, 10) # Change y-limits, label position won't change.

这会将文本放置在轴的中间位置,并稍微向左。对轴的数据限制的更改对文本没有影响,因为它总是在轴坐标中定义的。类似地,缩放绘图或轴(用鼠标调整窗口大小,使用fig.set_size_inches等(将使y标签保持在相对于轴框本身的位置,这正是您想要的标签。

您可能需要播放标签的x位置,以确保在动画过程中tickmarks发生变化时不会与它们重叠。

最新更新