COLOR(red){SIZE(20){グラフィックス参考実例集:グラフィックスのハック}} ([[グラフィックス参考実例集]]に戻る。[[Rのグラフィックスパラメータ]]を参照する。)~ #contents ~ *グラフィックス領域と作図領域の大きさの自己指定 (x,y軸のスケールを正確に指定する) グラフィックス画面の大きさは par()$fin パラメータで決められます(インチ単位)。一方グラフィックス画面中の作図領域の大きさは par()$plt パラメータ(グラフィックス画面への割合で指定)で決められます。従って作図画面の実際の大きさはインチ単位で par()$fin[1]*(par()$plt[2]-par()$plt[1]) # x 方向のサイズ(インチ) par()$fin[2]*(par()$plt[4]-par()$plt[3]) # y 方向のサイズ(インチ) と決まります。従って x,y 座標のスケールを同じにするには xlim と ylim の幅をこのサイズの等倍にする。以下の参考コードで Xlim と Ylim の倍数 10 は任意ですが同じでないとスケールが異なってしまいます。つまり Xlim と Ylim の幅の比率が実際の比率に等しい必要があります。ただし、これでも正確にいうと座標隅に入る遊び分を考慮していませんから、微妙に異なっているはずです。 > par(fin=c(6,4)) # グラフィックス画面を 6x4 インチに指定 # 作図領域をグラフィックス画面への割合で指定(この例では上下左右から10%ずつ狭める) # チックマークや軸ラベル、タイトルが入る余地を確保する必要 > par(plt=c(0.1,0.9,0.1,0.9)) > Xlim <- 10*par()$fin[1]*c(0, par($plt[2]-par()$plt[1]) > Ylim <- 10*par()$fin[2]*c(0, par()$plt[4]-par()$plt[3]) > plot(1:20,1:20, xlim=Xlim, ylim=Ylim) 参考までにメモすれば plt, fin の既定値は次のようになっています。 > par()$plt [1] 0.1172537 0.9399432 0.1457143 0.8828571 > par()$fin [1] 6.990803 6.997416 従って既定値での作図画面のサイズはインチ単位でそれぞれ 5.751261, 5.158095 です。~ 注意:依然として残る空白を取り除くには、例えば画像ファイル(例えば postscript)に落し、適宜クリップする必要。 #ref(finplt.jpg,left) *自前の軸ラベル指定 (plot 関数の xaxt="n" オプション, 2004.2.19 ) *自前の軸ラベル指定 (plot 関数の xaxt="n" オプション, r-help 記事より, 2004.2.19 ) R はデータから普通好ましい軸チックマークと軸ラベルを生成してくれるが、時として困ることもある。以下の例では p1 データは整数値しか取らないが、位置 2.5, 3.5 にチックマークとラベルを描いてしまい困る例。(r-help 記事より) > p1=c(1,2,3); p2=c(5,15,25) > par(mfrow=c(1,2)) > plot(p1, p2, xlab='Occasion', ylab='Score', xlim=c(1,3), ylim=c(0,30)) # 既定動作 # x 軸のチックマークと軸ラベルを描かない > plot(p1, p2, xlab='Occasion', ylab='Score', xlim=c(1,3), ylim=c(0,30), xaxt="n") > axis(1, at=1:3) # 次に位置 1,2,3 にチックマークと軸ラベルを描く #ref(xaxtn.jpg,left)