2016-07-14 8 views
1

ich eine factorplot, die ich aus einer Übersichtstabelle generiert haben, eher als Rohdaten:einfache Fehlerbalken zu Seaborn Hinzufügen factorplot

http://dsh.re/db165

Verwendung des folgenden Codes:

sns.factorplot(col="followup", y="probability", hue="next intervention", x="age", 
       data=table_flat[table_flat['next intervention']!='none'], 
       facet_kws={'ylim':(0,0.6)}) 

Aufgetragen Hier sind die Mittelwerte aus der Übersichtstabelle, aber ich möchte auch das glaubwürdige Intervall darstellen, dessen obere und untere Grenzen in zwei anderen Spalten angegeben sind. Die Tabelle sieht wie folgt aus:

http://dsh.re/0bf74

Gibt es eine Möglichkeit, vielleicht die FacetGrid Verwendung von factorplot von Anheften an den Fehlerbalken auf die Punkte zurück?

+0

Sicher, verwenden 'plt.errorbar' – mwaskom

+0

Ich habe folgendes versucht: 'g.map_dataframe (plt.errorbar, x =" followup (Monate) ", y =" Wahrscheinlichkeit ", yerr = 'sd')' wobei g das 'FacetGrid' ist, aber nichts ist der Handlung hinzugefügt. –

+1

Verwenden Sie Args, nicht Kwargs – mwaskom

Antwort

1

Sie können plt.errorbar-FacetGrid.map passieren, aber es erfordert eine kleine Wrapper-Funktion, die Argumente richtig (und ausdrücklich das Bestehen der Kategorie Reihenfolge) zu formatieren:

import numpy as np 
from scipy import stats 
import seaborn as sns 
import matplotlib.pyplot as plt 

# Reformat the tips dataset to your style 
tips = sns.load_dataset("tips") 
tips_agg = (tips.groupby(["day", "smoker"]) 
       .total_bill.agg([np.mean, stats.sem]) 
       .reset_index()) 
tips_agg["low"] = tips_agg["mean"] - tips_agg["sem"] 
tips_agg["high"] = tips_agg["mean"] + tips_agg["sem"] 

# Define a wrapper function for plt.errorbar 
def errorbar(x, y, low, high, order, color, **kws): 
    xnum = [order.index(x_i) for x_i in x] 
    plt.errorbar(xnum, y, (y - low, high - y), color=color) 

# Draw the plot 
g = sns.factorplot(x="day", y="mean", col="smoker", data=tips_agg) 
order = sns.utils.categorical_order(tips_agg["day"]) 
g.map(errorbar, "day", "mean", "low", "high", order=order) 

enter image description here

+0

Das ist hilfreich, danke! –