2012-02-17 4 views
1

最初のベローズを2番目の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引数がそれらを正しく中心に得るためにpadjをいじる、その後c("2000\n2010\n2020","2001\n2011\n2021","2002\n2012\n2022")などのベクトルで構成されていaxisに一度のコールでこれを行うことができます。

関連する問題