2015年8月6日木曜日

[gnuplot] プロットの方法とサンプリング点

gnuplotは,関数やデータの値が与えられた有限の数の点((x, y)や(x, y, z)の座標)を直線などで接続することで,プロットを描画します.
この有限の数の点をサンプリング点,その数をサンプリンング数と呼んでいます.
データをプロットする場合は,データ点がサンプリング点となります.また,関数の場合は,"set samples(二次元,三次元)"や,"set isosamples(三次元)"で設定します.
デフォルトでは,二次元プロットでは100点,三次元では10 x 10点となっています.

二次元プロットの例
sinカーブプロット例を以下に示します.以下のようなコマンドファイル("sin.gp")を作成します.

set xrange [-pi:pi]
set yrange [-1.2:1.2]
set sample 8
plot sin(x) with linespoints linetype7

pause -1 "press [Return] key to quit"

このファイルを,ターミナルから以下のように実行します.
$ gnuplot sin.gp
すると,以下のようなグラフが描かれます.
データをプロットする場合は,データ点がサンプリング数になり,データ数がサンプリング点になるので,"set sample"は無視されます.上記のコマンドファイルの3行目を
set sample 80
とすると,以下のようにサンプリング点が80になったグラフが描かれます.
gnuplotにおいては,サンプリング点の値を使ってプロットを行います.

三次元プロットの例
二次元プロットの際には,関数 y = f(x) を線で表しましたが,三次元プロットでは z = f(x, y) の表現を用い,縦と横のメッシュで作られる面を描きます.
このメッシュを構成する縦と横の線を
・等-u線(iso-u line)  x軸に平行な線
・等-v線(iso-v line)     y軸に平行な線
と呼び,これらの線上にサンプリング点が存在します.

例として,以下のようなコマンドファイルを作成し,"3DPlot.gp"という名前で保存します.
set xrange [-1:1]
set yrange [-1:1]
set xlabel "x"
set ylabel "y"
set ztics 0, 0.5
set view 30, 60
set samples 5, 8
set isosamples 3, 4
splot exp(-x**2 - y**2) with linespoints linetype 7

pause -1 "press [Return] key to quit"

ターミナルから,
$ gnuplot 3DPlot.gp
press [Return] key to quit
と実行すると,以下のようなグラグが描かれます.
コマンドファイル8行目では,
set isosamples 3, 4
として,等-u 線3本,等-v 線4本を設定しています.
また,等-u 線と等-v 線のサンプリング点の数は,7行目の
set samples 5, 8
で指定しています.
描かれたグラフを見てみると,等-u 線上には5個のサンプリング点が,等-v 線上には10個のサンプリング点があります.等-v 線のサンプリング点を8個と指定していますが,実際には10個の点がプロットされています.これは,等-u 線との交点にサンプリング点を作るために,点が自動で2個追加されているためです.
試しに,これらの点数,間隔を
set samples 30, 60
set isosamples 50, 80
に変更すると,以下のようなグラフが描かれます.

0 件のコメント :

コメントを投稿