Что происходит, так это то, что ось автоматически масштабируется, чтобы соответствовать экстентам каждого элемента, который вы строите. Изображения автоматически масштабируются намного плотнее, чем линии и т. Д. (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](https://i.stack.imgur.com/jXml9.png)
С этим:
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](https://i.stack.imgur.com/RJVjY.png)