我需要在matplotlib中独立地精确控制我的ylabel的位置,而不受yticklabels的影响。这是因为我有一个matplotlib动画,当我改变yticklabels时,目前的ylabel会跳来跳去。这是不理想的。
文档似乎只允许我指定距离我的yticklabels最左边的部分的距离。(这并没有解决问题,实际上仍然造成了问题)
一种解决方法是手动放置标签。但是是否有更简单的方法?
您可以通过在坐标轴上显式地添加文本来模拟普通 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 位置,以确保在动画过程中不会与刻度标记重叠。
axis
导入set_label_coords
函数?在这里可以查看。使用它,你可以同时设置y轴标签的x和y方向坐标。 - Henrique Branco