Как присоединиться к участку windows? - PullRequest
0 голосов
/ 26 апреля 2020

Предположим, 3x2 сетки подплота; в верхнем 2x2 я стремлюсь сделать четыре разных графика, но нижний 1x2 должен быть «совместным» окном, как показано ниже. Две идеи: (1) построить график как одну фигуру, чтобы включить fig.savefig(); (2) сохранить ширину и высоту, т. Е. «Объединенный» участок должен охватывать два подпункта windows (необязательно в 2 раза больше ширины любого из них) и иметь одинаковую высоту. MATLAB может сделать это, неуверенный в matplotlib.


Изображение цели :

image


Код изображения :

import matplotlib.pyplot as plt
import numpy as np

X = np.random.randn(6, 100, 100)
fig, axes = plt.subplots(2, 2, sharex=True, sharey=True, dpi=72)  # 2x2 for demo

for x, ax in zip(X[:4], axes.flat[:4]):
    ax.imshow(x)
plt.subplots_adjust(left=0, right=.6, bottom=0, top=1, wspace=.01, hspace=.01)
plt.show()

plt.imshow(X[-2:].reshape(100, 200))
plt.gcf().set_size_inches(9.15, 5.5)
plt.show()

1 Ответ

0 голосов
/ 26 апреля 2020

На примере документов (спасибо @ Йохан C) это можно сделать, заменив интересующие оси на "ось соединения", указанную GridSpec:

import matplotlib.pyplot as plt
import numpy as np

X = np.random.randn(6, 100, 100)
fig, axes = plt.subplots(3, 2, sharex=True, sharey=True, figsize=(9, 9))

for x, ax in zip(X, axes.flat[:-2]):
    ax.imshow(x)

gs = axes[0, 0].get_gridspec()
for ax in axes[-1, :]:
    ax.remove()
axbig = fig.add_subplot(gs[-1, :])
axbig.imshow(X[-2:].reshape(100, 200))

fig.subplots_adjust(left=0, right=1, bottom=0, top=1, wspace=-.5, hspace=.02)

image

...