¿Cómo configuro el tamaño de fuente del título de la figura y de las etiquetas de los ejes?

Resuelto vasek1 asked hace 12 años • 12 respuestas

Estoy creando una figura en Matplotlib como esta:

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')

Quiero especificar tamaños de fuente para el título de la figura y las etiquetas de los ejes. Necesito que los tres tengan diferentes tamaños de fuente, 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 de los ejes individualmente?

vasek1 avatar Sep 16 '12 12:09 vasek1
Aceptado

Las funciones que tratan con texto como label, title, etc. aceptan parámetros iguales que matplotlib.text.Text. Para el tamaño de fuente puedes usar 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 configuración titley labeltamaños globales, mpl.rcParamscontiene axes.titlesizey axes.labelsize. (De la página):

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

(Hasta donde puedo ver, no hay manera de configurar xyy etiquetar tamaños por separado).

Y veo que eso axes.titlesizeno afecta suptitle. Supongo que debes configurarlo manualmente.

Avaris avatar Sep 16 '2012 06:09 Avaris

También puedes hacer esto globalmente 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)
tsando avatar Jul 07 '2016 17:07 tsando

Si está más acostumbrado a usar axobjetos para trazar, es posible que le resulte ax.xaxis.label.set_size()más fácil recordar, o al menos más fácil de encontrar, usando la pestaña en una terminal ipython. Parece que es necesario volver a dibujar la operación para ver el efecto. Por ejemplo:

import matplotlib.pyplot as plt

# set up a plot with dummy data
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x,y)

# title and labels, setting initial sizes
fig.suptitle('test title', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize='medium')   # relative to plt.rcParams['font.size']

# setting label sizes after creation
ax.xaxis.label.set_size(20)
plt.draw()

No conozco una forma similar de configurar el tamaño de los subtítulos después de su creación.

SpinUp __ A Davis avatar Oct 09 '2017 16:10 SpinUp __ A Davis