2012-09-16 18 views
259

Estoy creando una figura en Matplotlib así:¿Cómo configuro el título de la figura y el tamaño de la fuente de las etiquetas de los ejes en Matplotlib?

from matplotlib import pyplot as plt 

fig = plt.figure() 
plt.plot(data) 
fig.suptitle('test title') 
plt.xlabel('xlabel') 
plt.ylabel('ylabel') 
fig.savefig('test.jpg') 

que desea especificar tamaños de fuente para el título de la figura y las etiquetas de los ejes. Necesito que los tres sean tamaños de fuente diferentes, por lo que establecer un tamaño de fuente global (mpl.rcParams['font.size']=x) no es lo que quiero. ¿Cómo configuro los tamaños de fuente para el título de la figura y las etiquetas del eje individualmente?

+0

Tenía curiosidad, así que traté de agregar su 'mpl.rcParams ['font.size'] = 20' e intenté cambiar los valores a 10 y 14. Primero descubrí que obtuve errores a menos que cambiara' mpl' por 'plt '. Ese cambio borró el error, pero luego la línea de código no tuvo efecto en mis títulos o etiquetas. Claro que esta sintaxis es la correcta? – TMWP

+0

ahora estoy pensando a partir de los comentarios sobre la respuesta aceptada que el problema podría ser mi declaración de importación, aunque me supera el hecho de que no arroje un error si no importé el comando. ¿Hay alguna otra línea de importación que utilizó al probar el comando 'mpl'? – TMWP

Respuesta

400

Las funciones relacionadas con el texto como label, title, etc. aceptan los mismos parámetros que matplotlib.text.Text. Para el tamaño de la fuente se puede utilizar size/fontsize:

from matplotlib import pyplot as plt  

fig = plt.figure() 
plt.plot(data) 
fig.suptitle('test title', fontsize=20) 
plt.xlabel('xlabel', fontsize=18) 
plt.ylabel('ylabel', fontsize=16) 
fig.savefig('test.jpg') 

para establecer a nivel mundial y titlelabel tamaños, mpl.rcParams contiene axes.titlesize y axes.labelsize. (En la página):

axes.titlesize  : large # fontsize of the axes title 
axes.labelsize  : medium # fontsize of the x any y labels 

(Por lo que yo puedo ver, no hay manera de establecer tamaños x y y etiqueta por separado.)

Y veo que axes.titlesize no afecta suptitle. Supongo que debes configurarlo manualmente.

+0

gracias! ¿Hay alguna forma de establecer eso de manera global pero explícita para (suptitle, xlabel, ylabel)? Estoy haciendo muchos gráficos y solo quiero especificarlo una vez ... – vasek1

+0

@ vasek1: Pensé que no querías configuración global :). Para eso necesitas 'mpl.rcParams'. He editado mi respuesta. – Avaris

+8

Para cualquier persona como yo que busque la solución para cambiar el tamaño de títulos: 'plt.rcParams.update ({'axes.titlesize': 'small'})' –

30

También puede hacer esto a nivel mundial a través de un diccionario rcParams:

import matplotlib.pylab as pylab 
params = {'legend.fontsize': 'x-large', 
      'figure.figsize': (15, 5), 
     'axes.labelsize': 'x-large', 
     'axes.titlesize':'x-large', 
     'xtick.labelsize':'x-large', 
     'ytick.labelsize':'x-large'} 
pylab.rcParams.update(params) 
+0

¿Cuáles son los otros tamaños además de ''x-large''? –

+2

'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'. Consulte https://matplotlib.org/api/font_manager_api.html#matplotlib.font_manager.FontProperties.set_size – tsando

9

Si usted está más acostumbrado a utilizar ax objetos para hacer su trazado, es posible encontrar el ax.xaxis.label.set_size() más fácil de recordar, o al menos más fácil para encontrar utilizando la pestaña en una terminal ipython. Parece necesitar una operación de redibujado después para ver el efecto. Por ejemplo:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
x = [0,1,2] 
y = [0, 3, 9] 
ax.plot(x,y) 
fig.suptitle('test title') 
ax.set_xlabel('xlabel') 
ax.set_ylabel('ylabel') 
ax.xaxis.label.set_size(20) 
plt.draw() 

No conozco una manera similar de establecer el tamaño de los subtítulos.

Cuestiones relacionadas