2012-02-17 3 views
1

두 번째 x 축에 첫 번째 벨로우즈를 추가하는 "자동"방법이 있습니까?오버레이 플롯 및 2 X 축 유지

내 데이터는이 유사합니다 내가 찾은

A1=data.frame(dates=seq(as.Date("2000/1/1"), by="day", length.out=1080),obs=runif(1080,min=-10,max=15)) 
A2=data.frame(dates=seq(as.Date("2010/1/1"), by="day", length.out=1080),obs=runif(1080,min=-8,max=50)) 

par(new=T) 
plot(A1,ylim=range(min(A1[,2],A2[,2]):max(A1[,2],A2[,2]))) 
par(new=F) 
plot(A2,ylim=range(min(A1[,2],A2[,2]):max(A1[,2],A2[,2]))) 

유일한 해결책은 수동으로 그것을 확인하는 것이 었습니다. 나는 같은 길이 여러 시계열을하고 난 다음과 같이 x 축을 관찰 오버레이 및 유지 싶습니다

_________________________________________________ 
    |  |  |  |  |  | 
2000  2001  2002  2003  2004  2005 
2010  2011  2012  2013  2014  2015 
2020  2021  2022  2023  2024  2025 
(...) 

다른 색상마다 시리즈.

답변

1

자동? 내가 아는 한에서는 아니다.

그러나 저는 여러분이 (약간의 노력으로) 이것을 손으로 할 수 있음을 알고 있습니다. 예를 들어 :

par(mar = c(10,4,4,2) + 0.1) 
plot(1:3,1:3,axes = FALSE,xlab = "") 
axis(1,1:3,labels = FALSE) 
mtext(c('2000','2001','2002'),side = 1,line = 1,at = 1:3,col = "red") 
mtext(c('2010','2011','2012'),side = 1,line = 2,at = 1:3,col = "blue") 
mtext(c('2000','2001','2002'),side = 1,line = 3,at = 1:3,col = "red") 
mtext(c('2010','2011','2012'),side = 1,line = 4,at = 1:3,col = "blue") 
axis(2) 

enter image description here

난 당신이 축 레이블의 각 행에 대해 충분한 공간이있어 확인 거라고 방법을 보여, mar를 설정하여 10 아래쪽 여백의 줄 수를 증가했습니다.

그런 다음 축을 생략하고 눈금이있는 x 축을 추가 한 다음 mtext을 사용하여 텍스트 레이블의 각 행을 그립니다. 다른 색상으로 각 행이 필요하지 않은 경우 labels 인수가 c("2000\n2010\n2020","2001\n2011\n2021","2002\n2012\n2022") 같은 벡터로 구성하고이를 올바르게 중심으로 얻을 padj 바이올린을 켜는 경우

, 당신은 axis 하나의 호출로이 작업을 수행 할 수 있습니다.