2015-08-06 13 views
13

Sto tentando di visualizzare un grafico con le etichette dell'asse x ruotato, ma il grafico non viene visualizzato.Rotazione delle etichette di spunta per il baratto di pesce marino

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) 

A questo punto posso vedere l'immagine, ma dopo che ho impostato il xticklabel, non vedere l'immagine più solo un riferimento all'oggetto. (Vorrei inviare l'immagine, ma non fare abbastanza reputazione :()

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

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

Una domanda simile è pubblicato qui:. Rotate label text in seaborn factorplot ma la soluzione non sta funzionando

+0

Stai ruotando l'etichetta nella stessa cella del notebook che è stata creata? Devi essere – mbatchkarov

+0

No, non lo ero, ma ora sto ricevendo questo errore: set_xticklabels() richiede almeno 2 argomenti (1 dato) – Laurennmc

risposta

18

Hai bisogno di una chiamata di metodo diverso, . cioè .set_rotation per ogni ticklable s Dal momento che si dispone già delle ticklabels, basta cambiare le loro rotazioni:

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

barplot restituisce un oggetto matplotlib.axes (a partire da 012.0.6.0), quindi è necessario ruotare le etichette in questo modo. In altri casi, quando il metodo restituisce un oggetto FacetGrid, fare riferimento a Rotate label text in seaborn factorplot

+6

Potrebbe anche fare 'plt.setp (by_school.get_xticklabels(), rotation = 45) 'per salvare te stesso una riga di codice :) – mwaskom

+1

Anche' set_xticklabels' non assume posizioni (a differenza di 'plt.xticks', un esempio di fastidiosa incoerenza nelle API di stato/object oriented) ma il codice originale non lo ha fatto lavoro perché OP stava passando una singola stringa non un elenco di etichette. – mwaskom

+0

Hey Michael, grazie per avermelo fatto notare. L'ho appena tirato fuori dalla cima della testa senza controllare la documentazione, cosa che non avrei dovuto fare ... –

1

Se venite qui per ruotare le etichette per un seaborn.heatmap, il seguente dovrebbe funzionare (sulla base di @Aman's answer a 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

Usa la seguente dichiarazione di codice:

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