軸に描かれる目盛には,大きな目盛(major tics)と小さな目盛(minor tics)が
あります.軸の数字は大きな目盛のある所に書かれます.デフォルトでは,小さな
目盛は対数プロットのときだけ描かれます.
大きな目盛の表示を変えるには, set {x|y}tics を使います.
gnuplot> set xtics 2
gnuplot> set ytics 0,200
gnuplot> plot x**3

X軸の目盛は増分だけを指定した場合で,目盛の数値は2づつ増加します.
Y軸では目盛の初期値と増分を指定した場合で,0から200づつ増加します.Yが
0未満の部分には目盛が表示されません.set ytics 0,200,600
の様に終了値(600)を指示することもできます.
小さな目盛は, set m{x|y}tics を使い,大きな目盛を何分割
するかで与えます.上の例で,X,Yの目盛の間に中点を付けたい場合は,
次のようにします.
gnuplot> set mxtics 2
gnuplot> set mytics 2

目盛の数値は,任意の文字に置き換えることができます.X座標が
1から4までの4点で与えられてるデータがあるとして,この1から4
の位置に”April”や”May”等の別の文字を置くには,次のようにします.
gnuplot> set xtics ("April" 1, "May" 2, "June" 3, "July" 4)
gnuplot> plot "test.dat" using 1:2:3 notitle with boxes,
"test.dat" using 1:2 notitle with lines

この様に,大目盛を変えてしまうと,小目盛をset mxtics で設定しても
無視され,小目盛は表示されません.
目盛の長さを変えるには,set ticscale を使います.数値を一
つ指定すると,大目盛の長さが,その数だけ倍されます.この時,小目盛は自
動的に大目盛の半分の長さになります.指定した数値が2つなら,2番目は小目
盛に適用されます.set ticscale 1 1 とすると,大目盛と小目盛の
長さは同じになります.
標準では,目盛は枠の内側に描かれます.これを外向きにするには,
set tics out を使います.
gnuplotの数値の表示のフォーマットは,デフォルト
では “%g”です.対数グラフを描くとき,グラフの数値が適当な大きさ(0.0001
以上,100000以下)に入っていれば0.01, 1000等の”F”フォーマットの数値で表
示されますが,その範囲を越えると1e-05, 1e+06の様に”E”フォーマットに切
り替わります.
数値を10の冪で表示するには,set format で軸のフォーマットを
“10^{%L}”に変更します.%Lの部分に10の指数が入ります.X windowの画面表示で
は,添字を付けることはできませんので,出力をenhanced postscriptにしま
す.
gnuplot> set format y "10^{%L}"
gnuplot> set terminal postscript eps enhanced
gnuplot> set ylabel "Y-AXIS" 2,0

フォーマットをこの例の様に指定すると,y軸と軸名が離れすぎてしまうよう
です.そのため,set ylabel のxオフセット
のオプションを与えて,2文字分ほど軸名を右に寄せました.
軸の数値の表示形式は,set format によって変えることができます.
set format に続けて,フォーマットを指定する軸(X, Y, Z, XY,
X2, Y2)を与え,さらにフォーマットの文字列を与えます.この文字列は,C言
語のprintfで使われるものと大体同じです.例えば,次の例は,X軸の数値を,
小数点以下3桁で,全体が10文字の長さで表示することを表します.
gnuplot> set format x "%10.3f"
%の後に,表示する全体の桁数と小数点以下の桁数を書きます.
6.2なら,全体を6桁,小数点以下を2桁表示することを表し,実際の
表示は,”5.00″のようになります.ここは,6や,.2だけ
を書いても構いません.省略した方はデフォルトの桁数が使われます.
桁の表示に続いて,表示フォーマットを表すアルファベットを1文字
(f,e,E,g,x,X,o,t,l,s,T,L,S,c,P)与えます.デフォルトは”%g”で,数値が適
当な桁数の整数や小数で表せる範囲では”%.0f”で表示し,それ以外では”%e”フォー
マットに自動的に切り替わります.f,e,x,oのフォーマットは以下のようになっ
ています.eとE等の違いは,表示されるアルファベットが大文字か小文字かの
差です.”%O”はgnuplotのマニュアルには存在しますが,実際には正しく働き
ません(バグ?).
Format |
意味 |
例 (_はblank) |
f |
小数点表示 |
%6.3f |
__6.00 |
e,E |
指数表示 |
%11.4e |
_5.0000e+01 |
x,X |
16進数表示 |
%x |
fffffffb |
o,O |
8進数表示 |
%o |
37777766 |
t,l,T,Lは主に対数表示に関係します.y=exp(-x)+exp(x)という関数を
[-10:10]の範囲でプロットする場合を考えます.Y軸の数値は大きく変化しま
すが,最初は対数ではなくて普通のプロットをしてみます.formatによる表示
の変化が分かりやすいように,同時に数種類のformatで表示してみましょう.
gnuplot> set format y "%T %t %g"
gnuplot> plot exp(-x)+exp(x)

