Поля matplotlib.pyplot.imshow при использовании в среде подзаговора
Я пытаюсь построить значения нескольких массивов на отдельных графиках фигуры, используя imshow.
Когда я рисую только одно изображение и использую команду plt.imshow() с правильными экстентами, рисунок получается идеально. Однако, когда я пытаюсь создать несколько графиков этого изображения на одном и том же рисунке, используя plt.subplot(), каждый из этих графиков заканчивается неправильными настройками оси x и белыми полями. Я попытался исправить диапазон оси x с помощью команды set_xlim(), но это не имеет никакого эффекта (чего я тоже не понимаю).
Минимальный рабочий образец ниже - любая помощь будет оценена!
from matplotlib import pyplot as plt
import numpy as n
image = n.array([[ 1., 2., 2., 5.],
[ 1., 0., 0., 3.],
[ 1., 2., 0., 2.],
[ 4., 2., 3., 2.]])
xextent, yextent= n.shape(image)
fig, ax = plt.subplots(2,sharex=True, sharey=True)
im0 = ax[0].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest');
ax[0].set_xlim([0,4])
im1 = ax[1].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest');
ax[1].set_xlim([0,4])
plt.show()
2 ответа
Итак, варианты:
Я считаю, что причиной пробела является размер окна. Вы можете либо изменить размер окна (вам нужно будет выяснить числа), либо вы можете настроить вспомогательный участок. Я узнал об этом, поиграв с кнопкой "настроить подзаголовки" во всплывающем окне с изображением.
plt.subplots_adjust(right=0.4)
С этой линией у графика не будет пробела, но все еще будет некоторое пустое пространство (которое можно исправить, отрегулировав размер окна).