Подтвердить что ты не робот

Автоматически помещать текстовое поле в matplotlib

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

Что-то вроде аргумента легенды было бы превосходным:

plt.legend(loc="upper left")

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

Спасибо

4b9b3361

Ответ 1

Я не уверен, что это было доступно, когда я изначально разместил вопрос, но теперь можно использовать параметр 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()

введите описание изображения здесь

Ответ 2

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

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

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

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

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