Ответ 1
Используйте annotate
.
Фактически, я почти никогда не использовал text
. Даже когда я хочу размещать вещи в координатах данных, я обычно хочу компенсировать их некоторым фиксированным расстоянием в точках, что намного проще с помощью annotate
.
В качестве быстрого примера:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, subplot_kw=dict(aspect=1))
axes[0].plot(range(1, 4))
axes[1].plot(range(10, 40, 10), range(1, 4))
for ax in axes:
ax.annotate('Test', xy=(1, 0), xycoords='axes fraction', fontsize=16,
horizontalalignment='right', verticalalignment='bottom')
plt.show()
Если вы хотите, чтобы он слегка смещался из угла, вы можете указать смещение через xytext
kwarg (и textcoords
для управления интерпретацией значений xytext
). Я также использую аббревиатуры ha
и va
для horizontalalignment
и verticalalignment
здесь:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, subplot_kw=dict(aspect=1))
axes[0].plot(range(1, 4))
axes[1].plot(range(10, 40, 10), range(1, 4))
for ax in axes:
ax.annotate('Test', xy=(1, 0), xycoords='axes fraction', fontsize=16,
xytext=(-5, 5), textcoords='offset points',
ha='right', va='bottom')
plt.show()
Если вы пытаетесь разместить его под осями, вы можете использовать смещение, чтобы поместить его на заданное расстояние ниже в точках:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, subplot_kw=dict(aspect=1))
axes[0].plot(range(1, 4))
axes[1].plot(range(10, 40, 10), range(1, 4))
for ax in axes:
ax.annotate('Test', xy=(1, 0), xycoords='axes fraction', fontsize=16,
xytext=(0, -15), textcoords='offset points',
ha='right', va='top')
plt.show()
Также см. Руководство по аннотации Matplotlib для получения дополнительной информации.