Как использовать `GridSpec()` с `subplots()`

Есть несколько (пример) сообщений SO, посвященных использованию GridSpec с подзадачей в целом. То, что я пытаюсь добиться безрезультатно, заключается в том, чтобы разрешить использование GridSpec с subplots, что-то вроде этого, где я могу заменить фактические индексы массива и списка на некоторый индекс с контролем цикла:

gs = gridspec.GridSpec(4, 1, height_ratios=[2, 2, 1, 1])        
tPlot, axes = plt.subplots(4, sharex=True, sharey=False)
tPlot.suptitle(node, fontsize=20)
axes[0].plot(targetDay[0], gs[0])
axes[1].plot(targetDay[1], gs[1])
axes[2].scatter(targetDay[2], gs[2])
axes[3].plot(targetDay[3], gs[3])

Излишне говорить, что этот код не работает, это просто пример.

Ответы

Ответ 1

Вместо вызова gridspec.GridSpec до subplots вы можете отправить kwargs в GridSpec из вашего вызова subplots, используя аргумент gridspec_kw. Из docs:

gridspec_kw: dict

Dict с ключевыми словами, переданными в конструктор GridSpec, используемый для создания сетки, на которой размещаются подзаголовки.

Итак, например:

import matplotlib.pyplot as plt

tPlot, axes = plt.subplots(
        nrows=4, ncols=1, sharex=True, sharey=False, 
        gridspec_kw={'height_ratios':[2,2,1,1]}
        )

tPlot.suptitle('node', fontsize=20)

axes[0].plot(range(10),'ro-') 
axes[1].plot(range(10),'bo-') 
axes[2].plot(range(10),'go-') 
axes[3].plot(range(10),'mo-') 

plt.show()

введите описание изображения здесь