Как изменить размер легенды с помощью matplotlib.pyplot
простой вопрос здесь: я пытаюсь получить размер моей легенды, используя matplotlib.pyplot
быть меньше (т. е. текст должен быть меньше). Код, который я использую, выглядит примерно так:
plot.figure()
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0], color='b', label='Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1], color='r', label='Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2], color='g', label='Dis 3: cf = .1, var = .01')
plot.legend(loc=2)
6 ответов
вы можете установить индивидуальный размер шрифта для легенды, регулируя prop
ключевое слово.
plot.legend(loc=2, prop={'size': 6})
это занимает словарь ключевых слов, соответствующих matplotlib.font_manager.FontProperties
свойства. Вижу документация для legend:
аргументы ключевого слова:
prop: [ None | FontProperties | dict ] A matplotlib.font_manager.FontProperties instance. If prop is a dictionary, a new instance will be created with prop. If None, use rc settings.
это также возможно, начиная с версии 1.2.1, чтобы использовать ключевое слово fontsize
.
Это
import pylab as plot
params = {'legend.fontsize': 20,
'legend.handlelength': 2}
plot.rcParams.update(params)
затем сделайте сюжет после этого.
есть тонна других rcParams, они также могут быть установлены в файле matplotlibrc.
также, вероятно, вы можете изменить его прохождения matplotlib.font_manager.FontProperties
экземпляр, но я не знаю, как это сделать. --> см. Янн ответ.
есть также несколько названных fontsizes, кроме размера в пунктах:
xx-small
x-small
small
medium
large
x-large
xx-large
использование:
pyplot.legend(loc=2, fontsize = 'x-small')
используя import matplotlib.pyplot as plt
метод 1: укажите размер шрифта при вызове легенды (повторяющийся)
plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size
С помощью этого метода вы можете установить размер шрифта для каждой легенды при создании (что позволяет иметь несколько легенд с разными размерами шрифтов). Однако вам придется вводить все вручную каждый раз, когда вы создаете легенду.
(Примечание: @Mathias711 перечислил доступные именованные шрифты в своем ответе)
Способ 2: укажите размер шрифта в rcParams (удобно)
plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size
С помощью этого метода вы устанавливаете размер шрифта легенды по умолчанию, и все легенды будут автоматически использовать его, если вы не укажете иначе, используя метод 1. Это означает, что вы можете установить размер шрифта легенды в начале кода и не беспокоиться о его настройке для каждой отдельной легенды.
если вы используете именованный размер например 'medium'
, тогда текст будет масштабироваться с глобальной font.size
на rcParams
. Изменить font.size
использовать plt.rc(font.size='medium')
существует несколько настроек для настройки размера легенды. Два из них я нахожу наиболее полезными:
- labelspacing: задает расстояние между записями меток кратными размеру шрифта. Например, с 10-точечным шрифтом,
legend(..., labelspacing=0.2)
уменьшит расстояние между записями до 2 точек. Значение по умолчанию для моей установки составляет около 0,5. - prop: что позволяет полностью контролировать размер шрифта и т. д. Вы можете установить 8-точечный шрифт с помощью
legend(..., prop={'size':8})
. Значение по умолчанию для моей установки примерно в 14 очков.
кроме того,легенда документации перечисляет ряд других параметров заполнения и интервалов, включая:borderpad
, handlelength
, handletextpad
, borderaxespad
и columnspacing
. Все они следуют той же форме, что и labelspacing и area также в кратных размерах шрифта.
эти значения также могут быть установлены по умолчанию для всех фигур с помощью файл matplotlibrc.
на моей установке FontProperties изменяет только размер текста, но он все еще слишком велик и разнесен. Я нашел параметр в pyplot.rcParams
: legend.labelspacing
, который, я предполагаю, установлен на долю размера шрифта. Я изменил его с
pyplot.rcParams.update({'legend.labelspacing':0.25})
Я не уверен, как указать его в pyplot.функция легенды-передача
prop={'labelspacing':0.25}
или
prop={'legend.labelspacing':0.25}
возвращается с ошибкой.