python - tamaño - que es matplotlib
¿Cómo configuro el título de la figura y el tamaño de fuente de las etiquetas de los ejes en Matplotlib? (3)
Estoy creando una figura en Matplotlib así:
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 los tamaños de fuente para el título de la figura y las etiquetas del eje. Necesito que los tres sean de 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?
Las funciones relacionadas con texto como label
, title
, etc. aceptan parámetros igual que matplotlib.text.Text . Para el tamaño de fuente puede 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 los mpl.rcParams
title
y label
nivel mundial, mpl.rcParams
contiene axes.titlesize
y 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 forma de establecer los tamaños de las etiquetas x
e y
separado).
Y veo que axes.titlesize
no afecta a suptitle
. Supongo que necesitas configurar eso manualmente.
Si está más acostumbrado a usar objetos ax
para hacer su trazado, puede encontrar el ax.xaxis.label.set_size()
más fácil de recordar, o al menos más fácil de encontrar usando la pestaña en un terminal ipython. Parece que se necesita una operación de redibujado después de 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 sé de una manera similar para establecer el tamaño del suptítulo después de que se crea.
También puede 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)