Как изменить размер легенды с помощью 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свойства. Смотрите документация по легенде:Ключевое слово аргументы:
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: укажите размер шрифта при вызове legend (repetitive)
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.- опора: который позволяет полностью контролировать размер шрифта и т. д. Вы можете установить 8-точечный шрифт с помощью
legend(..., prop={'size':8}). Значение по умолчанию для моей установки примерно в 14 очков.кроме того,легенда документации перечисляет ряд других параметров заполнения и интервала, включая:
borderpad,handlelength,handletextpad,borderaxespadиcolumnspacing. Все они следуют той же форме, что и labelspacing и area также в кратных fontsize.эти значения также могут быть установлены по умолчанию для всех фигур с помощью matplotlibrc file.
на моей установке FontProperties только изменяет размер текста, но он все еще слишком велик и разнесен. Я нашел параметр в
pyplot.rcParams:legend.labelspacing, который я предполагаю, установлен на долю размера шрифта. Я изменил его сpyplot.rcParams.update({'legend.labelspacing':0.25})Я не уверен, как указать его в pyplot.функция легенды-передача
prop={'labelspacing':0.25}или
prop={'legend.labelspacing':0.25}возвращается с ошибкой.
Comments