Один из вариантов размещения заголовка слева от элементов легенды - вынуть заголовок из вертикального упаковщика, который составляет легенду, и упаковать его горизонтально со столбцами легенды.
Затем он будет выровнен по верху только что созданного самого первого столбца.
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
for i in range(4):
ax.plot(np.arange(4)+i, label="label {}".format(i+1))
legend = ax.legend(title="Looong Title", ncol=2, loc="upper left")
def legend_title_left(leg):
c = leg.get_children()[0]
title = c.get_children()[0]
hpack = c.get_children()[1]
c._children = [hpack]
hpack._children = [title] + hpack.get_children()
legend_title_left(legend)
plt.show()