python - example - Cómo cambiar el tamaño de la leyenda con matplotlib.pyplot
matplotlib legend size (6)
En mi instalación, FontProperties solo cambia el tamaño del texto, pero sigue siendo demasiado grande y espaciado. Encontré un parámetro en pyplot.rcParams
: legend.labelspacing
, que supongo que está configurado a una fracción del tamaño de fuente. Lo he cambiado con
pyplot.rcParams.update({''legend.labelspacing'':0.25})
No estoy seguro de cómo especificarlo a la función pyplot.legend - pasar
prop={''labelspacing'':0.25}
o
prop={''legend.labelspacing'':0.25}
Vuelve con un error.
Pregunta simple aquí: estoy tratando de obtener el tamaño de mi leyenda usando matplotlib.pyplot
para ser más pequeño (es decir, el texto para ser más pequeño). El código que estoy usando va algo como esto:
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)
Esto deberia hacer
import pylab as plot
params = {''legend.fontsize'': 20,
''legend.handlelength'': 2}
plot.rcParams.update(params)
Luego haz la trama después.
Hay un montón de otros rcParams, también se pueden establecer en el archivo matplotlibrc.
También es de suponer que puede cambiarlo pasando una instancia de matplotlib.font_manager.FontProperties
pero no sé cómo hacerlo. -> ver la respuesta de Yann.
Hay múltiples configuraciones para ajustar el tamaño de la leyenda. Los dos que me parecen más útiles son:
- labelspacing: que establece el espaciado entre las entradas de etiquetas en múltiplos del tamaño de fuente. Por ejemplo, con una fuente de 10 puntos, la
legend(..., labelspacing=0.2)
reducirá el espacio entre las entradas a 2 puntos. El valor predeterminado en mi instalación es de aproximadamente 0,5. - prop: que permite el control total del tamaño de la fuente, etc. Puede establecer una fuente de 8 puntos usando la
legend(..., prop={''size'':8})
. El valor predeterminado en mi instalación es de unos 14 puntos.
Además, la documentación de la leyenda enumera una serie de otros parámetros de relleno y espaciado que incluyen: borderpad
, handletextpad
, borderaxespad
, columnspacing
y columnspacing
. Todos estos siguen la misma forma que el espacio de etiquetas y el área también en múltiplos de tamaño de fuente.
Estos valores también se pueden establecer como valores predeterminados para todas las figuras usando el archivo matplotlibrc .
Puede establecer un tamaño de fuente individual para la leyenda ajustando la palabra clave de prop
.
plot.legend(loc=2, prop={''size'': 6})
Esto toma un diccionario de palabras clave correspondientes a matplotlib.font_manager.FontProperties
propiedades matplotlib.font_manager.FontProperties
. Vea la documentación para la leyenda :
Argumentos de palabras clave:
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.
También es posible, a partir de la versión 1.2.1 , usar la palabra clave fontsize
.
También hay algunos tamaños de fontsizes nombrados, además del tamaño en puntos:
xx-small
x-small
small
medium
large
x-large
xx-large
Uso:
pyplot.legend(loc=2, fontsize = ''x-small'')
utilizando import matplotlib.pyplot as plt
Método 1: especifique el tamaño de fuente al llamar a la leyenda (repetitiva)
plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size
Con este método, puede establecer el tamaño de fuente para cada leyenda en la creación (lo que le permite tener múltiples leyendas con diferentes tamaños de fuente). Sin embargo, tendrá que escribir todo manualmente cada vez que cree una leyenda.
(Nota: @ Mathias711 enumeró los tipos de letra con nombre disponibles en su respuesta)
Método 2: especifique el tamaño de fuente en rcParams (conveniente)
plt.rc(''legend'',fontsize=20) # using a size in points
plt.rc(''legend'',fontsize=''medium'') # using a named size
Con este método, configura el tamaño de fuente de leyenda predeterminado, y todas las leyendas lo usarán automáticamente a menos que especifique lo contrario con el método 1. Esto significa que puede configurar el tamaño de fuente de su leyenda al comienzo de su código, y no se preocupe por configurarlo para cada leyenda individual .
Si usa un tamaño con nombre, por ejemplo, ''medium''
, el texto de la leyenda se escalará con el font.size
de rcParams
global en rcParams
. Para cambiar font.size
use plt.rc(font.size=''medium'')