【问题标题】:Plotting a data frame of error bars onto a data frame in matplotlib Python在matplotlib Python中将误差线的数据框绘制到数据框上
【发布时间】:2020-10-13 00:03:24
【问题描述】:

我有一个值如下的熊猫数据框 (df):

            0           1           2
0  100.000000  100.000000  100.000000
1    0.412497    0.668880  136.019498
2    5.144450   77.323610  163.496773
3   31.078457   78.151325  146.772621

我还有一个数据框 (deviation),其中每个值都有错误:

          0         1         2
0  0.083579  0.048520  0.082328
1  0.005855  0.005904  0.046494
2  0.009907  0.080799  0.083671
3  0.045831  0.075932  0.044581

我已经成功地按照我的意愿使用 matplotlib 绘制 df

但是,我正在努力将误差线放到此图表上。我的绘图代码目前如下:

drugCount = 3
df = pd.DataFrame(drug)
deviation = pd.DataFrame(deviation)
df.columns = list(string.ascii_uppercase[0:drugCount])
ax = df.T.plot(kind='bar', yerr=deviation, color=['C0', 'C3', 'C1', 'C2'])

plt.xlabel('Drug')
plt.ylabel('% Cell viability')
plt.legend(labels=['Control', 'High', 'Medium', 'Low'])
plt.title('Viability of HeLa cells against various drugs')

plt.show()

如您所见,我正在尝试将 deviation 数据帧传递给 yerr 标志,但它没有执行任何操作,并且出现错误:

/usr/local/lib/python3.8/site-packages/numpy/core/_asarray.py:83: UserWarning: Warning: converting a masked element to nan.
  return array(a, dtype, copy=False, order=order)

我在网上看过,但似乎没有多少人像我一样尝试添加这么多错误栏。我需要进行哪些更改才能使其正常工作?

【问题讨论】:

  • 既然不能指定单独的数据框,不如如下组合起来。df = pd.concat([df.T, deviation.T],axis=1)
  • @r-beginners 不错的建议,但我将如何在梳理后绘制数据?
  • 我尝试将它们结合起来,但还有一个根本性的问题。它的误差线太低而没有意义。此外,yerr=[val,val,val] 无法设置多个错误栏,所以我放弃了回答。

标签: python pandas dataframe matplotlib


【解决方案1】:

尝试将偏差列在列表中(乘以 100 以查看任何内容)

ax = df.T.plot(kind='bar', yerr=list(deviation.values*100) color=['C0', 'C3', 'C1', 'C2'])

【讨论】:

    猜你喜欢
    • 2016-06-04
    • 1970-01-01
    • 2020-08-23
    • 2016-01-14
    • 2014-09-12
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多