Как изменить размер легенды с помощью 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)
753   6  

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

    Ничего не найдено.