Pregunta simple aquí: estoy tratando de hacer que el tamaño de mi leyenda matplotlib.pyplot
sea más pequeño (es decir, que el texto sea más pequeño). El código que estoy usando va más o menos así:
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
Miguel
fuente
fuente
plot.rcParams.update
?Esto debería hacer
Luego haz la trama después.
Hay muchos otros rcParams, también se pueden configurar en el archivo matplotlibrc.
También presumiblemente puede cambiarlo pasando una
matplotlib.font_manager.FontProperties
instancia, pero esto no sé cómo hacerlo. -> ver la respuesta de Yann.fuente
matplotlib.rc('legend', fontsize=0.5, linewidth=2)
legend.handlelength
lugar delegend.linewidth
utilizando
import matplotlib.pyplot as plt
Método 1: especifique el tamaño de fuente al llamar a la leyenda (repetitivo)
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, deberá escribir todo manualmente cada vez que cree una leyenda.
(Nota: @ Mathias711 enumeró los tamaños de letra con nombre disponibles en su respuesta)
Método 2: especifique el tamaño de fuente en rcParams (conveniente)
Con este método, establece el tamaño de fuente de la leyenda predeterminado, y todas las leyendas lo usarán automáticamente a menos que especifique lo contrario utilizando el método 1. Esto significa que puede establecer el tamaño de fuente de la leyenda al comienzo de su código, y no se preocupe por configurarlo para cada leyenda individual .
Si usa un tamaño con nombre
'medium'
, por ejemplo , el texto de la leyenda se escalará con el globalfont.size
enrcParams
. Para cambiar defont.size
usoplt.rc(font.size='medium')
fuente
También hay algunos tamaños de fuente con nombre , además del tamaño en puntos:
Uso:
fuente
Existen múltiples configuraciones para ajustar el tamaño de la leyenda. Los dos que encuentro más útiles son:
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.legend(..., prop={'size':8})
. El valor predeterminado en mi instalación es de aproximadamente 14 puntos.Además, los documentación leyenda listas de una serie de otros parámetros de relleno y espaciado entre ellos:
borderpad
,handlelength
,handletextpad
,borderaxespad
, ycolumnspacing
. 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 los valores predeterminados para todas las figuras que usan el archivo matplotlibrc .
fuente
En mi instalación, FontProperties solo cambia el tamaño del texto, pero aún es demasiado grande y está espaciado. Encontré un parámetro en
pyplot.rcParams
:,legend.labelspacing
que supongo que está configurado en una fracción del tamaño de fuente. Lo he cambiado conNo estoy seguro de cómo especificarlo en la función pyplot.legend - pasando
o
vuelve con un error
fuente
plot.legend (loc = 'inferior derecha', decimal_places = 2, fontsize = '11', title = 'Hola', title_fontsize = '20')
fuente