Поля 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 ответа

Решение

Итак, варианты:

  1. Удалить sharex/sharey ключевые слова - похоже, конфликтует с imshow в среде подзаговора. ( xnx)

  2. использование plt.subplots_adjust с соответствующими настройками, в сочетании с plt.gcf().tight_layout() ( Ian)

  3. Используйте pcolormesh вместо imshow в среде подзаговоров.

Я считаю, что причиной пробела является размер окна. Вы можете либо изменить размер окна (вам нужно будет выяснить числа), либо вы можете настроить вспомогательный участок. Я узнал об этом, поиграв с кнопкой "настроить подзаголовки" во всплывающем окне с изображением.

plt.subplots_adjust(right=0.4)

С этой линией у графика не будет пробела, но все еще будет некоторое пустое пространство (которое можно исправить, отрегулировав размер окна).

Другие вопросы по тегам