2010年 11月 1日 掲載
今回は,今までとちょっと毛色のちがうコマンド, データファイルを解析する minmax をあつかう.
GMT には,minmax というコマンドがふくまれている. 動作はコマンド名そのままで,ファイルあるいは標準入力の各カラムの最小値,最大値を出力する.
では,やってみよう. まずはサンプルデータ作りから. Box-Muller法で,X座標,Y座標の値の分布がそれぞれ正規分布にしたがう点のデータをつくる.
$ awk 'BEGIN{for(i=0;i<2500;i++){x1=rand();x2=rand(); if(x1!=0)print sqrt(-2*log(x1))*cos(2*3.1415*x2), sqrt(-2*log(x1))*sin(2*3.1415*x2)}}' > rand.txt
このデータの最小値,最大値を見てみよう.
$ minmax rand.txt rand.txt: N = 2500 <-4.10239/3.854> <-4.02207/3.56684>
最初にデータファイル名(rand.txt),次にふくまれるデータの数(N = 2500), 第1カラムの <最小値/最大値>,第2カラムの <最小値/最大値> と出力がつづく.
minmax には,データをプロットする際に有用な -Iオプションがある. -Iオプションに整数を指定して実行すると, 第1,2カラムのデータの範囲をふくむ指定した値で割り切れる整数の範囲を, -Rオプションの形で出力するのだ.
$ minmax rand.txt -I1 -R-5/4/-5/4 $ minmax rand.txt -I2 -R-6/4/-6/4
このコマンドをバッククオートでくくってプロットするコマンドで指定すれば, いちいちデータの中身を確かめなくても,すべてのデータをふくむ範囲の図が描画される.
$ psxy rand.txt -Jx1 `minmax rand.txt -I1` -Sc0.2 -Ba1g2 > rand.eps
この例では,分布の中心が図の中心とずれてしまっているので, 正式な図としては使えないが, とりあえずデータを見てみるという用途には十分だろう.
[ KDOホームにもどる ] [ いちからはじめる GMT インデックスにもどる ]
(C) 2010 KDO