Как я могу поместить текст в верхний левый (или верхний правый) угол рисунка matplotlib, например, там, где будет верхняя левая легенда, или поверх графика, но в верхнем левом углу? Например, если это plt.scatter (), то что-то, что находится в квадрате разброса, помещается в самый верхний левый угол.
Я хотел бы сделать это, в идеале не зная, например, масштаба графика рассеяния, поскольку он будет изменяться от набора данных к набору данных. Я просто хочу, чтобы текст был примерно в верхнем левом углу или примерно в верхнем правом углу. При позиционировании типа легенды она в любом случае не должна перекрываться какими-либо точками точечной диаграммы.
Спасибо!
text
иax.transAxes
) среди них отсутствует.Ответы:
Вы можете использовать
text
.text
координаты могут быть заданы относительно оси, поэтому положение вашего текста не будет зависеть от размера графика:Чтобы текст не мешал какой-либо точке вашего разброса, намного сложнее. Более простой метод - установить y_axis (ymax in
ylim((ymin,ymax))
) на значение немного выше, чем максимальная координата y ваших точек. Таким образом, у вас всегда будет свободное место для текста.РЕДАКТИРОВАТЬ: вот пример:
Параметры ha и va задают выравнивание текста относительно точки вставки. то есть. ha = 'left' - хороший набор для предотвращения выхода длинного текста за левую ось при уменьшении (сужении) рамки вручную.
источник
from pylab import figure, text, scatter, show
Код в ответе был выполнен в консоли ipython в режиме pylab, где явный импорт не требовался. В чистой среде вам нужно импортировать вышеупомянутое и сделатьshow()
для просмотра сюжетаОдним из решений может быть использование
plt.legend
функции, даже если вам не нужна настоящая легенда. Вы можете указать размещение поля легенды, используяloc
keyterm. Более подробную информацию можно найти на этом веб-сайте, но я также включил пример, показывающий, как разместить легенду:Обратите внимание, потому
loc=2
что легенда находится в верхнем левом углу графика. А если текст накладывается на график, вы можете уменьшить его, используяlegend.fontsize
, что затем уменьшит легенду.источник
matplotlib
несколько отличается от того, когда был опубликован исходный ответmatplotlib.pyplot.text
matplotlib.axes.Axes.text
Выход обоих
источник