автоматически размещать текстовое поле в matplotlib - PullRequest
41 голосов
/ 13 августа 2011

Есть ли способ сообщить pyplot.text () местоположение, как вы можете с pyplot.legend ()?

Что-то вроде аргумента легенды было бы отлично:

plt.legend(loc="upper left")

Я пытаюсь обозначить участки с разными осями, используя буквы (например, «A», «B»).Я считаю, что должен быть лучший способ, чем ручная оценка позиции.

Спасибо

Ответы [ 2 ]

45 голосов
/ 13 августа 2011

Просто используйте annotate и укажите координаты оси.Например, «левый верхний угол» будет выглядеть следующим образом:

plt.annotate('Something', xy=(0.05, 0.95), xycoords='axes fraction')

Вы также можете получить более любопытное указание и указать постоянное смещение в точках:

plt.annotate('Something', xy=(0, 1), xytext=(12, -12), va='top'
             xycoords='axes fraction', textcoords='offset points')

Для более подробного объяснения см. Примеры здесь и более подробные примеры здесь .

29 голосов
/ 29 октября 2015

Я не уверен, было ли это доступно, когда я первоначально разместил вопрос, но теперь можно использовать параметр loc.Ниже приведен пример:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.offsetbox import AnchoredText

# make some data
x = np.arange(10)
y = x

# set up figure and axes
f, ax = plt.subplots(1,1)

# loc works the same as it does with figures (though best doesn't work)
# pad=5 will increase the size of padding between the border and text
# borderpad=5 will increase the distance between the border and the axes
# frameon=False will remove the box around the text

anchored_text = AnchoredText("Test", loc=2)
ax.plot(x,y)
ax.add_artist(anchored_text)

plt.show()

enter image description here

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