2015-01-21 102 views
2

我需要在ggplot中將線圖的兩個部分連接在一起,但我不知道正確的代碼。R ggplot2:將線圖的兩個部分連接在一起

數據集:

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

enter image description here

基本上,我希望這是

  1. 1999.5與2000.5之間的差距,但不包括1996與1997與1997.5與1998之間的差距。
  2. 1996-97年差距線的顏色應與1996年和1997年之前的截面顏色相同.5-98差距應該相同顏色爲1998年以後的部分。

我需要使用什麼代碼才能實現此目的?或者,我是否可以在數據表中添加一些東西使R認爲那裏有數據?

DATA

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 
)) 
+0

問題不清楚,因爲缺口邏輯沒有明確定義。數據集也有點矛盾你所描述的。 – Vlo 2015-01-21 05:26:50

+0

這種方法很有效,但很難看,但也許會有一些進展:想法是使用重複的「geom_line」調用來覆蓋不同顏色的線段。 nmmaps $ tag < - cut(nmmaps $ Year,c(0,1997,1997.5,Inf))' 'ggplot(nmmaps,aes(Year,d15N2,color = factor(Life_stage2)))+ geom_line =「#F8766D」)+ geom_line()+ geom_line(aes(group = tag))' – user20650 2015-01-21 05:49:13

回答

1

它通常是最好的更改數據,所以就很容易積。您現在可以離開繪圖命令,只需將兩行添加到數據中即可。

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