Instead of breaking it into separate subfigures, create a single mosaic for the whole figure:
import matplotlib.pyplot as plt
def test():
fig, axes = plt.subplot_mosaic(
[
["A", "A", "A", "A", "A", "A"],
["A1", "1", "2", "3", "B1", "C1"],
["A2", "4", "5", "6", "B2", "C2"],
["A3", "7", "8", "9", "B3", "C3"],
["B", "B", "B", "B", "B", "B"],
["C", "C", "C", "C", "C", "C"],
],
width_ratios=[1.0, 0.5, 0.5, 0.5, 1.0, 1.0],
height_ratios=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
figsize=(20, 20),
layout="constrained",
)
for ax_name, ax in axes.items():
ax.set_title(ax_name)
fig.savefig('test.png')
test()