Как определить положение ylabel относительно оси с помощью matplotlib? - PullRequest
5 голосов
/ 08 мая 2020

Мне нужно точно контролировать положение моей ylabel независимо от моих yticklabels с помощью matplotlib. Это потому, что у меня есть анимация matplotlib, у которой в настоящее время ylabel прыгает, когда я меняю yticklabels. Это нежелательно.

Документы, кажется, позволяют мне только указать расстояние от самой левой части моих yticklabels. (что не решает проблему, а действительно вызывает ее)

Одним из решений было бы вручную поставить метку. Но есть ли способ попроще?

1 Ответ

5 голосов
/ 11 мая 2020

Вы можете имитировать поведение обычной 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, et c) сохранит y-метку в положении относительно самого блока осей, именно то, что вы хотите для метки.

Возможно, вам придется поиграть с x-позицией метки, чтобы убедиться, что она не перекрывает отметки, когда они меняются во время анимации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...