使用R中的ggplot2的平均分段的分类散点图

时间:2013-07-23 10:37:03

标签: r ggplot2 scatter-plot

我试图为3组绘制一个简单的散点图,覆盖一个段,表示每个组的平均值并标记这些组。 我设法得到一个带有误差条的散点图,但我只想要一个表示均值的区段。我似乎也无法让小组标记正确。

要获取摘要统计信息,我使用this page中的“summarySE”函数。

有没有更简单的方法来做到这一点,并获得一个段而不是一个点的平均值?

我真的很感谢你的帮助!

library(ggplot2)
library(plyr)

df <- data.frame(tt = rep(1:3, each = 40),
       val = round(rnorm(120, m = rep(c(4, 5, 7), each = 40))))

# After loading the summarySE function:

dfc <- summarySE(df, measurevar="val", groupvars="tt")


ggplot(dfc, aes(tt, val), main="Scatter plot with mean bars", 
      xlab="Groups", ylab="Values", names=c("Group1", "Group2", "Group3"))+
  geom_jitter(aes(tt, val), data = df, colour = I("red"), 
               position = position_jitter(width = 0.05)) +
  geom_point(size = 3) +
  geom_errorbar(aes(ymin=val-sd, ymax=val+sd), width = 0.01, size = 1)

2 个答案:

答案 0 :(得分:2)

您可以使用geom_crossbar()并使用val作为yyminymax值。使用scale_x_continuous(),您可以更改原始数据的x轴标签,或使用@agstudy解决方案更改原始数据,标签将自动显示。

ggplot()+
  geom_jitter(aes(tt, val), data = df, colour = I("red"), 
              position = position_jitter(width = 0.05)) +
  geom_crossbar(data=dfc,aes(x=tt,ymin=val, ymax=val,y=val,group=tt), width = 0.5)+
  scale_x_continuous(breaks=c(1,2,3),labels=c("Group1", "Group2", "Group3"))

enter image description here

答案 1 :(得分:1)

要获得组标签,您可以更改连续tt这样的因素:

dfc$tt <- factor(dfc$tt,labels=c("Group1", "Group2", "Group3"))

当然在致电summarySE并创建dfc之前。

并使用下面其他解决方案中提到的crossbar,您将获得:

enter image description here