星空研究Memo

ここは某天文屋の外部記憶装置である。

複数の図 (x軸を共有し縦に並べてプロット)

2012-01-17 20:37:17 | R言語

x軸は同じだが、y軸のデータ(単位など)が異なるときに
各グラフの x軸 をくっつけて (共有して) 縦に並べて一つの図としたいときがある。
# つまり以下のような図。
# 光度曲線や色の変化を一つの図にしたい!とかを想定。

 
主に「空飛ぶカボチャ」さんを参考にさせて頂きました。情報に感謝感謝。
[追記] 現在上記のブログはこっちの「もうカツ丼でいいよな」に移っているようです。


上記サイトではいずれのグラフも同じ大きさ。
私の場合、一番上のグラフはちょっと大きくしたい!バージョンにしました。
以下コードをメモ。

==============

mat <- matrix(c(1,1,1,1,2,2,3,3),    # グラフのレイアウトを行列で考える(一つの図の大きさの割合)
              8,1,byrow=T)           # 8x1 として一番上のグラフが最も大きく表示される
setEPS()                             # EPS で吐き出す                            
postscript("mtest.eps",
            height=5,width =3)

par(mfrow=c(3,1))                    # 実際のグラフの数を 3x1 として縦に並べる
layout(mat)

par(mar=c(0,4,0,4))                  # 各グラフをぴったり接続するおまじない(上下マージン0)
par(oma=c(4,0,4,0))

#====== プロット開始

plot(tan, -pi, 2*pi, axes=F)         # とりあえず軸の目盛を消す
  axis(2)                            # これでy軸復活
  box()                              # 外枠も復活

plot(cos, -pi, 2*pi, axes=F)
  axis(2)
  box()

plot(sin, -pi, 2*pi, axes=T)         # 最下の図は軸を書く指定

mtext("x", side=1, line=3)           # 最後にx軸のラベルを書く

dev.off()