2014-11-07 6 views
6

Aşağıdaki kod ile pandalar ve matplotlib kullanarak asimetrik hata barları ile bir dizi çizmek çalışıyorum:Pandalar neden asimetrik hata çubuğunun her iki tarafında aynı değerleri uygular?

d = {'high_delta': {1: 0.6, 
    2: 0.1, 
    3: 0.2, 
    4: 0.1, 
    5: 0.1, 
    6: 0.1, 
    7: 0.1, 
    8: 0.1, 
    9: 0.2, 
    10: 0.1}, 
'low_delta': {1: 0.2, 
    2: 0.1, 
    3: 0.1, 
    4: 0.1, 
    5: 0.1, 
    6: 0.1, 
    7: 0.1, 
    8: 0.1, 
    9: 0.1, 
    10: 0.4}, 
'p_hat': {1: 0.2, 
    2: 0.1, 
    3: 0.3, 
    4: 0.3, 
    5: 0.1, 
    6: 0.3, 
    7: 0.2, 
    8: 0.2, 
    9: 0.1, 
    10: 0.8}} 

df = pandas.DataFrame(d) 
df['p_hat'].plot(yerr=df[['low_delta', 'high_delta']].T.values) 
(df.p_hat + df.high_delta).plot(style='.') 
(df.p_hat - df.low_delta).plot(style='*') 

alt sınır her zaman ne beklenir maç gibi görünüyor, ama bunun yerine değerlerini ekleme Üst sınır, alt sınırdan gelen değerleri tekrar ekliyor gibi görünüyor.

Hatalar matplotlib'e nasıl aktarılır, böylece hata çubukları doğru şekilde oluşturulur?

+0

Bunu panda kullanarak tekrar yazabilir misiniz? – tacaswell

+0

Eğer df ['p_hat'] 'i değiştirirsem her şey iyi çalışır. Plot() 'plt.errorbar (df.index.values, df [' p_hat ']. Değerleri, yerr = df [[' low_delta ',' high_delta ']]. T.values), ama bu çalışmayı pandalarda yapmak ya da en azından neden olmadığını bilmek istiyorum. – 2daaa

+0

Pandalarla ilgili bir hata raporu koyarım, bu pandalarda bir hatadır – tacaswell

cevap

5

Kısa yanıt: Simetrik hata çubukları için 1x2xN biçimli hata listelerini kullanın.

F.ex. Geçerli örnekte bir dizi şekil 2XN içinde bunun birden fazla satır için birden hata çubukları yorumlamak istiyorum aynı şekilde verilen hata çubukları yorumlamak pandalar sonuçlanır Pandalar bir hata Şu anda ise

errors = [ f.index.values, df['p_hat'].values ] 
df['p_hat'].plot(yerr=[errors]) 

kullanmak bir DataFrame. Açıkça sadece 1 satır/seri çizdiğiniz için hata çubukları listesinin ilk elemanı kullanılır ve simetrik hatalar olarak yorumlanır.

bug pandalarda düzeltilene kadar, pFa'ları, Mx2xN biçimindeki hataları geçirerek, asimetrik hata çubuklarını kullanarak DataFrames üzerindeki asimetrik hata çubukları için beklenilen şekliyle "kandırmak" olabilir. Tam olarak 1x2xN biçimli bir liste kullanmalısınız, bu da basitçe f.ex. yerr=[ ... ]

İlgili konular