R 绘制两组数据的时间序列和回归线

R 绘制两组数据的时间序列和回归线,r,ggplot2,R,Ggplot2,我有来自不同年份的两个站点的数据(注意采样年份的差异)。样本如下: df<- data.frame( year= c(seq(1997,2016,1), seq(2001,2017,1)), site= c(rep("cr", 20),rep("ec", 17)), mean= sample(1:50,37)) 我想用这个图表来说明一些细节: 每个组(站点)的点和连接每个点的线将具有不同的颜色(黑色、红色) 每组(站点)的回归线将为

我有来自不同年份的两个站点的数据(注意采样年份的差异)。样本如下:

df<- data.frame( year= c(seq(1997,2016,1), seq(2001,2017,1)), 
             site= c(rep("cr", 20),rep("ec", 17)),
             mean= sample(1:50,37))
我想用这个图表来说明一些细节:

  • 每个组(
    站点
    )的点和连接每个点的线将具有不同的颜色(黑色、红色)
  • 每组(
    站点
    )的回归线将为虚线,并与上面指定的颜色相匹配
  • 回归线不应延伸至y轴,且应限于数据的长度 -点不需要是可见的。只有连接每个点的线才可见
  • 最好,虚线回归线不会显示阴影95%CI

如@kath所述,添加linetype=“虚线”将解决此问题。我还对代码做了一些小的修改:

ggplot(data = df, aes(x = year, y = mean, group= site, color = site))+
    geom_line() + 
    geom_point(size=0.5)+
    geom_smooth(method = "lm", se = FALSE, size= 0.5, linetype = "dashed")+
    scale_color_manual(values=c("#CC0000", "#000000"))+
    theme_minimal()+  
    scale_x_continuous("Year",limits = c(1997, 2020), breaks = 
                           seq(1995,2020,5)) +
    scale_y_continuous("Mean Monthly Abundance", limits = c(0, 1500), 
                       breaks=seq(0, 1500, by = 100)) +
    theme_bw()+
    theme(axis.line = element_line(colour = "black"),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          panel.background = element_blank()) 

应通过在
geom_smooth
零件中的
aes
调用外部写入
linetype=“虚线”
来修复错误。
ggplot(data = df, aes(x = year, y = mean, group= site, color = site))+
    geom_line() + 
    geom_point(size=0.5)+
    geom_smooth(method = "lm", se = FALSE, size= 0.5, linetype = "dashed")+
    scale_color_manual(values=c("#CC0000", "#000000"))+
    theme_minimal()+  
    scale_x_continuous("Year",limits = c(1997, 2020), breaks = 
                           seq(1995,2020,5)) +
    scale_y_continuous("Mean Monthly Abundance", limits = c(0, 1500), 
                       breaks=seq(0, 1500, by = 100)) +
    theme_bw()+
    theme(axis.line = element_line(colour = "black"),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          panel.background = element_blank())