gnuplot / plot (4)

2次元プロットのあれこれ (その4)

スケールの違う複数の軸を描きたい.

一つのグラフに,目盛が違う2つ以上の軸を付けたい場合があります.例
えば,横軸が温度のグラフで摂氏と絶対温度(K)を同時に目盛る場合や,経時
変化の目盛に分と秒を同時に書く場合などです.これをするには,幾つかの方
法が考えられます.例えば,multiplotを使っ
て2つのグラフを重ねるとか,反対側の軸を使う
などです.multiplotを使うと,以下のようなこともできます.

X軸を2つ作る方法を例にします.まず縦方向を少し縮小し,bottomの
マージンを0にして,multiplotのモードに入ります.

gnuplot> set size 1.0,0.7
gnuplot> set bmargin 0
gnuplot> set yrange [0:5]
gnuplot> set multiplot

図を少し上に移動した後,最初のグラフを描きます.下の例では,
y=exp(x)-1 という関数をプロットしています.X軸は「分」の単位を
持つとします.

multiplot> set origin 0,0.3
multiplot> set xrange [0:2]
multiplot> set xtics 1
multiplot> set xlabel "Time [min]"
multiplot> plot exp(x)-1 notitle

次に図を少し下げて,別の目盛でX軸だけを描
きます.
上のグラフと重ならないように, set noytics ,
set xtics nomirror 等を指定しておきます.最後に,枠だけを
描くために,グラフからはみ出してしまうような適当な関数をプロットします.
ここではy=-1としました.

multiplot> set origin 0,0.15
multiplot> set xrange [0:120]
multiplot> set xtics nomirror 30
multiplot> set noytics
multiplot> set xlabel "Time [sec]"
multiplot> set border 1
multiplot> plot -1 notitle
multiplot> set nomultiplot
gnuplot>

fig/sample5.12

あまりスマートな方法とは言えませんが,実用上問題ないでしょう.2つ
のX軸の間隔なども微調整しようとすると,色々と面倒です.実際にもっと綺
麗な図にしたいなら,普通にプロットしておいて,Tgifで別の軸を描き加える
方が良いでしょう.

up

任意の箇所に格子(grid)を描きたい.

set grid で描かれるグリッド(格子)は大目盛(tics)のあ
る所に描かれますので,普通は等間隔です.これを任意の箇所に描くには,
set tics を使って大目盛の位置を
調整します.

次の例では set xtics を使って,0.5, 1.2, 2.5 の3箇所に
ticsを付け,そこにグリッドを描いています.

gnuplot> set xtics ("0.5" 0.5, "1.2" 1.2, "2.3" 2.3)
gnuplot> set grid
fig/sample5.13a

X軸では目盛を等間隔を保ったままで,グリッドの位置を変えるには,
X2軸(上の軸)を使います. set x2tics を使ってグリッドを
入れる位置を決め, set grid のオプションでX2軸だけに
グリッドを描くように指定します.

gnuplot> set xtics 0,1
gnuplot> set x2tics ("0.5" 0.5, "1.2" 1.2, "2.3" 2.3)
gnuplot> set grid noxtics x2tics
fig/sample5.13b

グラフの上に描かれる数字が煩わしいなら, set xtics "" 0.5
の様に文字列を空白にしておきます.但し,数字は描かれませんが,X2軸
の大目盛は残ってしまいます.

up