いちからはじめる GMT その34 - minmax

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