Вопрос

Как я могу перевернуть начало графика 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 не будет инвертироваться каждый раз.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top