2015-08-06 7 views
13

Ich versuche, ein Diagramm mit gedrehten X-Achsen-Etiketten anzuzeigen, aber das Diagramm wird nicht angezeigt.Drehen Sie Tickbezeichnungen für Seaborn Barplot

import seaborn as sns 
%matplotlib inline 

yellow='#FFB11E' 
by_school=sns.barplot(x ='Organization Name',y ='Score',data = combined.sort('Organization Name'),color=yellow,ci=None) 

An dieser Stelle ich das Bild sehen kann, aber nachdem ich die xticklabel gesetzt, ich das Bild sehe nicht mehr nur eine Objektreferenz. (Ich würde das Bild veröffentlichen, aber ich habe nicht genug Ruf :()

by_school.set_xticklabels('Organization Name',rotation=45) 

<matplotlib.axes._subplots.AxesSubplot at 0x3971a6a0> 

Eine ähnliche Frage hier gepostet wird. Rotate label text in seaborn factorplot aber die Lösung funktioniert nicht

+0

Drehen Sie das Etikett in der gleichen Notebookzelle, in der es erstellt wurde? Sie müssen – mbatchkarov

+0

Nein war ich nicht, aber jetzt, dass ich diesen Fehler bekomme: set_xticklabels() dauert mindestens 2 Argumente (1 gegeben) – Laurennmc

Antwort

18

Sie eine andere Methode aufrufen müssen, . nämlich .set_rotation für jede ticklable s da Sie bereits die ticklabels haben, nur um ihre Drehungen ändern:

for item in by_school.get_xticklabels(): 
    item.set_rotation(45) 

barplot gibt ein matplotlib.axes Objekt (Stand: 012.0.6.0), deshalb müssen Sie die Beschriftungen auf diese Weise drehen. In anderen Fällen, wenn das Verfahren ein FacetGrid Objekt zurückgibt, siehe Rotate label text in seaborn factorplot

+6

Könnte auch 'plt.setp (by_school.get_xticklabels(), rotation = 45) '' um sich eine Codezeile zu sparen :) – mwaskom

+1

Auch 'set_xticklabels' nimmt keine Positionen ein (anders als' plt.xticks', ein Beispiel für eine lästige Inkonsistenz in der State Machine/objektorientierten APIs), aber der ursprüngliche Code didn ' Das funktioniert, weil OP nur eine einzige Zeichenfolge und keine Liste von Labels übergeben hat. – mwaskom

+0

Hey Michael, danke, dass du darauf hingewiesen hast. Ich habe das nur von oben gemacht, ohne die Dokumentation zu überprüfen, was ich nicht hätte tun sollen ... –

1

Wenn Sie hierher kommen, um die Etiketten für eine seaborn.heatmap, die folgenden funktionieren sollte (basierend auf @Aman's answer bei Rotate label text in seaborn factorplot)

pandas_frame = pd.DataFrame(data, index=names, columns=names) 
heatmap = seaborn.heatmap(pandas_frame) 
loc, labels = plt.xticks() 
heatmap.set_xticklabels(labels, rotation=45) 
heatmap.set_yticklabels(labels[::-1], rotation=45) # reversed order for y 
2

Gebrauch zu drehen die folgende Codeanweisung:

by_school.set_xticklabels(by_school.get_xticklabels(), rotation=90)