2

我正在尝试为 3 个组绘制一个简单的散点图,覆盖一个表示每个组平均值的段并标记这些组。我已经设法得到一个带有误差线的散点图,但我只想要一个指示平均值所在位置的段。我似乎也无法正确标记组标签。

要获取汇总统计信息,我正在使用此页面中的“summarySE”功能。[编辑:注意这个功能也在 Rmisc 包中提供]

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

我真的很感谢你的帮助!

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)
4

2 回答 2

2

您可以使用和geom_crossbar()使用valasy和值。您可以更改原始数据的 x 轴标签或使用@agstudy 解决方案更改原始数据,标签将自动出现。yminymaxscale_x_continuous()

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"))

在此处输入图像描述

于 2013-07-23T10:54:48.167 回答
1

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

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

当然在调用summarySE和创建之前dfc

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

在此处输入图像描述

于 2013-07-23T10:50:22.253 回答