想要绘制分组数据的均值并添加置信限

Ang*_*gus 3 r ggplot2

我有需要计算和绘制均值和 95% 置信限的数据,但我不知道我的代码哪里出了问题。数据按年份分组,我想过使用 stat_smooth() 来绘制置信区间区域,但我就是无法实现。如果我尝试我得到一个错误:

错误:geom_path:如果您使用点线或虚线,颜色、大小和线型在这条线上必须保持不变

    library(ggplot2)
    library(dplyr) 
dat <- data.frame(cbind(rep(1:10,10),rnorm(100,600,sd=100),rnorm(100,400,sd=50),rnorm(100,700,sd=100)))
colnames(dat) <- c("year","S4","S5","S6")

    df<-data.frame(dat)
    ggplot(df)+
      geom_line(aes(x=year, y=mean(df$S4),colour=year)) +
      geom_line(aes(x=year, y=quantile(df$S4,0.95),colour=year),linetype="dotted") +
      geom_line(aes(x=year, y=quantile(df$S4,0.05),colour=year),linetype="dotted") 
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 6

你能用stat_summary

ggplot(df, aes(x = year, y = S4)) +
  stat_summary(geom = "line", fun = mean, linetype = "solid") +
  stat_summary(geom = "ribbon", fun.data= mean_cl_normal, fun.args = list(conf.int=0.95), alpha=.1)
Run Code Online (Sandbox Code Playgroud)

阴谋

均值和 95% CI 的图

编辑:

对于多个变量/行,建议首先使用“长”格式放置数据pivot_longer,然后绘制。也许可以为不同的变量使用不同的颜色。

df <- dat %>%
  pivot_longer(cols = c(S4, S5, S6), names_to = "variable", values_to = "value")

ggplot(df, aes(x = year, y = value, color = variable)) +
  stat_summary(geom = "line", fun = mean, linetype = "solid") +
  stat_summary(geom = "ribbon", fun.data= mean_cl_normal, fun.args = list(conf.int=0.95), alpha=.1)
Run Code Online (Sandbox Code Playgroud)