Mam prosty wykres
import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2,
linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])
Problem polega na tym, że wszystkie etykiety x biegną razem, przez co są nieczytelne. Jak obrócić tekst, aby etykiety były czytelne?
matplotlib
seaborn
dan
źródło
źródło
import matplotlib.pylab as plt
.plt.xticks(rotation=45)
Odpowiedzi:
Aman ma rację, że możesz używać normalnych poleceń matplotlib, ale jest to również wbudowane w
FacetGrid
:Jest kilka komentarzy i inna odpowiedź twierdząca, że to „nie działa”, jednak każdy może uruchomić kod tak, jak tu napisano i zobaczyć, że działa. Druga odpowiedź nie daje powtarzalne przykład tego, co nie działa, co jest bardzo trudne do adresu, ale wydaje mi się, że ludzie starają się zastosować to rozwiązanie na wyjście funkcji, które zwracają się
Axes
obiekt zamiastFacet Grid
. Są to różne rzeczy, aAxes.set_xticklabels()
metoda rzeczywiście wymaga listy etykiet i nie może po prostu zmienić właściwości istniejących etykiet w plikuAxes
. Lekcja jest taka, że ważne jest, aby zwracać uwagę na rodzaj obiektów, z którymi pracujesz.źródło
ha="right"
aby wyśrodkować, wyrównać etykiety osi X do ich znaczników. tj.g.set_xticklabels([label1, label2], rotation=30, ha='right')
g.set_xticklabels(rotation=30)
sięg.set_xticklabels(g.get_xticklabels(), rotation=30)
dzięki tej odpowiedzi: stackoverflow.com/a/39689464/1870832FacetGrid
obiekt, inne zwracająAxes
obiekt Matplotlib . W pierwszym przypadku nie ustawianie etykiet będzie działać, w drugim nie. Możesz zobaczyć, które toFacetGrid
obiekty, przeglądając dokumentację: seaborn.pydata.org/api.html . Na przykład, jeśli używaszg = sns.catplot()
tego, zadziała, alesns.barplot()
nie zadziała, ponieważ zwracaAxes
obiekt.Miałem problem z odpowiedzią @mwaskorn, a mianowicie
nie udaje się, ponieważ wymaga to również etykiet. Nieco łatwiej niż odpowiedzią @Aman jest po prostu dodać
źródło
g.set_xticklabels(g.get_xticklabels(), rotation=30)
. Przypisz go do zmiennej, jeśli chcesz ukryć dane wyjściowe.plt.xtics
zadziałało dla mnie.To wciąż jest obiekt matplotlib. Spróbuj tego:
źródło
Jeśli ktoś się zastanawia, jak to zrobić dla clustermap CorrGrids (fragment podanego przykładu z morskim):
źródło
Możesz również użyć
plt.setp
w następujący sposób:obrócić etykiety o 90 stopni.
źródło
W przypadku a
seaborn.heatmap
, możesz je obracać za pomocą (na podstawie odpowiedzi @ Aman )źródło
Żadne działki z roślinami morskimi obsługiwane przez facetgrid nie będą działać (np. Catplot)
jednak barplot, countplot itp. będą działać, ponieważ nie są obsługiwane przez facetgrid. Poniżej będzie działać dla nich.
Ponadto, jeśli masz 2 wykresy nałożone jeden na drugi, wypróbuj set_xticklabels na wykresie, który to obsługuje.
źródło