0
我正准备在R的ggplot2中绘制一个带有误差线的熊猫数据框,这需要计算列的统计量。错误栏需要最小值(平均值 - 标准开发)和最大值(平均值+标准开发)。我得到这些使用GROUPBY/AGG:准备带有误差线的绘图的熊猫数据帧
import pandas
import numpy as np
df = pandas.DataFrame({"id": ["a", "b", "c", "d"],
"exp": [10, 20, 30, 40],
"res1": [11, 22, 35, 42],
"res2": [9, 19, 32, 40],
"res3": [10.5, 20.8, 34, 48]})
# melt dataframe
m = pandas.melt(df, id_vars=["id", "exp"])
# get mean/std
summary = m.groupby("exp").agg([np.mean, np.std])
# add min and max under "value"
summary[("value", "min")] = summary[("value", "mean")] - summary[("value", "std")]
summary[("value", "max")] = summary[("value", "mean")] + summary[("value", "std")]
然后有R绘制如下:
# plot with R
p = ggplot2.ggplot(m) + \
ggplot2.geom_point(aes_string(x="exp", y="value", colour="variable"), data=m)
ggplot2.geom_errorbar(aes_string(x="exp", y="mean", ymin="min", ymax="max"), data=summary)
有没有一种方法,以简化的“最小” /“最大”列中的计算,因为它是这种常见操作?是否需要创建单独的数据框(上面的“摘要”),还是有一种将相同信息放入原始融化数据框的优雅方法?
groupby返回一个分级索引的数据框,所以我把“mean”和“std”放在“value”下似乎太复杂了。
是否有一个相当于''mean.plot(yerr =错误,那种= '酒吧')''在ggplot? – user248237dfsf 2015-02-09 22:22:53
您是使用rpy2加载数据帧还是在将数据加载到R之前将数据帧保存为某种其他格式? – andrewwowens 2015-02-10 15:09:26
此外,这里是错误与ggplot2绘图后不错的帖子 - http://docs.ggplot2.org/0.9.3.1/geom_errorbar.html – andrewwowens 2015-02-20 22:06:00