2013-09-29 5 views
2

음모를 꾸미려고하는 데이터가 있습니다. 나는 1880 ~ 2012 년 사이의 여러 변수를 가지고있다. 나는 일년에 한 번씩 관찰합니다. 그러나 때로는 변수가 여러 해 동안 관찰하지 못하는 경우가 있습니다. 예를 들어, 1880-1888 년에 관측되었지만 1889-1955 년이 아닌 1956-2012 년이 될 수 있습니다. 나는 ggplot2 + geom_line에 잃어버린 해 (1889-1955)가 없으면 좋겠다. 그러나 그것은 1888 년과 1956 년을 직선으로 연결합니다. 이 라인을 제거하기 위해 할 수있는 일이 있습니까? 나는 ggplot 함수를 사용하고있다.R - ggplot2 - geom_line - 누락 된 값에 대한 직선을 제거하십시오.

관련없는 질문이지만 ggplot이 알파벳순으로 범례에 내 변수 이름을 정렬하지 못하게 할 방법이 있습니까? 다음과 같은 코드가 있습니다 :

ggplot(dataFrame, aes(Year, value, colour=Name)) + geom_line() 

또는 변수 이름 (Name1, ..., Name10) 앞에 숫자를 범례에 추가하십시오. NAME2 ... 예를 들어, 1. 이름 1 2. 10 Name10

+2

의 중복 가능성 [줄 바꿈 ggplot2에없는 데이터 (HTTP :

# POINTS ARE NOT CONNECTED # ggplot(dat2, aes(Year, value, colour=Name)) + geom_line() + geom_point() 

그리고 마지막으로, 당신의 마지막 질문이 범례에 Name의 순서와 레이블을 변경하는 방법입니다 대답 : //stackoverflow.com/questions/14821064/line-break-when-no-data-in-ggplot2) –

+0

이것은 완벽합니다. 링크를 가져 주셔서 감사합니다. – bill999

답변

7

여기에 귀하의 질문에 대답하는 몇 가지 샘플 데이터의 , 나는 쉽게 value들에 확인할 수 있도록하기 위해 geom_point() 기능을 추가했습니다 데이터 :

library(ggplot2) 
seed(1234) 
dat <- data.frame(Year=rep(2000:2013,5), 
      value=rep(1:5,each=14)+rnorm(5*14,0,.5), 
      Name=rep(c("Name1","End","First","Name2","Name 3"),each=14)) 
dat2 <- dat 
dat2$value[sample.int(5*14,12)]=NA 

dat3은 아마 당신의 데이터가 내가 정수로 Year을 치료하고 있습니다 것을 제외하고 어떻게 생겼는지의 예입니다.

dat3 <- dat2[!is.na(dat2$value),] 

# POINTS ARE CONNECTED WITH NO DATA IN BETWEEN # 
ggplot(dat3, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() 

그러나 당신은 열을 누락하면 데이터는 격차를 얻을 것이다 플롯 할 때 다음 NA에 그 값을 설정하는 동안 데이터에 열을 추가합니다.

# CHANGE THE ORDER AND LABELS IN THE LEGEND # 
ggplot(dat2, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() + 
    scale_colour_discrete(labels=c("Beginning","Name 1","Name 2","Name 3","End"), 
          breaks=c("First","Name1","Name2","Name 3","End")) 
+0

훌륭합니다. 감사합니다. – bill999

관련 문제