Matplotlib 为什么熊猫在不对称错误条的两侧应用相同的值?

Matplotlib 为什么熊猫在不对称错误条的两侧应用相同的值?,matplotlib,pandas,Matplotlib,Pandas,我尝试使用pandas和matplotlib绘制一个带有不对称错误条的序列,代码如下: 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

我尝试使用pandas和matplotlib绘制一个带有不对称错误条的序列,代码如下:

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='*')
下限似乎总是与我所期望的匹配,但它似乎不是在上限上添加值,而是在再次添加来自下限的值


如何将错误传递到matplotlib中,以便正确呈现错误条?

简短回答:对非对称错误条使用1xn形状的错误列表

F.ex。在当前示例中,使用

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

目前,Pandas中存在一个错误,导致Pandas对一个系列的2xN形状中给出的错误条进行解释,就像它对一个数据帧的多行解释多个错误条一样。由于您显然只绘制了1行/系列,因此仅使用了错误栏列表的第一个元素,并将其解释为对称错误


在pandas中修复错误之前,可以“欺骗”pandas使用非对称错误条,方法是传递Mx2xN形状的错误,这是数据帧上非对称错误条的预期形状。准确地说,您必须使用1x2n形状的列表,只需调用f.ex即可创建该列表
yerr=[…]

你能不使用pandas重新编写吗?如果我用plt.errorbar(df.index.values,df['p_-hat'].values,yerr=df['low_-delta',high_-delta'].T.values)替换
df['p_-hat'].plot()
,但是我想在熊猫身上做这项工作,或者至少知道为什么不行。我会在熊猫身上写一份错误报告,因为这是熊猫身上的一个错误。根据,熊猫似乎不支持这种类型的操作,尽管。无法分析序列的不对称错误条。报告的错误:。