R ggplot2:将折线图的两个部分连接在一起

R ggplot2: join two sections of a line graph together

我需要在 ggplot 中将折线图的两个部分连接在一起,但我不知道正确的代码。

数据集:

Life_stage2 Year    d15N2
A   2002.5  1
A   2002    2
A   2001.5  4
A   2001    6
A   2000.5  5
A   2000    NA
A   1999.5  9
A   1999    2
A   1998.5  3
A   1998    4
B   1997.5  7
B   1997    8
C   1996    5
C   1995    6
C   1994.5  7
C   1994    2

我的代码:

nmmaps<-read.csv("testing.csv", as.is=T)

ggplot(nmmaps, aes(Year, d15N2, colour=factor(Life_stage2), group=Life_stage2)) +
                   geom_point() +
                   geom_line()

基本上,我希望有

  1. 1999.5 和 2000.5 之间存在差距,但 1996 和 1997 以及 1997.5 和 1998 之间没有差距。
  2. 1996-97 年差距线的颜色应与 1996 年之前的部分颜色相同,1997.5-98 年差距线的颜色应与 1998 年之后的部分颜色相同。

我需要使用什么代码才能做到这一点?或者,我可以在数据 sheet 中添加一些内容,让 R 认为那里有数据吗?

数据

nmmaps <- 
structure(list(Life_stage2 = structure(c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("A", 
"B", "C"), class = "factor"), Year = c(2002.5, 2002, 2001.5, 
2001, 2000.5, 2000, 1999.5, 1999, 1998.5, 1998, 1997.5, 1997, 
1996, 1995, 1994.5, 1994), d15N2 = c(1L, 2L, 4L, 6L, 5L, NA, 
9L, 2L, 3L, 4L, 7L, 8L, 5L, 6L, 7L, 2L)), .Names = c("Life_stage2", 
"Year", "d15N2"), class = "data.frame", row.names = c(NA, -16L
))

通常最好更改数据,这样绘制起来就容易了。您可以保留现在的绘图命令,只需向数据添加两行即可。

df <- rbind(data.frame(Life_stage2 = c('C', 'A'), 
                       Year = c(1997, 1997.5), 
                       d15N2 = c(8, 7)), 
            nmmaps)

ggplot(df, aes(Year, d15N2, colour=Life_stage2)) +
  geom_point() +
  geom_line()