2015-01-21 2 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 년과 2000 년 사이의 격차, 1996 년과 1997 년, 1997 년 5 월과 1998 년 사이의 격차가 없음.
  2. 1996-97 격차의 줄 색깔은 1996 년과 1997 년 이전의 줄과 같은 색이어야한다. 색상은 1998 년 이후 섹션으로 제공됩니다.

이 작업을 수행하려면 어떤 코드를 사용해야합니까? 또는 데이터 시트에 무언가를 추가하여 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 
)) 
+0

갭 논리가 잘 정의되어 있지 않아서 질문이 명확하지 않습니다. 데이터 집합은 또한 사용자가 설명하는 내용과 다소 모순됩니다. – Vlo

+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

답변

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