Если вам действительно нужен шрифт, в котором все символы имеют одинаковую длину, вы можете установить моноширинный шрифт. Это похоже на шрифт старой пишущей машинки.
В целом пропорциональные шрифты намного легче читать. Ширина символов пропорциональна: «i» занимает меньше места, чем «m» или «W».
ax.legend(prop={'family': 'monospace'}
Альтернативой тому, что вы хотите достичь sh, может быть создание 3 легенд. записей больше и используйте 2 столбца для легенды. Легенда состоит из комбинации ручки (цветная линия) и метки. Для сопровождения дополнительных меток вы можете создать фиктивные ручки.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import patches
fig, ax = plt.subplots()
l = [('string1', 1), ('string200', 10.5), ('str3', 12.5)]
x = [1, 2, 3]
y = [1, 2, 3]
for tup in l:
ax.plot(x, np.add(y, tup[1]), label=tup[0])
empty_handle = patches.Rectangle((0, 0), 1, 1, fill=False, edgecolor='none', visible=False)
handles, labels = ax.get_legend_handles_labels()
handles += [empty_handle for tup in l]
labels += [lval for lstr, lval in l]
ax.legend(handles, labels, ncol=2)
plt.show()
На графике показаны два варианта легенды: