Координатор Matplotlib. sys начало вверху слева
Как я могу перевернуть начало графика matplotlib в верхнем левом углу - в отличие от нижнего-левого по умолчанию? Я использую matplotlib.pylab.plot для создания сюжета (хотя, если есть еще одна процедура построения графика, которая более гибкая, сообщите мне).
Я ищу эквивалент команды matlab: axis ij;
Кроме того, я потратил пару часов на серфинг для справки matplotlib и google, но не получил ответа. Некоторая информация о том, где я могла бы найти ответ, также была бы полезной.
Ответы
Ответ 1
Для изображения или контурного сюжета вы можете использовать ключевое слово 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()
Ответ 2
axis ij
просто увеличивает ось y вниз, а не вверх, правильно? Если это так, то matplotlib.axes.invert_yaxis()
может быть все, что вам нужно - но я не могу проверить это прямо сейчас.
Если это не сработает, я нашел почтовую рассылку, предполагающую, что
setp(gca(), 'ylim', reversed(getp(gca(), 'ylim')))
может делать то, что вы хотите походить на axis ij
.
Ответ 3
Самый лучший способ - использовать:
plt.gca().invert_yaxis()
Происхождение работает только для imshow
.
Ответ 4
Ниже приведен базовый способ достижения этого
ax=pylab.gca()
ax.set_ylim(ax.get_ylim()[::-1])
Ответ 5
Это
plt.ylim(max(plt.ylim()), min(plt.ylim()))
имеет преимущество перед этим
plt.gca().invert_yaxis()
и заключается в том, что если вы находитесь в интерактивном режиме, и вы многократно намечаете один и тот же сюжет (возможно, с обновленными данными и с точкой останова после графика) ось y не будет продолжать инвертировать каждый раз.