У меня есть немного хакерский ответ для вас, но он работает. plt.legend()
имеет параметр ncol
, который позволяет разделить записи легенды на несколько столбцов. Нарисовав группу невидимых линий с невидимыми маркерами, мы можем добавить метки к легенде и поместить их в следующий столбец.
Вот код:
import matplotlib.pyplot as plt
# Plot actual data
plt.plot([0, 1], [0, 1])
plt.plot([0, 1], [0, 1.1])
plt.plot([0, 1], [0, 1.2])
plt.plot([0, 1], [0, 1.3])
plt.plot([0, 1], [0, 1.4])
# Plot non-visible lines
plt.plot(np.nan, np.nan, '.', ms=0)
plt.plot(np.nan, np.nan, '.', ms=0)
plt.plot(np.nan, np.nan, '.', ms=0)
plt.plot(np.nan, np.nan, '.', ms=0)
plt.plot(np.nan, np.nan, '.', ms=0)
plt.legend(['Line 1', 'Line 2', 'Line 3', 'Line 4', 'Line 5',
'Col Text 1', 'Col Text 2', 'Col Text 3', 'Col Text 4',
'Col Text 5'], ncol=2, columnspacing=-1)
plt.show()
И это приводит к следующему графику:
![plot with multiple columns in the legend](https://i.stack.imgur.com/IrnLB.png)
Регулируя параметр columnspacing
, вы можете переместить этот второй столбец ближе или дальше к первому. Опять же, это немного взломать. Я не удивлюсь, если есть лучший способ сделать это.
Ссылки:
EDIT: Это работает, даже если метки линий не имеют одинаковую длину. Должен ли мой пример показать, что ...