Чтобы все графики были одинаковыми, вам нужны одинаковые поля для всех. Итак, вам нужно установить их все на некоторое фиксированное значение. plt.subplots_adjust(...)
делает это. Числа - это дроби от 0 до 1, где 0 - левый нижний угол рисунка, а 1 - верхний правый.
Для вашего примера 2x1 будет работать следующее:
import matplotlib.pyplot as plt
def createBar(figx, figy, labels):
fig, ax = plt.subplots(figsize=(figx, figy))
performance = [10, 70, 120]
ax.barh(labels, performance)
plt.subplots_adjust(left=0.4, right=0.95, top=0.97, bottom=0.25)
return fig
bar = createBar(2, 1, ('Tom', 'Dick', 'Fred'))
bar_long = createBar(2, 1, ('Tom Cruise', 'Dick & Doof', 'Fred Astaire'))
bar_perfect = createBar(2, 1, (' Tom', 'Dick', 'Fred'))
plt.show()