Hoe stel ik de lettergrootte in van de titel van de figuur en de aslabels in Matplotlib?

Ik maak een figuur in Matplotlib zoals dit:

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

Ik wil lettergroottes specificeren voor de titel van de figuur en de aslabels. Ik heb voor alle drie verschillende lettergroottes nodig, dus het instellen van een globale lettergrootte (mpl.rcParams['font.size']=x) is niet wat ik wil. Hoe stel ik de lettergrootte voor de figuurtitel en de aslabels afzonderlijk in?

Oplossing

Functies die te maken hebben met tekst zoals label, title, enz. accepteren dezelfde parameters als matplotlib.text.Text. Voor de lettergrootte kun je size/fontsize gebruiken:

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

Voor het globaal instellen van title en label grootte, bevat mpl.rcParams axes.titlesize en axes.labelsize. (Van de pagina):

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

(Voor zover ik kan zien, is er geen manier om x en y label sizes apart in te stellen).

En ik zie dat axes.titlesize geen invloed heeft op suptitle. Ik denk dat je dat handmatig moet instellen.

Commentaren (9)

Je kunt dit ook globaal doen via een rcParams dictionary:

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)
Commentaren (5)

Als je meer gewend bent om ax objecten te gebruiken om je plotten te doen, vind je de ax.xaxis.label.set_size() misschien makkelijker te onthouden, of in ieder geval makkelijker te vinden met tab in een ipython terminal. Het lijkt erop dat een redraw operatie nodig is om het effect te zien. Bijvoorbeeld:

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

Ik ken geen vergelijkbare manier om de suptitle grootte in te stellen nadat het is gemaakt.

Commentaren (4)