Я представляю решение с пустыми участками, потому что у меня нет ваших данных.Это то, что вы хотите:
n_epoch = 4
cols = ['Train CM', 'Train Norm CM', 'Validation CM', 'Validation Norm CM']
rows = [f'Epoch {i}' for i in range(n_epoch)]
f, axes = plt.subplots(nrows = n_epoch, ncols = 4, figsize=(12, 8))
f.text(0, 0.5, 'Predictions', ha='center', va='center', fontsize=20, rotation='vertical')
plt.suptitle("One big title", fontsize=18, y=1.05)
for ax, col in zip(axes [0], cols):
ax.set_title(col, size='large')
for ax, row in zip(axes[:, 0], rows):
ax.set_ylabel(row, size='large')
plt.tight_layout()
Размещение цветных полос : Здесь вы помещаете цветные полосы, охватывающие все строки длякаждый столбец.Однако здесь tight_layout()
несовместим, поэтому вам придется отключить его.
f, axes = plt.subplots(nrows = n_epoch, ncols = 4, figsize=(12, 8))
for i, ax in enumerate(axes.flat):
im = ax.imshow(np.random.random((20,20)), vmin=0, vmax=1)
if i%4 == 0:
f.colorbar(im, ax=axes[:,int(i/4)].ravel().tolist(), aspect=30, pad=0.05)
f.text(0.08, 0.5, 'Predictions', ha='center', va='center', fontsize=20, rotation='vertical')
plt.suptitle("One big title", fontsize=18)
for ax, col in zip(axes [0], cols):
ax.set_title(col, size='large')
for ax, row in zip(axes[:, 0], rows):
ax.set_ylabel(row, size='large')