今回はgnuplotによるデータファイルから3Dプロットを実行する方法について紹介する。
1. データファイル形式
3dデータをプロットするためのデータ形式は2通りあるが、X/Y/Zの列ににそれぞれ直接値を入れる形式で、具体的なデータファイルdata3d.txt
の書式としては以下のようになる。
# 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
2. データファイルから3Dプロット
3次元でプロットするには2次元のときと同様にプロットコマンドの後に読み込むデータファイル名を指定する。
splot "data3d.txt"
特に描画方法を指定しない場合は、以下のようにポイント+
でプロットされる。
ポイント以外で、例えばラインを用いてグリッド状に描画したい場合は
splot "data3d.txt" with lines
グリッド状に表示するには上のデータファイルのようにXの値ごとにデータ数を揃え、Xの値が変わったときに改行したデータ形式にする。
ポイントやドットで3Dプロット行う場合は上のようにデータ数を揃えたり、改行の必要もなくX/Y/Zのデータの組が揃っていればよい。例えばdata3d_2.txt
は
# X Y Z 1 0 0 2 1 1 0 2 4 0 3 9 0 4 16 0 5 25 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
これを3Dプロットすると
splot "data3d_2.txt"
ポイント表示による3Dプロットができていることがわかる。
なおラインを用いて3Dプロットを行うと以下のように、一筆書きのように線が引かれるため見にくいプロットとなってしまう。
3. マトリックス形式のよる3Dプロット
X/Y/Zの列ににそれぞれ直接値を入れる形式以外でマトリックス形式を用いることができる。具体的にdata3d_mat.txt
は
0 1 4 9 1 2 5 10 4 5 8 13 9 10 13 18 16 17 20 25 25 26 29 34
この形式はX方向が列、Y方向が行という解釈で、行列の値がZということになる。マトリックス形式のデータを3Dプロットするには
splot "data3d_mat.txt" matrix
以下のようにポイント表示による3Dプロットを描画できる。
またポイントではなく描画をラインで指定すると
splot "data3d_mat.txt" matrix lines
マトリックス形式のデータはX/Yの値は含まれていないため、軸のラベルをX/Yの値に割り当てる必要がある。そこで以下のようにset xtics
を用いてxの値、同様にset ytics
を用いてyの値を割り当てる。
set xtics("100" 0, "200" 1,"300" 2) set ytics("0" 0, "100" 1,"200" 2,"300" 3, "400" 4, "500" 5) replot
4. まとめ
今回はデータファイルから3Dプロットを作成するための、データファイルのデータ形式とコマンドについて紹介した。