Matplotlib. Урок 3.1. Настройка графиков. Работа с легендой

Следующие несколько уроков будут посвящены настройке графиков. Начнем с работы с легендой. В данном уроке будут рассмотрены следующие темы: отображение легенды, настройка ее расположения на графике, дополнительные параметры для более тонкой настройки ее внешнего вида.

Отображение легенды

Для отображения легенды на графике используется функция legend(), возможны следующие варианты ее вызова:

legend()
legend(labels)
legend(handles, labels)

В первом варианте в качестве меток для легенды будет использоваться метки, указанные в функциях построения графиков (параметр label):

x = [1, 5, 10, 15, 20]
y1 = [1, 7, 3, 5, 11]
y2 = [4, 3, 1, 8, 12]
plt.plot(x, y1, 'o-r', label='line 1')
plt.plot(x, y2, 'o-.g', label='line 2')
plt.legend()

Второй вариант позволят самостоятельно указать текстовую метку для отображаемых данных:

plt.plot(x, y1, 'o-r')
plt.plot(x, y2, 'o-.g')
plt.legend(['L1', 'L2'])

В третьем варианте можно вручную указать соответствие линии и меток для них:

line1, = plt.plot(x, y1, 'o-b')
line2, = plt.plot(x, y2, 'o-.m')
plt.legend((line2, line1), ['L2', 'L1'])

Расположение легенды на графике

Место расположения легенды определяется параметром loc, которое может принимать одно из следующих значений:

Строковое описание Код
‘best’ 0
‘upper right’ 1
‘upper left’ 2
‘lower left’ 3
‘lower right’ 4
‘right’ 5
‘center left’ 6
‘center right’ 7
‘lower center’ 8
‘upper center’ 9
‘center’ 10
‘upper right’ 0

Ниже представлен пример, реализующий различные варианты расстановки легенды через параметр loc:

locs = ['best', 'upper right', 'upper left', 'lower left', 
        'lower right', 'right', 'center left', 'center right', 
        'lower center', 'upper center', 'center']

plt.figure(figsize=(12, 12))

for i in range(3):
    for j in range(4):
        if i*4+j < 11:
            plt.subplot(3, 4, i*4+j+1)
            plt.title(locs[i*4+j])
            plt.plot(x, y1, 'o-r', label='line 1')
            plt.plot(x, y2, 'o-.g', label='line 2')
            plt.legend(loc=locs[i*4+j])

        else:
            break

Для более гибкого управление положением объекта можно воспользоваться параметром bbox_to_anchor функции legend(). Этому параметру присваивается кортеж, состоящий из четырех или двух элементов:

bbox_to_anchor = (x, y, width, height)
bbox_to_anchor = (x, y)

Пример использования параметра bbox_to_anchor:

plt.plot(x, y1, 'o-r', label='line 1')
plt.plot(x, y2, 'o-.g', label='line 2')
plt.legend(bbox_to_anchor=(1, 0.6))

Дополнительные параметры настройки отображения легенды

В таблице ниже представлены дополнительные параметры, которые можно использовать для более тонкой настройки легенды.

Параметр Тип Описание
fontsize int или float или {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’} Размера шрифта надписи легенды
frameon bool Отображение рамки легенды
framealpha  None или float Прозрачность легенды
facecolor  None или str Цвет заливки 
edgecolor  None или str Цвет рамки 
title  None или str Текст заголовка
title_fontsize None или str Размер шрифта 

Пример работы с параметрами:

plt.plot(x, y1, 'o-r', label='line 1')
plt.plot(x, y2, 'o-.g', label='line 2')
plt.legend(fontsize=14, shadow=True, framealpha=1, facecolor='y', edgecolor='r', title='Легенда')

Дополнительные материалы

Дополнительную информацию по работе с легендой можете найти в следующих официальных материалах проекта Matplotlib:

https://matplotlib.org/tutorials/intermediate/legend_guide.html#sphx-glr-tutorials-intermediate-legend-guide-py

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.legend.html#matplotlib.pyplot.legend

P.S.

Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта. Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.
Книга: Линейная алгебра на Python
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas.  Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге Pandas. Работа с данными”.
Книга: Pandas. Работа с данными

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *