web-dev-qa-db-fra.com

Python: Comment augmenter / réduire la taille de police des étiquettes de tick x et y?

Il me semble que j'ai du mal à trouver comment augmenter ou diminuer le fontsize des étiquettes de tick x et y lors de l'utilisation de matplotlib.

Je suis conscient qu'il existe la fonction set_xticklabels(labels, fontdict=None, minor=False, **kwargs), mais je n'ai pas compris comment contrôler la fontsize.

Je m'attendais à quelque chose de quelque peu explicite, comme

title_string=('My Title')
plt.suptitle(title_string, y=1.0, fontsize=17)

mais je n'ai rien trouvé de tel jusqu'à présent. Qu'est-ce que je rate?

10
FaCoffee

C'est plus simple que je ne le pensais.

Pour définir la taille de police des graduations de l'axe des x:

x_ticks=['x tick 1','x tick 2','x tick 3']
ax.set_xticklabels(x_ticks, rotation=0, fontsize=8)

Pour le faire pour les graduations de l'axe y:

y_ticks=['y tick 1','y tick 2','y tick 3']
ax.set_yticklabels(y_ticks, rotation=0, fontsize=8)

Les arguments rotation et fontsize peuvent facilement contrôler ce que je recherchais.

Référence: http://matplotlib.org/api/axes_api.html

2
FaCoffee

Il ne faut pas utiliser set_yticklabels pour changer la taille de la police, car cela définira également les étiquettes (c'est-à-dire qu'il remplacera tout formateur automatique par un FixedFormatter), ce qui n'est généralement pas souhaité. Le plus simple consiste à définir le tick_params:

ax.tick_params(axis="x", labelsize=8)
ax.tick_params(axis="y", labelsize=20)

ou

ax.tick_params(labelsize=8)

dans le cas où les deux axes doivent avoir la même taille.

Bien sûr, utiliser les rcParams comme dans réponse de @ tmdavison est également possible.

Vous pouvez définir la taille de police directement dans l'appel sur set_xticklabels et set_yticklabels (comme indiqué dans les réponses précédentes). Cela n'affectera qu'un Axes à la fois.

ax.set_xticklabels(x_ticks, rotation=0, fontsize=8)
ax.set_yticklabels(y_ticks, rotation=0, fontsize=8)

Vous pouvez également définir la taille de la police ticklabel globalement (c'est-à-dire pour toutes les figures/sous-tracés d'un script) en utilisant rcParams :

import matplotlib.pyplot as plt

plt.rc('xtick',labelsize=8)
plt.rc('ytick',labelsize=8)

Ou équivalent:

plt.rcParams['xtick.labelsize']=8
plt.rcParams['ytick.labelsize']=8

Enfin, s'il s'agit d'un paramètre que vous souhaitez définir pour tous vos tracés matplotlib, vous pouvez également définir ces deux rcParams dans votre fichier matplotlibrc:

xtick.labelsize      : 8 # fontsize of the x tick labels
ytick.labelsize      : 8 # fontsize of the y tick labels
13
tmdavison

Utilisez le mot clé size au lieu de fontsize.

1
toti08