gnuplot : ベクトルプロットでのデータの扱い方について(vectors)

ベクトルプロット(Vector plot)とは

 gnuplotではvectorsというプロット形式でベクトルプロットを行うことが出来ます。要はある点におけるベクトルの大きさと方向を図示するというもの。
今回はベクトルプロットのプロット時のデータの指定方法について解説していきます。
(ベクトルプロットは3次元プロットでも使えますが、今回は2次元プロットの解説のみになります)

ベクトルプロットの例

 ベクトルプロットは以下のようなプロットになります。

プロットソースコード

$data01 << EOD
0 0 0.4 0.4
0 1 0.1 -0.1
0 2 0.4 0.2
1 0 -0.3 -0.2
1 1 0.2 0.2
1 2 0.3 0.3
2 0 -0.4 0.1
2 1 -0.3 0.4
2 2 0.2 -0.3
3 0 0.3 0.2
3 1 0.4 -0.3
3 2 -0.4 -0.3
EOD

unset key
set grid
set xrange [-0.5:3.5]
set yrange [-0.5:2.5]
plot $data01 with vectors lc 'red',\
'' with points lt 6 lc 'black'


(EODというのはdatablocksというプロットファイルの書き方によるものです。詳しくは次の記事を参照して下さい : gnuplotで一つのファイルにデータとプロットコマンドを含める方法(datablocks))

プロットデータの説明

 ベクトルプロットでは、x, y座標の他にベクトルの大きさと向きを指定する必要があります。gnuplotのベクトルプロットでは、用いるデータは以下の4つの要素が必要になります。
  • x座標
  • y座標
  • xdelta : ベクトルのx方向の大きさ
  • ydelta : ベクトルのy方向の大きさ
このうちのxdeltaとydeltaによりベクトルの大きさと方向が決まることになります。
簡単に図で説明すると、次のような関係になっています。


usingを用いた指定

プロット時にはusingを用いて以下のように指定します。
gnuplot> plot 'test01.dat' using 1:2:3:4
(データファイルのデータ並びが "x座標, y座標, xdelta, ydelta"の場合)

角度を用いて指定するには

 実際、ベクトルの大きさと角度をデータとして記録することも多いでしょう。
その場合でもsin, cos関数でxdeltaとydeltaを算出して指定することで対応出来ます。

とりあえず、大きさ"3"、角度"30度"のベクトルを仮定して考えてみます。x, y座標は適当に設定するとして、この場合のデータは
5 1 3 30
となります。これを "using 1:2:3:4"としてプロットするとまったくおかしなグラフになってしまいます。なので、このusingの3番目と4番目で指定している部分にうまくxdelta, ydeltaが来るように元のデータの変換を行ないます。データファイルを何かしらの表計算ソフトやプログラミングで変換してもいいのですが、このくらいであればgnuplotでも変換して指定が行えます。

角度の設定

 gnuplotでは角度はデフォルトではラジアンの設定となっているため、これを度の設定にします。
gnuplot> set angels degrees
(詳しくは次の記事を参照して下さい :gnuplotで角度を度またはラジアンに設定する方法)

xdelta, ydeltaの求め方

xdeltaとydeltaはベクトルの大きさ(r)と角度(θ)から以下のように求めることが出来ます。
  •  xdelta = r * cosθ
  •  ydelta = r * sinθ
なので、usingでの指定は個別には以下のようになればいいわけです(r = 3, θ =30°) 。
1:2:(3*cos(30)):(3*sin(30))
これを列で指定するフォーマットにすると、次のようになります。
1:2:($3*cos($4)):($3*sin($4))
(usingの指定方法、詳しくは次の記事を参照して下さい : gnuplotでデータファイルをプロットするときの列の指定について(using))

まとめ

ベクトルプロット時のデータの扱い方の基本はこんなところです。ベクトルプロットではこの他に、矢印の描き方の指定などいくつか設定出来る項目があります。そのへんの解説はまた次回にでも。


gnuplot関連のブログ記事


コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法