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 souhaite spécifier des tailles de police pour le titre de la figure et les étiquettes des axes. Il faut que les trois tailles de police soient différentes, aussi je ne souhaite pas définir une taille de police globale (mpl.rcParams['font.size']=x
) Comment définir les tailles de police pour le titre de la figure et les étiquettes des axes individuellement?
Les fonctions traitant du texte comme label
, title
, etc. acceptent les mêmes paramètres que matplotlib.text.Text . 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 title
et label
, mpl.rcParams
contient axes.titlesize
et axes.labelsize
. (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 sache, il n’existe 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 définir cela manuellement.
Vous pouvez également le faire globalement 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)
Si vous êtes plus habitué à utiliser des objets ax
pour effectuer votre traçage, vous trouverez peut-être que la fonction ax.xaxis.label.set_size()
est plus facile à mémoriser, ou du moins, à trouver à l'aide de la touche tab dans un terminal ipython. Il semble avoir besoin d'une opération de redessinage 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 méthode similaire pour définir la taille du sous-titre après sa création.
Pour modifier uniquement la police du titre (et non la police de l'axe), j'ai utilisé ceci:
import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})
Le fontdict sauf tous les kwargs de matplotlib.text.Text .
Une autre solution pour changer la taille de la police est de changer le remplissage. Lorsque Python enregistre votre fichier PNG, vous pouvez modifier la mise en page à l'aide de la boîte de dialogue qui s'ouvre. L'espacement entre les axes, le rembourrage si vous le souhaitez peut être modifié à ce stade.