2014/06/08
R
 >  グラフテンプレート(内向き目盛、縦2軸)
R 2.15.3 を使用。OS 等は 2014/04/17 を参照。下記ウェブページにある見本に、できるだけ近づけてみた。ただし近似線は除く。

新潟大学工学部 微粒子材料工学研究室 : グラフの描き方
http://www.gs.niigata-u.ac.jp/~kimlab/lecture/manners/graph.html


↓ 作成したスクリプト。
# データ
dat = list(
xvs1 = runif(5) * 50
, xvs2 = runif(5) * 50
, yvs1 = runif(5) * 250
, yvs2 = runif(5) * (104 - 96) + 96
)

# 位置等の設定
plt = c(20, 80, 20, 80)/100 # 余白相対位置
xrg = seq(0, 50, by=10) # 横軸目盛
yrg1 = seq(0, 250, by=50) # 左縦軸目盛
yrg2 = seq(96, 104, by=2) # 右縦軸目盛
tck = 0.02 # 目盛線の長さ
mgp = c(25, 5, 0)/10 # 軸ラベル位置
pch = c(16, 17) # 点種類
leg = c('条件1', '条件2') # 凡例文字
leg_xy = c(8, 210) # 凡例左上端
xlb = expression(paste(C[A]/10^-3, ' ', mol, ' ', m^-3)) # 横軸ラベル
ylb1 = 'T / K' # 左縦軸ラベル
ylb2 = 'p / Pa' # 右縦軸ラベル

# プロットここから
xlm = range(xrg)
par(mgp=mgp, plt=plt)
plot(pch=pch[1], x=dat$xvs1, y=dat$yvs1, xlim=xlm, ylim=range(yrg1)
, xlab=xlb, ylab=ylb1, xaxs='i', yaxs='i', xaxt='n', yaxt='n')
axis(at=xrg, col=NA, col.ticks=1, side=1, tck=tck)
axis(at=yrg1, col=NA, col.ticks=1, las=1, side=2, tck=tck)
axis(at=xrg, col=NA, col.ticks=1, labels=NA, side=3, tck=tck)
legend(x=leg_xy[1], y=leg_xy[2], pch=pch, legend=leg, y.intersp=1.5)

par(new=T)
plot(axes=F, pch=pch[2], x=dat$xvs2, y=dat$yvs2, xlim=xlm, ylim=range(yrg2)
, xlab='', ylab='', xaxs='i', yaxs='i')
axis(at=yrg2, col=NA, col.ticks=1, las=1, side=4, tck=tck)
mtext(line=par('mgp')[1], side=4, text=ylb2)

↓ 実行結果。


体裁と関係ないが、データは乱数なので ↓ のように凡例と重なる場合が多い。


凡例の位置は横軸・左縦軸の値を直接入力した。凡例内側の上・下の余白をもう少し縮めたい。legend 関数でうまく設定できるか、そのうち調べる。
<< 19日まで Seesaa がメンテナンス中
NULL と NA の違い、plot オプショ… >>