Data Visualization

Мастерство размещения легенд в Matplotlib

Spread the love

Matplotlib — мощная библиотека Python для создания визуализаций, но иногда размещение легенды по умолчанию может загромождать ваши графики. Эта статья демонстрирует эффективные методы размещения легенд за пределами области графика для повышения читаемости.

Содержание

Использование bbox_to_anchor для размещения легенды

Аргумент bbox_to_anchor в функции legend() обеспечивает точное позиционирование легенды. Он принимает кортеж (x, y), указывающий на нижний левый угол легенды в координатах фигуры. (0,0) — это нижний левый угол, а (1,1) — верхний правый. Аргумент loc дополнительно уточняет размещение внутри этой точки привязки.


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')

ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left') # Настройте (1.1,1) по мере необходимости

ax.set_title('Синусоидальные и косинусоидальные волны')
ax.set_xlabel('x')
ax.set_ylabel('y')

plt.tight_layout()
plt.show()

Здесь bbox_to_anchor=(1.1, 1) размещает легенду немного справа от графика (x=1.1) и сверху (y=1). loc='upper left' выравнивает легенду внутри этой точки привязки. Экспериментируйте с различными значениями loc (например, ‘upper right’, ‘lower left’, ‘center’) и настраивайте координаты (x,y) для оптимального позиционирования.

Предотвращение обрезания легенд с помощью bbox_extra_artists и bbox_inches

Большие легенды или плотные фигуры могут приводить к обрезанию легенд даже с bbox_to_anchor. bbox_extra_artists и bbox_inches решают эту проблему. bbox_extra_artists включает легенду в вычисление ограничительной рамки для сохранения, а bbox_inches='tight' обеспечивает узкие поля, предотвращая обрезку.


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 500)  # Больше данных для большей легенды
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)

fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.plot(x, y3, label='tan(x)')

leg = ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')

fig.savefig('legend_outside.png', bbox_extra_artists=[leg], bbox_inches='tight')

plt.show()

Легенда хранится в leg, а затем передается в bbox_extra_artists в savefig. bbox_inches='tight' гарантирует, что вся фигура, включая легенду, будет сохранена. Замените 'legend_outside.png' на желаемое имя файла.

Эти методы обеспечивают гибкое и эффективное размещение легенды в Matplotlib, повышая ясность и визуальную привлекательность ваших графиков. Экспериментируйте с различными параметрами, чтобы добиться идеальной компоновки.

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

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