プロットできるデータのフォーマットは?
わざわざ書くまでも無い話しですが,一応ここにまとめておくこと
にします.数値データは,空白(スペースもしくはタブ)で区切られた
カラムにします.行の先頭に#があると,その行は無視されます.
実はgnuplotは,データがどのように書かれていても,読み込みの書式
を指定することでデータを読めるのですが,ここではこの方法は
取り上げません.
# X Y
1.0 1.2
2.0 1.8
3.0 1.6
|
例えば2次元データの場合は,上の様にX座標とY座標を並べて書きます.X
やYに誤差棒を付けたければ,さらにそれらのカラムを並べて書きます.プロッ
トする時にどの数値を使うかを指定するので,カラムの順序はどうなっていて
もかまいません.1カラム目をX座標,2カラム目をY座標にしたときは
gnuplot> plot "test.dat" using 1:2
|
のように,usingを使ってgnuplotに描くカラムを教えます.usingを使わない
と,自動的に1カラム目をX,2カラム目をYにしてプロットします.
Y座標に誤差棒を付ける方法は2つあります.1つは Y±Z のようにYを
中心に上下にZの棒を付ける場合.もう一つは Yの範囲[Z1,Z2]が決まっている
場合のように上下の棒の長さが異なる場合です.前者のデータファイル
には3カラムの数値,後者なら4カラム必要です.
# X Y Z
1.0 1.2 0.2
2.0 1.8 0.3
3.0 1.6 0.2
|
# X Y Z1 Z2
1.0 1.2 0.8 1.5
2.0 1.8 0.3 2.3
3.0 1.6 1.0 2.1
|
 |
 |
それぞれをプロットするときは,
gnuplot> plot "test.dat" using 1:2:3 with yerrorbars
|
gnuplot> plot "test.dat" using 1:2:3:4 with yerrorbars
|
の様に using の後の指定が変わるだけです.
表示するデータの形式によって,データカラム数やusingの指定が変わります.
2次元データの場合のこれらを以下にまとめます.
データ表示形式 | カラム | using | with |
(X,Y)のデータ | X Y | 1:2 | lines, points, steps,
linespoints, boxes, etc. |
Yに誤差dY | X Y dY | 1:2:3 | yerrorbars |
Xに誤差dX | X Y dX | 1:2:3 | xerrorbars |
Yに誤差dY,
Xに誤差dX | X Y dX dY | 1:2:3:4 | xyerrorbars |
Yの範囲[Y1,Y2] | X Y Y1 Y2 | 1:2:3:4 | yerrorbars |
Xの範囲[X1,X2] | X Y X1 X2 | 1:2:3:4 | xerrorbars |
Yの範囲[Y1,Y2],
Xの範囲[X1,X2] | X Y X1 X2 Y1 Y2 | 1:2:3:4:5:6 | xyerrorbars |
3次元データは(X,Y,Z)の組にして与えます.デフォルトでは,3次元空間に
点を表示します.with linesのオプションで線を描くようにした場合,
データの与え方によって,3次元空間に線だけを描くか,面(つまり縦横の格子)
を描くかが変わります.例として,次のように4つのブロックに分かれたデー
タを考えます.ブロック間は1行の空行で分けられており,各ブロックのX,Yの
数は異なっています.この場合,gnuplotは格子を描かずに線だけを表示しま
す.
# X Y Z
0 0 0
0 1 1
0 2 4
0 3 9
0 4 16
0 5 25
1 0 1
1 1 2
1 2 5
1 3 10
1 4 17
2 0 4
2 1 5
2 2 8
2 3 13
3 0 9
3 1 10
3 2 13
|
gnuplot> splot "test3d.dat" using 1:2:3 with lines
|
次に,XYの数をそろえてみます.
# X Y Z
0 0 0
0 1 1
0 2 4
0 3 9
0 4 16
0 5 25
1 0 1
1 1 2
1 2 5
1 3 10
1 4 17
1 5 26
2 0 4
2 1 5
2 2 8
2 3 13
2 4 20
2 5 29
3 0 9
3 1 10
3 2 13
3 3 18
3 4 25
3 5 34
|
この様に,縦横の格子が入ります.上の例では,各ブロックでのY座標が同
じ場合でしたが,ブロックのY座標が異なっても,各ブロック内の点の数が同
じなら格子が描かれます.これらのデータはグリッドデータとして扱われます.
gnuplotが等高線を描いたり,隠線処理をするのは,このグリッドデータに対
してです.試しに上のデータの最後のブロックのY座標だけを2倍すると,次
のようになります.
各ブロックの点数が同じでも格子を描きたくない場合は,各ブロックの間に
2行の空行を入れます.
# X Y Z
0 0 0
0 1 1
0 2 4
0 3 9
0 4 16
0 5 25
1 0 1
1 1 2
1 2 5
1 3 10
1 4 17
1 5 26
2 0 4
2 1 5
2 2 8
2 3 13
2 4 20
2 5 29
3 0 9
3 1 10
3 2 13
3 3 18
3 4 25
3 5 34
|
別の3次元データの与え方として,行列(matrix)で与える方法があります.
上の例の様に,XYの格子が固定さている場合には,こちらの方がデータが簡潔
になります.行列の行(横)はX,列(縦)がY軸になります.
0 1 4 9
1 2 5 10
4 5 8 13
9 10 13 18
16 17 20 25
25 26 29 34
|
このデータをプロットするときは, using では無く, matrix
を用います.行列でデータを与える場合,XとYの座標には行と列の番号がそのまま
入ります.この例では,Xは0〜3,Yは0〜5となります.XとY座標の数値を与えたい場合は,
set {x|y}tics を使って軸の目盛を設定します.以下は,Xの0〜2に対して
100から300の数値を与えた場合です.
gnuplot> set xtics ("100" 0, "200" 1, "300" 2)
gnuplot> splot "test3d.dat" matrix with lines
|
|