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

问题描述 投票:1回答:1

我需要使用matplotlib独立于yticklabel精确控制ylabel的位置。这是因为我有一个matplotlib动画,当我更改yticklabels时,当前ylabel会跳来跳去。这是不可取的。

文档似乎只允许我指定距yticklabels最左边部分的距离。 (这并不能解决问题,而实际上是引起问题的原因)

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

python matplotlib
1个回答
0
投票

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

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

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

您可能必须使用标签的x位置,以确保它在动画期间更改时不会与刻度线重叠。

© www.soinside.com 2019 - 2024. All rights reserved.