matplotlib.pyplot.imshow: удаление пробелов в пределах участков при использовании атрибутов «sharex» и «sharey»

У меня есть проблема, которая похожа на ту, что размещена здесь . Разница в том, что я получаю нежелательные пробелы внутри области графика, когда я sharex две подзаголовки, которые разделяют оси через sharex и sharey . Белые пробелы сохраняются даже после установки autoscale(False) . Например, используя аналогичный код, как в ответе на сообщение, упомянутое выше:

 import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(2, 1, 1) ax.imshow(np.random.random((10,10))) ax.autoscale(False) ax2 = fig.add_subplot(2, 1, 2, sharex=ax, sharey=ax) # adding sharex and sharey ax2.imshow(np.random.random((10,10))) ax2.autoscale(False) plt.show() 

приводит к этому изображению.

Я также пробовал ax.set_xlim(0, 10) и ax.set_xbound(0, 10) в соответствии с предложениями здесь , но безрезультатно. Как я могу избавиться от лишних пробелов? Любые идеи были бы хорошы.

    Как предлагается здесь , добавив:

     ax.set_adjustable('box-forced') ax2.set_adjustable('box-forced') 

    решает проблему.

    ( документация )

    Использование plt.subplots как:

     fig, ax = plt.subplots(nrows=2, ncols=1, sharex=True, sharey=False) ax[0].imshow(np.random.random((10,10))) ax[0].autoscale(False) ax[1].imshow(np.random.random((10,10))) ax[1].autoscale(False) 

    я получил эта фигура без пробелов внутри осей. Используя figsize внутри plt.subplots или fig.subplots_adjust вы можете получить лучшие отношения по оси.

    Проблема заключается в add_subplot оборудовании от использования add_subplot . Обратите внимание, что при изменении размера рисунка изменяется количество пробелов.

    Кажется, что работает (пока вы не измените размер фигуры)

     import matplotlib.pyplot as plt import numpy as np fig = plt.figure(figsize=(5, 5)) ax = fig.add_axes([.3, .55, .35, .35]) ax.imshow(np.random.random((10,10))) ax.autoscale(False) ax2 = fig.add_axes([.3, .05, .35, .35], sharex=ax, sharey=ax ) ax2.imshow(np.random.random((10,10))) ax2.autoscale(False) plt.show() 

    Это выглядит как плохое взаимодействие между размером / расположением объекта axes , разделяемыми осями и равным соотношением сторон от imshow .

    Если вы можете жить без клещей, вы можете сделать

     ax.set_axis_off() ax2.set_axis_off() 

    Я думаю, что для этого стоит открыть вопрос о matplotlib github.