Comment puis-je définir la taille de la police du titre de la figure et des étiquettes des axes dans Matplotlib ?

Je crée une figure dans Matplotlib comme ceci :

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

Je veux spécifier la taille des polices pour le titre de la figure et les étiquettes des axes. J'ai besoin de trois tailles de police différentes, donc définir une taille de police globale (mpl.rcParams['font.size&#39 ;]=x) n'est pas ce que je veux. Comment puis-je définir la taille des polices pour le titre de la figure et les étiquettes d'axe individuellement ?

Solution

Les fonctions traitant du texte comme label, title, etc. acceptent les mêmes paramètres que [matplotlib.text.Text][1]. Pour la taille de la police, vous pouvez utiliser 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')

Pour définir globalement les tailles des titres et des labels, [mpl.rcParams][2] contient axes.titlesize et axes.labelsize. (Extrait de la page) :

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

(Pour autant que je puisse voir, il n'y a aucun moyen de définir les tailles des étiquettes x et y séparément).

Et je vois que axes.titlesize n'affecte pas suptitle. Je suppose que vous devez le définir manuellement.

[1] : http://matplotlib.org/users/text_props.html [2] : http://matplotlib.org/users/customizing.html

Commentaires (9)

Vous pouvez également le faire de manière globale via un dictionnaire 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)
Commentaires (5)

Si vous avez l&#8217habitude d&#8217utiliser les objets ax pour vos tracés, vous trouverez peut-être la fonction ax.xaxis.label.set_size() plus facile à retenir, ou du moins plus facile à trouver en utilisant la tabulation dans un terminal ipython. Il semble qu'une opération de redessin soit nécessaire après pour voir l'effet. Par exemple :

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

Je ne connais pas de moyen similaire pour définir la taille du suptitle après sa création.

Commentaires (4)