Вы можете использовать следующий фрагмент кода, чтобы изменить порядок элементов в легенде Matplotlib:
#get handles and labels
handles, labels = plt.gca().get_legend_handles_labels ()
#specify order of items in legend
order = [1,2,0]
#add legend to plot
plt.legend([handles[idx] for idx in order],[labels[idx] for idx in order])
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: изменение порядка элементов в легенде Matplotlib
Предположим, мы создаем следующую линейную диаграмму в Matplotlib:
import pandas as pd
import matplotlib.pyplot as plt
#create data
df = pd.DataFrame({'points': [11, 17, 16, 18, 22, 25, 26, 24, 29],
'assists': [5, 7, 7, 9, 12, 9, 9, 4, 8],
'rebounds': [6, 8, 8, 10, 14, 12, 12, 10, 11]})
#add lines to plot
plt.plot(df['points'], label='Points', color='green')
plt.plot(df['assists'], label='Assists', color='steelblue')
plt.plot(df['rebounds'], label='Rebounds', color='purple')
#add legend
plt.legend()

Элементы в легенде расположены в том порядке, в котором мы добавили линии на график.
Однако мы можем использовать следующий синтаксис для настройки порядка элементов в легенде:
import pandas as pd
import matplotlib.pyplot as plt
#create data
df = pd.DataFrame({'points': [11, 17, 16, 18, 22, 25, 26, 24, 29],
'assists': [5, 7, 7, 9, 12, 9, 9, 4, 8],
'rebounds': [6, 8, 8, 10, 14, 12, 12, 10, 11]})
#add lines to plot
plt.plot(df['points'], label='Points', color='green')
plt.plot(df['assists'], label='Assists', color='steelblue')
plt.plot(df['rebounds'], label='Rebounds', color='purple')
#get handles and labels
handles, labels = plt.gca().get_legend_handles_labels ()
#specify order of items in legend
order = [1,2,0]
#add legend to plot
plt.legend([handles[idx] for idx in order],[labels[idx] for idx in order])

Обратите внимание, что мы указали:
- порядок = [1, 2, 0]
Это означает:
- Первым элементом в легенде должна быть метка, которая изначально находилась в индексной позиции 1 старой легенды («Ассисты»).
- Вторым элементом в легенде должна быть метка, которая изначально находилась в индексной позиции 2 старой легенды («Отскоки»).
- Третьим элементом в легенде должна быть метка, которая изначально находилась в индексной позиции 0 старой легенды («Точки»).
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в Matplotlib:
Как изменить положение легенды в Matplotlib
Как разместить легенду за пределами графика Matplotlib
Как изменить размер шрифта легенды в Matplotlib