matplotlib: ограничения при использовании plot и imshow в одной оси - PullRequest
22 голосов
/ 03 февраля 2012

Я пытался построить эллипс в сюжете imshow.Это работает, но построение эллипса после построения изображения, кажется, увеличивает xlim и ylim, в результате чего получается граница, от которой я бы хотел избавиться:

1 Ответ

32 голосов
/ 03 февраля 2012

Что происходит, так это то, что ось автоматически масштабируется, чтобы соответствовать экстентам каждого элемента, который вы строите. Изображения автоматически масштабируются намного плотнее, чем линии и т. Д. (imshow в основном вызывает ax.axis('image')).

Получение пределов осей до и установка их после должны были сработать. (Хотя чище просто делать limits = axes.axis() до и axes.axis(limits) после.)

Однако, если вы не хотите, чтобы объекты автоматически масштабировались, лучше всего отключить автоматическое масштабирование после начального графика. Попробуйте axes.autoscale(False) после нанесения изображения.

В качестве примера сравните это:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.imshow(np.random.random((10,10)))
ax.plot(range(11))
plt.show()

enter image description here


С этим:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.imshow(np.random.random((10,10)))
ax.autoscale(False)
ax.plot(range(11))
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...