2012-02-17 79 views
1

是否有一種「自動」方式在第一個x軸的下方添加第二個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