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