Часто в ходе визуализации данных на графиках возникает необходимость разместить легенду вне области графика. Это может быть полезно, когда на графике много данных и легенда занимает слишком много места, перекрывая часть информации.
Пример проблемы
Рассмотрим пример, когда есть график с большим количеством данных, и легенда перекрывает его часть.
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, что делает график более читаемым.
Добавить комментарий