- not so Frequently Asked Questions - update 2004/9/5
|
|
not so FAQ |
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> あまりスマートな方法とは言えませんが,実用上問題ないでしょう.2つ のX軸の間隔なども微調整しようとすると,色々と面倒です.実際にもっと綺 麗な図にしたいなら,普通にプロットしておいて,Tgifで別の軸を描き加える 方が良いでしょう. 任意の箇所に格子(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 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 グラフの上に描かれる数字が煩わしいなら, set xtics "" 0.5 の様に文字列を空白にしておきます.但し,数字は描かれませんが,X2軸 の大目盛は残ってしまいます. |