Dans une figure matplotlib, comment puis-je réduire la taille de la police des étiquettes de graduation ax1.set_xticklabels()
?
De plus, comment peut-on le faire pivoter de l'horizontale à la verticale?
python
matplotlib
Ouvrez la voie
la source
la source
Réponses:
Veuillez noter que les nouvelles versions de MPL ont un raccourci pour cette tâche. Un exemple est montré dans l'autre réponse à cette question: https://stackoverflow.com/a/11386056/42346
Le code ci-dessous est à titre indicatif et peut ne pas être nécessairement optimisé.
la source
plt.setp
. (Aussi, jetez un œil àax.tick_params
) Par exemple, vous pouvez simplement le faireplt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=14)
. De plus, les objets axes ont uneax.is_last_row()
méthode qui peut être pratique dans des cas comme votre exemple. Au lieu de celaif i != len...
, vous pouvez le faireif not ax.is_last_row()
. (Pourquoi c'est une méthode, je n'en ai aucune idée ... Matplotlib déteste les propriétés, apparemment!)is_last_row()
, merci! J'ai utiliséplt.setp
dans le passé, et je n'étais pas nécessairement sûr que cela représentait une manière plus canonique de personnaliser les étiquettes de tick. Vous avez levé ce doute, merci. Plus largement: vos réponses, notamment dans lematplotlib
tag, me laissent souvent en admiration. Continuez ce bon travail.plt.setp
est un "matlab-ism", et une boucle explicite est probablement beaucoup plus pythonique. Être un matlab converti, moi-même, mesetp
semble naturel, mais pour chacun d'eux. L'un ou l'autre est tout à fait lisible, imoax.tick_params(axis='x', labelsize=8)
get_ticklabels
pas êtreget_major_ticks
Il existe en fait un moyen plus simple. Je viens de trouver:
Cela ne répond cependant qu'à la taille d'une
label
partie de votre question.la source
axis = 'x'
ouaxis = 'y'
pour modifier un seul des axesPour spécifier à la fois la taille de la police et la rotation en même temps, essayez ceci:
la source
Alternativement, vous pouvez simplement faire:
la source
la source
ax.xaxis.set_tick_params(labelsize=20)
Une autre alternative
J'ai deux tracés côte à côte et j'aimerais ajuster les étiquettes des graduations séparément.
Les solutions ci-dessus étaient proches mais elles ne fonctionnaient pas pour moi. J'ai trouvé ma solution sur cette page matplotlib .
Cela a fait l'affaire et était direct. Pour mon cas d'utilisation, c'était l'intrigue à droite qui devait être ajustée. Pour l'intrigue de gauche depuis que je créais de nouvelles étiquettes de graduation, j'ai pu ajuster la police en suivant le même processus que la définition des étiquettes.
c'est à dire
j'ai donc utilisé pour la bonne intrigue,
Une subtilité mineure ... Je sais ... mais j'espère que cela aide quelqu'un :)
Points bonus si quelqu'un sait comment ajuster la taille de police de l'étiquette d'ordre de grandeur.
la source
Dans les versions actuelles de Matplotlib, vous pouvez le faire
axis.set_xticklabels(labels, fontsize='small')
.la source
labels
trop. Il est préférable de modifier uniquement la taille de la police.Vous pouvez également modifier les paramètres d'affichage des étiquettes comme la taille de la police avec une ligne comme celle-ci:
la source
Pour les polices plus petites, j'utilise
ax1.set_xticklabels(xticklabels, fontsize=7)
et il fonctionne!
la source
Ce qui suit a fonctionné pour moi:
L'avantage de ce qui précède est que vous n'avez pas besoin de fournir
array
de donnéeslabels
et de travailler avecaxes
.la source