Tengo un diagrama de factor simple
import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2,
linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])
El problema es que todas las etiquetas x se unen, lo que las hace ilegibles. ¿Cómo gira el texto para que las etiquetas sean legibles?
matplotlib
seaborn
dan
fuente
fuente
import matplotlib.pylab as plt
.plt.xticks(rotation=45)
Respuestas:
Aman tiene razón en que puede usar los comandos normales de matplotlib, pero esto también está integrado en
FacetGrid
:Hay algunos comentarios y otra respuesta afirmando que "no funciona", sin embargo, cualquiera puede ejecutar el código como está escrito aquí y ver que funciona. La otra respuesta no proporciona un ejemplo reproducible de lo que no está funcionando, lo que hace que sea muy difícil abordarlo, pero supongo que las personas están tratando de aplicar esta solución a la salida de funciones que devuelven un
Axes
objeto en lugar de aFacet Grid
. Estas son cosas diferentes, y elAxes.set_xticklabels()
método requiere una lista de etiquetas y no puede simplemente cambiar las propiedades de las etiquetas existentes en elAxes
. La lección es que es importante prestar atención a qué tipo de objetos está trabajando.fuente
ha="right"
para alinear las etiquetas del eje x con sus marcas de verificación. ieg.set_xticklabels([label1, label2], rotation=30, ha='right')
g.set_xticklabels(rotation=30)
ag.set_xticklabels(g.get_xticklabels(), rotation=30)
gracias a esta respuesta: stackoverflow.com/a/39689464/1870832FacetGrid
objeto, algunos devuelven unAxes
objeto Matplotlib . Para el primero, no establecer las etiquetas funcionará, para el segundo, no. Puede ver cuáles son losFacetGrid
objetos mirando la documentación: seaborn.pydata.org/api.html . Por ejemplo, si usag = sns.catplot()
esto funcionará, perosns.barplot()
no lo hará porque devuelve unAxes
objeto.Tuve un problema con la respuesta de @mwaskorn, a saber, que
falla, porque esto también requiere las etiquetas. Un poco más fácil que la respuesta de @Aman es simplemente agregar
fuente
g.set_xticklabels(g.get_xticklabels(), rotation=30)
. Asignarlo a una variable si desea suprimir la salida.plt.xtics
funcionó para mí.Este sigue siendo un objeto matplotlib. Prueba esto:
fuente
Si alguien se pregunta cómo hacer esto para clustermap CorrGrids (parte de un ejemplo marino dado):
fuente
También puede usar
plt.setp
lo siguiente:para rotar las etiquetas 90 grados.
fuente
Para a
seaborn.heatmap
, puede rotarlos usando (según la respuesta de @ Aman )fuente
Cualquier parcela nacida con el apoyo de facetgrid no funcionará (por ejemplo, catplot)
sin embargo, barplot, countplot, etc. funcionarán ya que no son compatibles con facetgrid. A continuación funcionará para ellos.
Además, en caso de que tenga 2 gráficos superpuestos uno encima del otro, intente set_xticklabels en el gráfico que lo admite.
fuente