Матплотлиб координ. sys origin to top left - PullRequest
15 голосов
/ 29 августа 2009

Как я могу перевернуть начало графика matplotlib, чтобы оно находилось в верхнем левом углу - в отличие от нижнего левого по умолчанию? Я использую matplotlib.pylab.plot для создания графика (хотя, если есть другая гибкая подпрограмма, пожалуйста, дайте мне знать).

Я ищу эквивалент команды matlab: axis ij;

Кроме того, я потратил пару часов на серфинг по помощи matplotlib и в Google, но не нашел ответа. Некоторая информация о том, где я мог бы найти ответ, также будет полезна.

Ответы [ 5 ]

14 голосов
/ 10 марта 2016

Самый простой способ - использовать:

plt.gca().invert_yaxis()

После того, как вы построили изображение. Origin работает только для imshow.

12 голосов
/ 29 августа 2009

axis ij просто заставляет ось Y увеличиваться вниз, а не вверх, верно? Если так, то matplotlib.axes.invert_yaxis() может быть всем, что вам нужно, но я не могу проверить это прямо сейчас.

Если это не сработает, я нашел почтовое сообщение с предложением

setp(gca(), 'ylim', reversed(getp(gca(), 'ylim')))

может делать то, что вы хотите напомнить axis ij.

9 голосов
/ 29 августа 2009

Для изображения или контурного графика вы можете использовать ключевое слово origin = None | 'lower' | 'upper', а для линейного графика вы можете установить максимальные значения ylimits.

from pylab import *
A = arange(25)/25.
A = A.reshape((5,5))

figure()
imshow(A, interpolation='nearest', origin='lower')

figure()
imshow(A, interpolation='nearest')

d = arange(5)
figure()
plot(d)
ylim(5, 0)

show()
7 голосов
/ 25 июля 2012

Ниже приведен основной способ достижения этой цели.

ax=pylab.gca()

ax.set_ylim(ax.get_ylim()[::-1])
4 голосов
/ 07 октября 2016

Это

plt.ylim(max(plt.ylim()), min(plt.ylim()))

имеет преимущество перед этим

plt.gca().invert_yaxis()

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

...