間引きして出力
大量のベクトル場データをプロットすると、密度が高すぎて何も見えなくなる。そこで、ある程度の間隔で間引くわけだが、間引いたデータを生成するのは面倒くさい。そこで、 Gnuplot の力で解決する。
4カラムで、(整数x座標), (整数y座標), (ベクトルのx成分), (ベクトルのy成分) というデータファイル vect.dat
を表示する例。
skip(x, n) = (int(x)%int(n) == 0 ? x : 1/0) # n の倍数以外は無効な値を返す ns=4 % 間引きの間隔 plot "vect.dat" using (skip($1,ns)):(skip($2,ns)):3:4 with vector
using
のパラメタ中に、無効な値 (1/0
) が現れると、プロットを飛ばすという仕様による。
なお、 int(x)
などとしているのは、 %
演算子が整数以外をとらないため。うかつに ($1)%n
のように、入力データを与えると(データ上は整数だろうが) can only mod ints という(一見趣旨が分からない)エラーがでる。