2015-05-21 2 views
10

Ich möchte ein Faktorplot in Seaborn plotten, aber manuell die Fehlerbalken anstelle von Seaborn berechnen sie.Seaborn Faktor Plot benutzerdefinierte Fehlerbalken

Ich habe einen Pandas Datenrahmen, die in etwa wie folgt aussieht:

 model output feature mean std 
0 first two  a 9.00 2.00 
1 first one  b 0.00 0.00 
2 first one  c 0.00 0.00 
3 first two  d 0.60 0.05 
... 
77 third four  a 0.30 0.02 
78 third four  b 0.30 0.02 
79 third four  c 0.10 0.01 

und ich bin zum Ausgeben eine Handlung, die in etwa wie folgt aussieht: seaborn bar plots

ich diesen Seaborn bin mit Befehlen zu erzeugen, die Handlung:

g = sns.factorplot(data=pltdf, x='feature', y='mean', kind='bar', 
        col='output', col_wrap=2, sharey=False, hue='model') 
g.set_xticklabels(rotation=90) 

aber ich kann nicht herausfinden, wie Seaborn Verwendung haben die ‚std‘ Spalte als die Fehlerbalken. Leider wäre es ziemlich zeitaufwendig, die Ausgabe für den fraglichen Datenrahmen neu zu berechnen.

Dies ist ein wenig ähnlich wie diese q: Plotting errors bars from dataframe using Seaborn FacetGrid

Außer, dass ich nicht herausfinden kann, wie es mit der matplotlib.pyplot.bar Funktion zur Arbeit kommen.

Gibt es eine Möglichkeit, dies mit Seaborn factorplot oder FacetGrid kombiniert mit Matplotlib zu tun?

Danke!

+0

ich denke, die verknüpfte Frage zu gehen wird der beste Weg zu sein. 'plt.bar' hat einen 'yerr'-Parameter, der helfen sollte. – mwaskom

+0

Dank @mwaskom, irgendwelche Tipps, wie man es zu gehen? Derzeit drosselt der folgende Code: 'g = sns.FacetGrid (data = pltdf, col = 'Ausgabe', col_wrap = 6, sharey = False, hue = 'model') g.map (plt.bar, 'feature', 'mean', yerr = 'std' ' – crackedegg

+0

Entschuldigung für den unordentlichen Code, kann nicht scheinen, um es schön im Kommentarbereich zu formatieren. – crackedegg

Antwort

4

Sie etwas tun könnte, wie

import seaborn as sns 
import matplotlib.pyplot as plt 
from scipy.stats import sem 
tips = sns.load_dataset("tips") 

tip_sumstats = (tips.groupby(["day", "sex", "smoker"]) 
        .total_bill 
        .agg(["mean", sem]) 
        .reset_index()) 

def errplot(x, y, yerr, **kwargs): 
    ax = plt.gca() 
    data = kwargs.pop("data") 
    data.plot(x=x, y=y, yerr=yerr, kind="bar", ax=ax, **kwargs) 

g = sns.FacetGrid(tip_sumstats, col="sex", row="smoker") 
g.map_dataframe(errplot, "day", "mean", "sem") 

enter image description here

+0

Stellar, und vielen Dank @mwaskom für Ihre Hilfe und das schöne Paket, das Sie zusammengestellt haben. Es ist wirklich unglaublich nützlich. – crackedegg

+1

@mwaskom Wie füge ich Fehlerbalken hinzu, während ich den Farbton beibehalte –