Question simple ici: j'essaie de réduire la taille de ma légende matplotlib.pyplot
(c'est-à-dire que le texte soit plus petit). Le code que j'utilise ressemble à ceci:
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)
python
size
matplotlib
legend
Mike
la source
la source
plot.rcParams.update
?Cela devrait faire
Faites ensuite l'intrigue.
Il existe une tonne d'autres rcParams, ils peuvent également être définis dans le fichier matplotlibrc.
On peut aussi supposer que vous pouvez le changer en passant une
matplotlib.font_manager.FontProperties
instance mais cela, je ne sais pas comment faire. -> voir la réponse de Yann.la source
matplotlib.rc('legend', fontsize=0.5, linewidth=2)
legend.handlelength
au lieu delegend.linewidth
en utilisant
import matplotlib.pyplot as plt
Méthode 1: spécifiez la taille de la police lors de l'appel de la légende (répétitif)
Avec cette méthode, vous pouvez définir la taille de police pour chaque légende à la création (vous permettant d'avoir plusieurs légendes avec différentes tailles de police). Cependant, vous devrez tout taper manuellement chaque fois que vous créez une légende.
(Remarque: @ Mathias711 a répertorié les tailles de police nommées disponibles dans sa réponse)
Méthode 2: spécifiez la taille de police dans rcParams (pratique)
Avec cette méthode, vous définissez la taille de police par défaut de la légende, et toutes les légendes l'utiliseront automatiquement, sauf indication contraire à l'aide de la méthode 1. Cela signifie que vous pouvez définir la taille de police de votre légende au début de votre code, et ne vous inquiétez pas de la définir pour chaque légende individuelle .
Si vous utilisez une taille nommée, par exemple
'medium'
, le texte de la légende sera mis à l'échelle avec le globalfont.size
inrcParams
. Pour changer d'font.size
utilisationplt.rc(font.size='medium')
la source
Il existe également quelques tailles de police nommées , en dehors de la taille en points:
Usage:
la source
Il existe plusieurs paramètres pour ajuster la taille de la légende. Les deux que je trouve les plus utiles sont:
legend(..., labelspacing=0.2)
réduira l'espacement entre les entrées à 2 points. La valeur par défaut sur mon installation est d'environ 0,5.legend(..., prop={'size':8})
. La valeur par défaut sur mon installation est d'environ 14 points.De plus, la documentation légende énumère un certain nombre d'autres paramètres de remplissage et d' espacement , y compris:
borderpad
,handlelength
,handletextpad
,borderaxespad
etcolumnspacing
. Celles-ci suivent toutes la même forme que l'espacement des étiquettes et la zone également en multiples de taille de police.Ces valeurs peuvent également être définies comme valeurs par défaut pour toutes les figures à l'aide du fichier matplotlibrc .
la source
Sur mon installation, FontProperties ne change que la taille du texte, mais il est toujours trop grand et espacé. J'ai trouvé un paramètre
pyplot.rcParams
:legend.labelspacing
que je devine est fixé à une fraction de la taille de la police. Je l'ai changé avecJe ne sais pas comment le spécifier à la fonction pyplot.legend - en passant
ou
revient avec une erreur.
la source
plot.legend (loc = 'en bas à droite', decimal_places = 2, fontsize = '11', title = 'Hey there', title_fontsize = '20')
la source