Ответ 1
colorbar()
принимает аргумент ключевого слова cax
, который позволяет указать объект axes
, на который будет нарисована цветная панель.
В вашем случае вы изменили бы вызов colorbar на следующее:
# colorbar
axes = plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc, cax=axes)
Это займет все пространство, указанное subplot2grid
; вы можете настроить это, чтобы быть более разумным либо путем того, чтобы основные оси занимали больше столбцов, чем оси цветной панели, или устанавливая явно gridspec
. Например, ваша цифра может быть проще для настройки со следующим:
from matplotlib import gridspec
gs = gridspec.GridSpec(2, 2, height_ratios=(3, 1), width_ratios=(9, 1))
# first graph
axes = plt.subplot(gs[0,0])
pc = plt.pcolor(df1, cmap='jet')
# second graph
axes = plt.subplot(gs[1,0])
plt.pcolor(df2, cmap='Greys')
# colorbar
axes = plt.subplot(gs[0,1])
plt.colorbar(pc, cax=axes)
Затем вы можете просто изменить height_ratios
и width_ratios
по своему усмотрению.