Несмотря на то, что этот вопрос старый, я пытался ответить на очень похожий вопрос. @ Ссылка Джо на AxesGrid , была ответом на мой вопрос и имеет очень прямое использование, поэтому я хотел бы проиллюстрировать эту функциональность для полноты.
Функция AxesGrid предоставляет возможность создавать графики разного размера и размещать их очень точно, с помощью функции subplot2grid
:
import matplotlib.pyplot as plt
ax1 = plt.subplot2grid((m, n), (row_1, col_1), colspan = width)
ax2 = plt.subplot2grid((m, n), (row_2, col_2), rowspan = height)
ax1.plot(...)
ax2.plot(...)
Обратите внимание, что максимальные значения для row_n
, col_n
равны m-1
и n-1
соответственно, так как используется нулевое индексирование.
Конкретно для решения вопроса, если бы было всего 5 субплотов, где последний субплот имеет в два раза больше высоты, чем остальные, мы могли бы использовать m=6
.
ax1 = plt.subplot2grid((6, 1), (0, 0))
ax2 = plt.subplot2grid((6, 1), (1, 0))
ax3 = plt.subplot2grid((6, 1), (2, 0))
ax4 = plt.subplot2grid((6, 1), (3, 0))
ax5 = plt.subplot2grid((6, 1), (4, 0), rowspan=2)
plt.show()