GNUPLOT

- not so Frequently Asked Questions -

update 2004/9/5

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

1 | 2 | 3 | 4 | 5 | 6 | 7

図の大きさがいつも一定になるようにしたい.

gnuplotが描くグラフの領域は,軸の数字やラベルによって変化します. この領域を固定したいときは,marginを調整します.marginには, 上(tmargin)下(bmargin)左(lmargin)右(rmargin)があり,デフォルトでは 全てが自動計算されるようになっています.現在の設定は,

gnuplot> show margin

        lmargin is computed automatically
        bmargin is computed automatically
        rmargin is computed automatically
        tmargin is computed automatically

で見ることができます.marginに与える数値は,文字数です.

例として全てのmarginを指定した場合を示します.

gnuplot> set lmargin 10
gnuplot> set bmargin 3
gnuplot> set rmargin 2
gnuplot> set tmargin 1

この様にしておいて,X,Y軸の目盛のフォーマットを変えてみます.

fig/sample5.1a fig/sample5.1b

軸のラベルの位置は変わってしまいましたが,グラフの枠の大きさは 同じままです.ラベルの位置も固定するには,set {x|y}label にあるオフセットのオプションを指定する必要があります.

up

左右両方のY軸を使いたい.

複数の図を一つにまとめて描きたいときが良くあります.gnuplotでは上下 左右の軸に別々の目盛を割り振ることができ,右側のY軸はY2軸,上のX軸はX2 軸として使うことができます.

Y2軸は,何もしなければ左側のY軸と同じです.Y2のレンジをYと違うように してみて,sin(x)とsin(x)の2乗をプロットしてみましょう.どちらのY軸を使って 図をスケールするのかは,plotのオプションにあるaxisで指定します. axisに続けてx1y1, x1y2, x2y1, x2y2 のいづれかを与えて,表示するときに使う 軸を決めます.x1y2なら,下側のX軸と右側のY軸の目盛に合わせて表示することに なります.

gnuplot> set xrange [0:2*pi] 
gnuplot> set yrange [-1:1] 
gnuplot> set y2range [0:1]  
gnuplot> plot sin(x)    axis x1y1, \
              sin(x)**2 axis x1y2 
fig/sample5.2a

このままでは,右の軸に描かれる目盛は,左の軸と同じままです.0〜1の 範囲に合わせた目盛を出力し,さらに,左のY1軸の目盛を右側に描かないよう にするには,次のようにnomirrorを指定します.勿論, set y2tics 0,0.1の様にY2軸の最小目盛と増分を指定すること もできます.

gnuplot> set y2tics 0, 0.2
gnuplot> set ytics nomirror
fig/sample5.2b

このようにしてプロットした図では,どの線を右の軸で読むのかをはっきりと させる必要があります.そのときは,set arrow を使って右向きと左向きの矢印を図に描き込めばよいでしょう.


up

軸を消したい.

gnuplotは上下左右に枠を作って,その中に図をプロットしますが,この 枠を表示したり消したりするには,set border を使います.上下左右の軸には,1(下),2(左),4(上),8(右)の数値が与えられており, 特定の軸を表示したい時は,その軸の数字を加えたものを与えます.1ならX1軸だけ, 3ならX1とY1軸,31なら全部になります.但し,この数字を変えただけでは, 目盛だけが残ってしまい,軸を完全に消すことはできません. set no{x|y}ticsset {x|y}tics nomirrorなどで, 目盛を表示させないようにする必要があります. 以下の例はX1Y1軸だけを使って表示するものです.

gnuplot> set border 3
gnuplot> set xtics nomirror
gnuplot> set ytics nomirror
fig/sample5.3
up

正方形や,縦横比の固定された長方形の図を描きたい.

昔のgnuplotでは不可能の一つとして有名でしたが,今ではサポートされて います.図を正方形にするには,set size squareを指定します.

gnuplot> set size square

同様に,縦横比を固定するには,次のようにします.

gnuplot> set size ratio 2

この場合,Y軸がX軸の2倍になります.squreやratioで指定する軸の長さ 比は,軸の数値(つまりX,Yのレンジ)には関係しません.X,Y軸の単位に対して その比を固定するには,ratioの数値を負にします.-1にすると,X軸の単位長 さとY軸の単位長さが等しくなります.-2なら,Y軸は2倍の長さになります.

fig/sample5.4a
square
fig/sample5.4b fig/sample5.4c
ratio 2 ratio 0.5
fig/sample5.4d fig/sample5.4e fig/sample5.4f
ratio -1 ratio -2 ratio -4
up