Ruota il testo dell’etichetta in Factorplot marino

Ho un semplice patternplot

import seaborn as sns g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2, linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2]) 

inserisci la descrizione dell'immagine qui

Il problema è che le etichette x corrono tutte insieme, rendendole illeggibili. Come ruoti il ​​testo in modo che le etichette siano leggibili?

Aman è corretto che tu possa usare normali comandi matplotlib, ma questo è anche incorporato in FacetGrid :

 import seaborn as sns planets = sns.load_dataset("planets") g = sns.factorplot("year", data=planets, aspect=1.5, kind="count", color="b") g.set_xticklabels(rotation=30) 

inserisci la descrizione dell'immagine qui

Ci sono alcuni commenti e un’altra risposta sostenendo che questo “non funziona”, tuttavia, chiunque può eseguire il codice come scritto qui e vedere che funziona. L’altra risposta non fornisce un esempio riproducibile di ciò che non funziona, rendendo molto difficile l’indirizzamento, ma la mia ipotesi è che le persone stiano cercando di applicare questa soluzione all’output di funzioni che restituiscono un object Axes invece di una Facet Grid . Si tratta di cose diverse, e il metodo Axes.set_xticklabels() richiede infatti un elenco di etichette e non può semplicemente modificare le proprietà delle etichette esistenti sugli Axes . La lezione è che è importante prestare attenzione al tipo di oggetti con cui si lavora.

Ho avuto un problema con la risposta di @mwaskorn, precisamente quella

 g.set_xticklabels(rotation=30) 

fallisce, perché questo richiede anche le etichette. Un po ‘più facile della risposta di @Aman è solo aggiungere

 plt.xticks(rotation=45) 

Questo è ancora un object matplotlib. Prova questo:

 #  locs, labels = plt.xticks() plt.setp(labels, rotation=45) 

Se qualcuno si chiede come farlo per i CorrGrids clustermap (parte di un dato esempio seaborn):

 import seaborn as sns import matplotlib.pyplot as plt sns.set(context="paper", font="monospace") # Load the datset of correlations between cortical brain networks df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0) corrmat = df.corr() # Set up the matplotlib figure f, ax = plt.subplots(figsize=(12, 9)) # Draw the heatmap using seaborn g=sns.clustermap(corrmat, vmax=.8, square=True) rotation = 90 for i, ax in enumerate(g.fig.axes): ## getting all axes of the fig object ax.set_xticklabels(ax.get_xticklabels(), rotation = rotation) g.fig.show() 

Per seaborn.heatmap , puoi ruotarli usando (basato sulla risposta di @ Aman )

 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 

Cosa ha funzionato per me:

 planets = sns.load_dataset("planets") g = sns.factorplot("year", data=planets, aspect=1.5,kind="count", color="b") g.set_xticklabels(labels = planets["year"].value_counts().index.tolist(),rotation=30)