2015-05-21 15 views
10

Denizde doğuştan bir faktör çizmek istiyorum ama denizatçılığını hesaplamak yerine hata çubuklarını el ile vermek istiyorum.Seaborn factor plot özel hata çubukları

 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 

ve böyle kabaca şöyle bir komplo çıkışı ediyorum:

böyle kabaca şöyle bir pandalar dataframe var ben bu Seaborn kullanıyorum seaborn bar plots

oluşturmak için komutları arsa:

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) 

Ancak, hata çubukları olarak 'std' sütunu Seaborn kullanımı var anlamaya olamaz. Ne yazık ki, söz konusu veri çerçevesi için çıktıyı yeniden hesaplamak oldukça zaman alacaktır.

Bu, bu q için biraz benzer: I hariç Plotting errors bars from dataframe using Seaborn FacetGrid

o matplotlib.pyplot.bar fonksiyonu ile çalışmak için anlamaya olamaz.

Matplotlib ile kombine edilmiş factorplot veya FacetGrid numaralı deniz kuşlarını kullanmanın bir yolu var mı?

Teşekkürler!

+0

gibi bir şey yapabileceğini ben bağlantılı soru gitmek için en iyi yol olacağını düşünüyorum. "plt.bar", yardımcı olması gereken bir 'yerr' parametresine sahiptir. – mwaskom

+0

Teşekkürler @mwaskom, nasıl gidilir? Şu anda aşağıdaki kod chokes: 'g = sns.FacetGrid (veri = pltdf, col = 'çıktı', col_wrap = 6, sharey = Yanlış, renk = 'model') g.map (plt.bar, 'feature', 'mean', yerr = 'std') ' – crackedegg

+0

dağınık kod için özür dilerim, yorum bölümünde güzel biçimlendirmek için görünmüyor olabilir. – crackedegg

cevap

4

Sen

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 ve yardımlarınız için Mwaskom'a ve bir araya getirdiğiniz güzel pakete çok teşekkür ederim. Gerçekten inanılmaz derecede faydalı. – crackedegg

+1

@mwaskom Ton tutarken hata çubuklarını nasıl ekleyebilirim –