Объекты matshow и colorbar не заполняют одно и то же пространство внутри ячеек gridspec и поэтому имеют разную высоту.
Обычно я бы использовал аргумент «сжать» цветовой панели, но это, похоже, не работает, когда оно вложено в объект gridspec.
Как я могу уменьшить объект colorbar без изменения размера тепловой карты matshow?
заранее спасибо
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import gridspec
df = pd.DataFrame((np.random.randint(0, 3, 10000).reshape(100, 100)))
fig = plt.figure(figsize=(15,15))
gs = gridspec.GridSpec(10, 10)
#### other axes removed for simplicity
ax2 = fig.add_subplot(gs[2:,:8])
# plot heatmap
cax = ax2.matshow(df, interpolation='nearest', cmap=plt.cm.YlGn, aspect='equal')
ax2.set_xticks([])
ax2.set_yticks([])
ax3 = fig.add_subplot(gs[2:,8])
fig.colorbar(cax, cax=ax3)
plt.tight_layout()
gs.update(wspace=2, hspace=0.1)
plt.show()