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