2015-05-21 23 views
10

Tôi muốn vẽ một yếu tố trong seaborn nhưng tự cung cấp các thanh lỗi thay vì tính toán bẩm sinh.Các thanh lỗi tùy chỉnh âm mưu của Seaborn

Tôi có một dataframe gấu trúc trông gần như thế này:

 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 

và tôi xuất ra một âm mưu trông gần như thế này: seaborn bar plots

Tôi đang sử dụng sanh ở biển này lệnh để tạo ra cốt truyện:

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) 

Tuy nhiên, tôi không thể tìm hiểu cách sử dụng cột 'std' làm thanh lỗi. Thật không may, sẽ tốn khá nhiều thời gian để tính lại đầu ra cho khung dữ liệu đang được đề cập đến.

Đây là một chút tương tự như q này: Plotting errors bars from dataframe using Seaborn FacetGrid

Trừ tôi không thể tìm ra cách để làm cho nó làm việc với các chức năng matplotlib.pyplot.bar.

Có cách nào để thực hiện việc này bằng seaborn factorplot hoặc FacetGrid kết hợp với matplotlib?

Cảm ơn!

+0

Tôi nghĩ câu hỏi liên quan sẽ là cách tốt nhất để đi. 'plt.bar' có tham số' yerr' sẽ trợ giúp. – mwaskom

+0

Cảm ơn @ mansaskom, mọi mẹo về cách làm cho nó đi? hiện tại các cuộn cảm mã sau: 'g = sns.FacetGrid (dữ liệu = pltdf, col = 'output', col_wrap = 6, chia sẻ = False, hue = 'model') g.map (plt.bar, 'feature', 'mean', yerr = 'std') ' – crackedegg

+0

xin lỗi vì mã lộn xộn, dường như không thể làm cho nó có định dạng độc đáo trong phần bình luận. – crackedegg

Trả lời

4

Bạn có thể làm một cái gì đó giống như

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

Sao, và cảm ơn bạn rất nhiều @ mkvaskom vì sự giúp đỡ của bạn, và các gói đáng yêu bạn đã đặt lại với nhau. Nó thực sự vô cùng hữu ích. – crackedegg

+1

@mwaskom Làm cách nào để thêm thanh lỗi trong khi vẫn giữ màu –

Các vấn đề liên quan