Sto cercando di tracciare una serie con barre di errore asimmetriche utilizzando panda e matplotlib con il seguente codice:Perché i panda applicano gli stessi valori su entrambi i lati di una barra di errore asimmetrica?
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='*')
I limiti inferiori sembrano sempre di corrispondere a ciò che mi sarei aspettato, ma invece di aggiungere i valori sulla upper bound sembra aggiungere nuovamente i valori dal limite inferiore.
Come devono passare gli errori in matplotlib in modo che le barre di errore vengano visualizzate correttamente?
Puoi riscriverlo senza usare i panda? – tacaswell
Tutto funziona perfettamente se sostituisco 'df ['p_hat']. Plot()' con 'plt.errorbar (df.index.values, df ['p_hat']. Valori, yerr = df [['low_delta', ' high_delta ']]. T.values) ', ma mi piacerebbe farlo funzionare in panda o almeno sapere perché non lo fa. – 2daaa
Vorrei inserire un bug report con i panda in quanto si tratta di un bug nei panda – tacaswell