J'ai un diagramme factoriel simple
import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2,
linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])
Le problème est que les étiquettes x fonctionnent toutes ensemble, ce qui les rend illisibles. Comment faire pivoter le texte pour que les étiquettes soient lisibles?
import matplotlib.pylab as plt
.plt.xticks(rotation=45)
Réponses:
Aman a raison de dire que vous pouvez utiliser les commandes matplotlib normales, mais cela est également intégré dans
FacetGrid
:Il y a quelques commentaires et une autre réponse affirmant que cela "ne fonctionne pas", cependant, n'importe qui peut exécuter le code tel qu'il est écrit ici et voir qu'il fonctionne. L'autre réponse ne fournit pas un exemple reproductible de ce qui ne fonctionne pas, ce qui le rend très difficile à résoudre, mais je suppose que les gens essaient d'appliquer cette solution à la sortie de fonctions qui renvoient un
Axes
objet au lieu d'unFacet Grid
. Ce sont des choses différentes, et laAxes.set_xticklabels()
méthode nécessite en effet une liste d'étiquettes et ne peut pas simplement modifier les propriétés des étiquettes existantes sur leAxes
. La leçon est qu'il est important de prêter attention au type d'objets avec lesquels vous travaillez.la source
ha="right"
pour centrer les étiquettes de l'axe X sur leurs graduations. ieg.set_xticklabels([label1, label2], rotation=30, ha='right')
g.set_xticklabels(rotation=30)
àg.set_xticklabels(g.get_xticklabels(), rotation=30)
grâce à cette réponse: stackoverflow.com/a/39689464/1870832FacetGrid
objet, d'autres unAxes
objet Matplotlib . Pour le premier, ne pas définir les étiquettes fonctionnera, pour le second, ce ne sera pas le cas. Vous pouvez voir quels sont lesFacetGrid
objets en consultant la documentation: seaborn.pydata.org/api.html . Par exemple, si vous l'utilisez,g = sns.catplot()
cela fonctionnera, maissns.barplot()
pas car il renvoie unAxes
objet.J'ai eu un problème avec la réponse de @mwaskorn, à savoir que
échoue, car cela nécessite également les étiquettes. Un peu plus facile que la réponse de @Aman est simplement d'ajouter
la source
g.set_xticklabels(g.get_xticklabels(), rotation=30)
. Affectez-le à une variable si vous souhaitez supprimer la sortie.plt.xtics
fonctionné pour moi.C'est toujours un objet matplotlib. Essaye ça:
la source
Si quelqu'un se demande comment faire cela pour Clustermap CorrGrids (partie d'un exemple Seaborn donné):
la source
Vous pouvez également utiliser
plt.setp
comme suit:pour faire pivoter les étiquettes de 90 degrés.
la source
Pour un
seaborn.heatmap
, vous pouvez les faire pivoter en utilisant (en fonction de la réponse de @ Aman )la source
Toutes les parcelles Seaborn supportées par facetgrid ne fonctionneront pas avec (par exemple, catplot)
cependant barplot, countplot, etc. fonctionneront car ils ne sont pas pris en charge par facetgrid. Ci-dessous fonctionnera pour eux.
De plus, si vous avez 2 graphiques superposés l'un sur l'autre, essayez set_xticklabels sur le graphique qui le prend en charge.
la source