Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
1079

Размещение легенды за пределами области графика в Python

Часто в ходе визуализации данных на графиках возникает необходимость разместить легенду вне области графика. Это может быть полезно, когда на графике

Часто в ходе визуализации данных на графиках возникает необходимость разместить легенду вне области графика. Это может быть полезно, когда на графике много данных и легенда занимает слишком много места, перекрывая часть информации.

Пример проблемы

Рассмотрим пример, когда есть график с большим количеством данных, и легенда перекрывает его часть.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

fig, ax = plt.subplots()
ax.plot(x, y, label='A long label that takes up too much space')
ax.legend()
plt.show()

Решение проблемы

Размещение легенды вне области графика

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

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

Здесь (1.05, 1) — это координаты, указывающие место на графике, где должна находиться легенда. Координата x=1 соответствует краю графика по горизонтали, а y=1 — по вертикали. Значение 1.05 указывает на небольшой отступ от края графика. Аргумент loc='upper left' указывает, что верхний левый угол рамки легенды будет размещен в указанной точке.

Изменение размера шрифта в легенде

Если есть необходимость сделать шрифт в легенде меньше, можно использовать аргумент prop функции legend().

ax.legend(prop={'size': 6})

Здесь 6 — это размер шрифта в легенде.

Курсы по программированию
Помогаем получить новую профессию с гарантией трудоустройства!
Подробнее
Курсы по программированию

Полный код решения

Таким образом, полный код для размещения легенды вне области графика с уменьшенным шрифтом будет выглядеть следующим образом:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

fig, ax = plt.subplots()
ax.plot(x, y, label='A long label that takes up too much space')
ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left', prop={'size': 6})
plt.show()

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

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

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