この様にformatを指定すると,Y軸に3種類の数字が書かれます.右から,
“%T”, “%t”, “%g”に対応しています.この表示を見て分かるように,”%t”は実
際のY軸の数値の数字部分(仮数部)を表し,”%T”は10の冪乗(指数部)を表し
ています.つまり,”%t”の部分をA,”%T”の部分をBとすると,”%g”で表現され
る数値は,A x 10^Bとなっています.
次にこれを対数表示します.
gnuplot> set logscale y
gnuplot> replot

この様に,”%t”で表される部分は全て1になり,”%T”にはY軸の対数が入り
ます.Y軸に指数を表示したければ,formatに”%T”を与えればよいわけです.
また,Postscriptに出力する場合のように,上付の数値表示が出来るterminal
であれば,”10^{%T}”とすることで,10の冪乗を表示することができます.
普通の対数プロットでは,tとl,TとLは全く同一になります.対数の底を
10では無く別のものにすると,これらの表示結果が異なります.tとTは,10を
底にした普通の対数プロット,lとLはset logscale axis
baseで指定したときのものに対応しています.10以外の底を使った対数プ
ロットをすることはあまり無いでしょうから,これらは同じものと考えても良
いでしょう.
formatは数値の表示方法を与えるだけではなく,色々な文字を入れること
もできます.たとえば, set format x "%g km"
のように指定すると,数字に続けて”km”という単位が表示されます.
上の項目の応用で簡単にできます.
gnuplot> set format x ""
from Chriss in Univ. Tuebingen. Thanks !
対数プロットでは,軸の数値は10の冪乗の部分だけに書くのが普通ですが,
軸のレンジがそれほど広くない場合(例えば最大値と最小値の比が2桁程度の範
囲のとき) 2や5のような間の数字も書いておくと図が読みやすくなる場合があ
ります.gnuplot では数字は set {x|y}tic で指定する大目盛の部
分だけに数字が書かれますので,中間部分に数字を書くにはここに大目盛を持っ
て来る必要があります.対数目盛の場合は,書きたい目盛の位置を手で設定す
る必要があります.
gnuplot> set logscale y
gnuplot> set yrange [1:50]
gnuplot> set ytics (1,2,5,10,20,50)
gnuplot> set format y "%2.0t{/Symbol 327}10^{%L}"
gnuplot> set lmargin 8
gnuplot> set terminal postscript eps enhanced
gnuplot> plot exp(x)/x

set formatで指定したPostscriptのシンボルは・になります.
×にしたいときは{/Symbol 264}を使います.
ここで上げた方法は,システムによってはうまく行かない場合があるよう
です.例えば50.0という数値を”%t”と”%L”のformatで表記するとき,5.0と1
(5.0E+01) という数字が得られれば良いのですが,場合によっては0.5と2
(0.5E+02) を返すようなシステムがあり,その場合は軸上の50という数値が
0x10^2と言うように変になってしまいます.対数グラフにゼロは無いはず.
|