GMTのように、テキストから散布図を作成する

GrADSのStation Dataは、作成するまで非常に手間がかかります。一方、GMTではタブ区切りor空白区切りのテキストデータを使用することができます。

さすがにGrADSでパイプ(|)入力させることは難しいですが、テキストデータから読み込むスクリプトを作成しましたのでご紹介します。


なお、このページで使用したデータは2007年4月10日00UTCにおける、QC後のSSMISの22GHz垂直偏波の輝度温度(K)などです。


GrADSスクリプトを使用して描いた図


準備#1

環境変数GASCRPに設定されているディレクトリに GrADS_Scripts.tar.gz を展開する。(右クリックして保存。うまく展開できない場合)

環境変数GASCRPを設定していない場合 >>



準備#2:入力データの作成

テキストで [ x方向の位置  y方向の位置  値 ] をタブ区切りor空白区切りで1行ずつ並べます。カンマ区切り(CSV形式)のデータは扱えませんので要注意!

実際の地点データなら [ 経度  緯度  値 ] の順になります。経度は-180〜180でも0〜360でもOKです。

改行コードは「LF」にしてください。(「CR+LF」の場合は行末にスペースを入れると上手く動くかも?)



使い方

smcolと一致している部分も多いので詳細は省略。異なる部分を中心に以下で例を示します。



使用例

使用したいファイル名が tbb22.txt だとします。

> dtext  tbb22.txt

と入力すると、単にforground colorでプロットされます。

以下のような標準出力も出てきます。1, 2行目は色未設定時に出力されます。4行目以降にプロットデータの統計量が表示されます。

別の単色で描くには、

> dtext  tbb22.txt  -col 3

等とします。

3列目の値を使用して、値に応じて色が変化するように描画するには、-levあるいは-cptなどを使用します。smcolと同様の設定となります。

> dtext  tbb22.txt  -lev 100 180

このとき、先ほど示した標準出力 Plotted Min Plotted Max が役に立ちます。

描画領域を指定するには-areaを指定します。例えば120゚E〜170゚E、10゚S〜50゚Eで描くためには、通常は

> set lon  120 170

> set lat  -10 50

としますが、dtextを使う場合には、

> dtext  tbb22.txt  -lev 100 180   -area  120 170  -10 50

とします。(なぜかというと、コントロールファイルを開いていないので、set lonを使えない)

プロットマークの形と大きさを指定するには-markを指定します。形の指定は set cmark と同様で、デフォルトでは3(円形塗りつぶし)となっています。大きさのデフォルトは0.05です。

> set cmark  2

> set digsiz  0.1

と設定する代わりに、

> dtext  tbb22.txt  -lev  100 180  -area  120 170  -10 50  -mark  2  0.1

とします。

出力時に機械間引きを行うには -skip を指定します。例えば -skip 2 を指定すれば、2分の1に間引かれます。データ数が多いときにご使用ください(もちろん、元データで間引いた方が処理は速くなります)。

> dtext  tbb22.txt  -skip 2

描画領域の背景を塗りつぶすには -back を、陸域を塗りつぶすには -land を指定します。

> dtext  tbb22.txt  -col b_r  -lev 100 180  -back 2  -land 12

なお、陸域でマスクしているように見えるかもしれませんが、そのようなことはありません(元データで陸域を除いている)。

#:陸域や海域でマスクする

プロットする点の間を直線でつなぐには、 -line を指定します。例えば色を3(緑)、線種を2(破線)、太さを6とするには、

> dtext  sample.txt  -area  120 170  -10 50  -mark  3 0.15  -line  3  2  6

とします。 -line のみの指定時は、色は0(forground color)、線種は1(直線)、太さは5となります。

なお、分かりやすいように点を大きくしています。領域内から外、あるいは外から中へデータが連続している場合には、枠の縁まで線を引きます。ただし、領域外の点同士の場合には直線を引くことができません。

また、データはてきとーに作ったただのサンプルです。

点ではなく、文字をプロットすることもできます。その場合には入力データの4列目以降に文字を並べ、 -text を指定します。さらに、文字の色、中心からの文字の移動、文字の大きさを指定することができます。

> dtext  sample.txt  -area  120 170  -10 50  -mark  0  -text  2 0 1.5

とすれば、色は2(赤)、中心位置(0)に、やや大きめ(1.5倍)の文字をプロットできます。 -line のみの指定時は、色は0(forground color)、線種は1(直線)、太さは5となります。 -mark 0 で、点のプロットを無しとしています。

以下のように色々設定すると、右の図のようになります。

> dtext  sample.txt  -area  120 170  -10 50  -mark  3 0.15  -back  11  -land  12  -mark  3 0.15  -text  2 0.2 1  -line  3 2 6  -cpt  sample.cpt  -bar  1 1 12

2つの変数の比較など、地図を必要としない散布図を作成することもできます。まず、

> set mproj off

として、投影法を変えてから、

> dtext  sample2.txt  -area  170 260 90 240  -map off  -cycl off

とします。 -map off で地図の描画をしない、 -cycl off でx方向の周期性を仮定しないという設定になります(通常の設定では、経度の値が0〜360でも-180〜180でもうまくまわして描けるようになっています)。


By T. Egawa <2014.04.13>
戻る