java数据叠加的和_将原始数据叠加到geom_bar上

我的数据框安排如下:

condition,treatment,value

A , one , 2

A , one , 1

A , two , 4

A , two , 2

...

D , two , 3

我用ggplot2制作了一个如下所示的分组条形图:

28d0d2fb-8563-4487-af16-72f71eeac88d.png

条形按“条件”分组,颜色表示“处理” . 条形高度是每个条件/处理对的值的平均值 . 我通过创建一个新的数据框来实现这一点,该数据框包含构成每个组的所有点的均值和标准误差(对于误差线) .

我想要做的是叠加原始抖动数据以生成此框图的条形图版本:http://docs.ggplot2.org/0.9.3.1/geom_boxplot-6.png [我意识到盒子图可能会更好,但我的双手被束缚,因为客户端病态附加到栏图]

我已经尝试将geom_point对象添加到我的绘图中并为其提供原始数据(而不是用于制作条形图的聚合方法) . 这种方法有效,但它会在错误的x轴位置绘制原始值 . 它们出现在红色和灰色条连接的点上,而不是在相应条的中心 . 所以我的情节看起来像这样:

d09bb083-c839-41a8-b6c1-b8f300a1db46.png

我无法弄清楚如何将点移动固定量然后抖动它们以使它们在正确的条上居中 . 谁知道?或许,是否有更好的方法来实现我想要做的事情?

以下是一个显示我遇到的问题的最小示例:

#Make some fake data

ex=data.frame(cond=rep(c('a','b','c','d'),each=8),

treat=rep(rep(c('one','two'),4),each=4),

value=rnorm(32) + rep(c(3,1,4,2),each=4) )

#Calculate the mean and SD of each condition/treatment pair

agg=aggregate(value~cond*treat, data=ex, FUN="mean") #mean

agg$sd=aggregate(value~cond*treat, data=ex, FUN="sd")$value #add the SD

dodge

limits

p

#Plot, attempting to overlay the raw data

print(

p + geom_bar(position=dodge, stat="identity") +

geom_errorbar(limits, position=dodge, width=0.25) +

geom_point(data= ex[ex$treat=='one',], colour="green", size=3) +

geom_point(data= ex[ex$treat=='two',], colour="pink", size=3)

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值