连接意味着在 ggplot2 中使用横杆

LDT*_*LDT 4 r ggplot2 dplyr tidyverse

我有一个看起来像这样的数据框

presence = rep(c("yes","no"),each=3,2)
students = sample(seq(0,100,by=10), 12, replace = TRUE)
year = rep(c("2015","2016"),each=2,6)

data = data.frame(presence, students, year)
Run Code Online (Sandbox Code Playgroud)

我像这样绘制我的数据

ggplot(data, aes(as.factor(presence), students, color=factor(year))) +
  geom_jitter(size=4, alpha=0.4, shape=16,position = position_jitterdodge()) +
  stat_summary(
    aes(color = year),
    fun=mean, 
    fun.min = function(x) mean(x) - sd(x), 
    fun.max = function(x) mean(x) + sd(x),
    geom = "pointrange",  size = 0.4,
    position = position_dodge(0.8)
  )  +
  stat_summary(fun = mean, geom="line")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我真正在努力做的是找到一种方法将红色的点(平均值)和蓝色的点与一条线连接起来

除了 geom_segment 之外,还有其他方法可以让我的情节看起来像这样吗?

在此处输入图片说明

Stu*_*olf 5

我想你stat_summary()geom="line"and做另一个group = year,虽然我认为阅读图表有点困难:

set.seed(12345)

presence = rep(c("yes","no"),each=3,2)
students = sample(seq(0,100,by=10), 12, replace = TRUE)
year = rep(c("2015","2016"),each=2,6)

data = data.frame(presence, students, year)

g = ggplot(data, aes(as.factor(presence), students, color=factor(year))) +
  geom_jitter(size=4, alpha=0.4, shape=16,position = position_jitterdodge()) +
  stat_summary(
    aes(color = year),
    fun=mean, 
    fun.min = function(x) mean(x) - sd(x), 
    fun.max = function(x) mean(x) + sd(x),
    geom = "pointrange",  size = 0.4,
    position = position_dodge(0.8)
  )  +
  stat_summary(fun = mean, geom="line")

g + stat_summary(aes(group = year),geom="line",
position=position_dodge2(0.8),fun="mean")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明