2014-11-19 3 views
8

Sto usando factorplot(kind="bar").Come scalare l'asse y di Seaborn con un grafico a barre?

Come si ridimensiona l'asse y, ad esempio con scala di registro?

Ho provato ad armeggiare con gli assi della trama, ma questo ha sempre incasinato la trama della barra in un modo o nell'altro, quindi per favore prova prima la tua soluzione per assicurarti che funzioni davvero.

risposta

8

È possibile utilizzare i comandi Matplotlib dopo aver chiamato factorplot. Per esempio:

import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set(style="whitegrid") 

titanic = sns.load_dataset("titanic") 

g = sns.factorplot("class", "survived", "sex", 
        data=titanic, kind="bar", 
        size=6, palette="muted", legend=False) 
g.fig.get_axes()[0].set_yscale('log') 
plt.show() 

enter image description here

+0

non funziona. Hai provato? – user124114

+0

funziona per me, ho modificato il mio post per aggiungere un'immagine. Ho anche reso più generico usando il 'FacetGrid' restituito – Jules

+3

Questo funziona per me con' fig' => 'figure' – arokem

3

Considerando la tua domanda menziona barplot ho pensato di aggiungere una soluzione per questo tipo di grafico anche per quanto differisce dal factorplot sopra.

import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set(style="whitegrid") 

titanic = sns.load_dataset("titanic") 

g = sns.barplot(x="class", y="survived", hue="sex", 
       data=titanic, palette="muted") 
g.set_yscale('log') 

enter image description here

0

Se siete di fronte al problema della fuga bar sulla creazione di log-scala utilizzando le soluzioni precedenti, prova ad aggiungere log=True alla chiamata di funzione Seaborn invece. (Mi manca la reputazione di commentare le altre risposte).

Utilizzando sns.factorplot:

import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set(style="whitegrid") 

titanic = sns.load_dataset("titanic") 

g = sns.factorplot(x="class", y="survived", hue="sex", kind='bar', 
        data=titanic, palette="muted", log=True) 
g.ax.set_ylim(0.05, 1) 

Utilizzando sns.barplot:

import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set(style="whitegrid") 

titanic = sns.load_dataset("titanic") 

g = sns.barplot(x="class", y="survived", hue="sex", 
       data=titanic, palette="muted", log=True) 
g.set_ylim(0.05, 1)