WANtaroHP (GMT Tips)

 

Contents



重ねがき時のルール: >,>>,-K,-O

出力画像がうまく作成できない場合の原因は,この指定がルールどおり行われていない場合が多いので注意!

  • コマンド1行目の出力ファイル指定は,> を用いる
  • コマンド2行目以降の出力ファイル指定は,>> を用いる
  • コマンド1行目には -K を指定
  • コマンド2行目以降には -K,-O を指定
  • コマンド最終行には -O を指定
set fig=fig_out.eps
psbasemap ........ -K > %fig%
psxy ............. -K -O >> %fig%
psxy ............. -K -O >> %fig%
・・・・・
・・・・・
pstext ............. -K -O >> %fig%
pstext ............. -O >> %fig%

GMT実行用バッチファイルをプログラムのdoループなどで機械的に作成・出力する場合,全てに「-K -O >>」をつけたい場合もあります. このような場合は,最終行を以下のようにすることで処理できます.これは原点に点を打つコマンドで,この程度であればグラフの中で邪魔にはならないでしょう.好みにもよりますが.

echo 0 0 | psxy -R -J -Sp -O >> %fig%


-P の指定

-P を指定しないと,A4 横の紙に印刷されたイメージとなる. -P を指定しない場合,gsview で確認する場合は問題ないが,png にして貼り付けようとする場合,90 度回転させる必要があることに注意!



-N の指定

-N を指定することにより,グラフの領域外にもプロットやテキストを描画できるようになる. これを指定することにより,グラフ欄外にテキストの注書をいれたりできる. ただし,データがグラフ領域外にあっても描画されてしまうので,各コマンド行で使い分けたほうがよい.



-H の指定

-H により入力ファイルから読み飛ばす行数を指定できる.デフォルトは1行. gmtdefaults で N_HEADER_RECS=1 とされている. -H を指定しなければ,入力ファイルの1行目よりデータを読み込む.



-: の指定

-: により入力ファイルから読み込む (x,y) の順番を逆転させる. デフォルトでは,(経度,緯度) あるいは (x,y) の順に読み込むが,-: を指定することにより,(緯度,経度) あるいは (y,x) の順に読み込む.



-X,-Y の指定

-X あるいは -Y により原点を移動させる. デフォルトは,gmtdefaults の X_ORIGIN および Y_ORIGIN で指定されており,いずれも 2.5cm. 複数のグラフを 1 ページに表示したり,ラベルが紙の端で切れてしまう場合などに使用する.



-U の指定

-U はタイムスタンプをグラフの左下に表示する.-Utext のように -U に続いてテキストを指定することにより,タイムスタンプに続いて指定したテキストを表示する.



-W で線種を指定する (psxy)

コマンド例

gawk "BEGIN{FS=\",\"}{if(568<=NR&&NR<=610)print $2,$5*1000}" %inp_1% | psxy -R -J -B -W5t15_5_5_5:0 -P -O -K >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(568<=NR&&NR<=610)print $2,$5*1000}" %inp_2% | psxy -R -J -B -W5t10_10:0 -P -O -K >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(568<=NR&&NR<=610)print $2,$5*1000}" %inp_3% | psxy -R -J -B -W5t5_5:0 -P -O -K >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(568<=NR&&NR<=610)print $2,$5*1000}" %inp_4% | psxy -R -J -B -W5 -P -O -K >> %fig_out%

-W で線種を指定する.指定は面倒だが表示の自由度は高いし便利.

この事例では,入力データファイルは変数 inp_1 などとして定義し,gawkで整形後 psxy に送り込んでいる.

-W5 太さ5の実線
-W5t10_10:0 太さ5の長い破線
-W5t5_5:0 太さ5の短い破線
-W5t15_5_5_5:0太さ5の一点鎖線

以下のようにしても,簡単に線種を指定できる.

-W5,- 太さ5の長い破線
-W5,. 太さ5の短い破線(点線)
-W5,-.太さ5の一点鎖線


-SvS で実線と矢印を表示する (psxy)

説明

  • -Sv ベクトルを描画する.
  • 小文字の v では水平より反時計回りに角度を指定.
  • 大文字の V では時計の0時方向より時計回りに角度を指定.
  • 入力データは以下の4個のデータ組で指定する.
    x座標 y座標 角度(度) 矢印の長さ
    
  • 指定した座標と矢印の描画位置の関係により,t,b,h の区分がある.default は t である.
    t: tail 指定座標を矢印の起点とする
    b: balance指定座標を矢印の長さの中央とする
    h: head 指定座標を矢印の終点とする
  • t,b,h の代わりに s を指定する (-Svs) と始点と終点を入力データとする矢印を描ける.
    始点x座標 始点y座標 終点x座標 終点y座標
    
  • default では片矢印であるが,T,B,H など大文字を指定することにより両矢印となる.
  • -Svt0.01/0.2/0.1 のように -Svt に続く数値により,矢印の形状を指定できる.
  • 矢印の形状は,「arrowwidth/headlength/headwidth」の順に指定する.
  • 矢印形状データの default は「0.075cm/0.3cm/0.25cm」である.

上の図を描画するバッチファイルは下に示すとおり.

set fig=fig_arrow1.eps
echo 0 0 90 4 | psxy -JX4/6 -R-2/2/-1/5 -Svt1/2/1 -W3 -P -K > %fig%
echo 0.0 -0.3 0.5 | psxy -JX -R -Sp -Ex -W1 -P -K -O >> %fig%
echo 0.5  4.3 0.5 | psxy -JX -R -Sp -Ex -W1 -P -K -O >> %fig%
echo 1.3  3.0 1.0 | psxy -JX -R -Sp -Ey -W1 -P -K -O >> %fig%
echo 0.0 -0.6 12  0 0 CM arrowwidth | pstext -R -J -N -P -K -O >> %fig%
echo 1.6  3.0 12 90 0 CM headlength | pstext -R -J -N -P -K -O >> %fig%
echo 0.5  4.6 12  0 0 CM headwidth | pstext -R -J -N -P -O >> %fig%

set fig=fig_arrow2.eps
gmtset VECTOR_SHAPE=-3
echo -3 0 0 1 | psxy -JX8/3 -R-4/4/-2/1 -SVb -P -K > %fig%
echo -3 -1 10 0 0 MC -3 | pstext -R -J -N -K -O >> %fig%
gmtset VECTOR_SHAPE=-2
echo -2 0 0 1 | psxy -J -R -SVb -P -K -O >> %fig%
echo -2 -1 10 0 0 MC -2 | pstext -R -J -N -K -O >> %fig%
gmtset VECTOR_SHAPE=-1
echo -1 0 0 1 | psxy -J -R -SVb -P -K -O >> %fig%
echo -1 -1 10 0 0 MC -1 | pstext -R -J -N -K -O >> %fig%
gmtset VECTOR_SHAPE=0
echo 0 0 0 1 | psxy -J -R -SVb -P -K -O >> %fig%
echo 0 -1 10 0 0 MC 0 | pstext -R -J -N -K -O >> %fig%
gmtset VECTOR_SHAPE=1
echo 1 0 0 1 | psxy -J -R -SVb -P -K -O >> %fig%
echo 1 -1 10 0 0 MC 1 | pstext -R -J -N -K -O >> %fig%
gmtset VECTOR_SHAPE=2
echo 2 0 0 1 | psxy -J -R -SVb -P -K -O >> %fig%
echo 2 -1 10 0 0 MC 2 | pstext -R -J -N -K -O >> %fig%
gmtset VECTOR_SHAPE=3
echo 3 0 0 1 | psxy -JX -R-4/4/-2/1 -SVb -P -K -O >> %fig%
echo 3 -1 10 0 0 MC 3 | pstext -R -J -N -K -O >> %fig%
rem
echo 0 -1.5 10 0 0 MC VECTOR_SHAPE | pstext -R -J -N -O >> %fig%

コマンド例

gmtset VECTOR_SHAPE 1
echo  2.50  1.7  2.50 -0.6 | psxy -R -J -SvS0.005/0.0/0.0 -G0 -O -K >> %fig_out%
echo -2.50 -0.5  2.50 -0.5 | psxy -R -J -SvS0.005/0.2/0.1 -G0 -O -K >> %fig_out%

-SvS で矢印のない実線と矢印を指定する.説明図作成時に便利.

この事例では,入力データファイルは用いず,batch ファイル内で echo を用いて psxy に送り込むデータをセットしている.

  • gmtset VECTOR_SHAPE 1 : これで矢印の基本形状をデフォルトから変更指定
  • -SvS ベクトルは始点と終点で指定,両矢印とする
  • 矢印形状は「arrowwidth/headlength/headwidth」で指定
  • 0.005/0.0/0.0 線の太さ0.005cmの線(矢印無し)
  • 0.005/0.2/0.1 線の太さ0.005cm,矢印頭の長さ0.2cm,矢印頭の幅0.1cm
  • -Svs とすれば片矢印となる


通常のプロットのデータ書式 (psxy)

コマンド例

set inp_dat=inp_dat1.txt
set fig_out=fig_out1.eps
..........
psxy %inp_dat% -R -JX -SC0.2 -G0 -N -O >> %fig_out%

-SC0.2 により,0.2cm の円をプロットする.

入力ファイル名 inp_dat1.txt と出力画像ファイル名 fig_out1.eps は,あらかじめ変数として set コマンドで定義しておく.

データ書式

x座標 y座標


y方向エラーバー表示 (psxy)

コマンド例

set inp_dat=inp_dat1.txt
set fig_out=fig_out1.eps
..........
psxy %inp_dat% -R -JX -SC0.2 -G0 -Ey -N -O >> %fig_out%

-SC0.2 により,0.2cm の円をプロットし,-Ey でエラーバーを表示する. エラーバーの長さは片側長さに対応.

データ書式

x座標 y座標 y方向エラーバー長さ


x・y方向エラーバー表示 (psxy)

コマンド例

set inp_dat=inp_dat1.txt
set fig_out=fig_out1.eps
..........
psxy %inp_dat% -R -JX -SC0.2 -G0 -Ex -Ey -N -O >> %fig_out%

-SC0.2 により,0.2cm の円をプロットし,-Ex および -Ey で x 方向と y 方向のエラーバーを表示する.

データ書式

x座標 y座標 x方向エラーバー長さ y方向エラーバー長さ


プロットの大きさを変える (psxy)

コマンド例

set inp_dat=inp_dat1.txt
set fig_out=fig_out1.eps
..........
psxy %inp_dat% -R -JX -SC -G255 -W3 -N -O >> %fig_out%

-SC にプロットの大きさは指定しない.プロットの大きさは入力データで指定される.

データ書式

x座標 y座標 z値(プロットの大きさ)


プロットの色を変える (psxy)

コマンド例

set inp_dat=inp_dat1.txt
set fig_out=fig_out1.eps
..........
psxy %inp_dat% -R -JX -SC0.5 -Cinp_wg_34cpt.cpt -N -O >> %fig_out%

-SC0.5 により,0.5cm の円の描画を指定.-C でカラーパレットファイルを指定. 入力データ中の z 値の値により,カラーパレットファイルで指定された色で円が着色される.

データ書式

x座標 y座標 z値(色区分に対応)

カラーパレットファイルの基本書式

z1値  R1  G1  B1 z2値 R2  G2  B2
0     0   0   0  20   0   0   0
20   255   0   0  40 255   0   0
40     0 255   0  60   0 255   0
60     0   0 255  80   0   0 255
80   255   0 255 100 255   0 255

RGBでの基本色表示

Color R G B
Black 0 0 0
Red 255 0 0
Lime 0 255 0
Blue 0 0 255
Yellow 255 255 0
Fuchsia 255 0 255
Aqua 0 255 255
White 255 255 255


プロットの色と大きさを変える (psxy)

コマンド例

set inp_dat=inp_dat1.txt
set fig_out=fig_out1.eps
..........
psxy %inp_dat% -R -JX -SC -Cinp_wg_34cpt.cpt -N -O >> %fig_out%

-SC でプロットの大きさを指定せず,-C でカラーパレットファイルを指定. プロットの色と大きさは,入力ファイルで指定されたものとなる.

データ書式

x座標 y座標 za値(色区分に対応) zb値(大きさに対応)


-m の指定 (psxy)

psxy コマンドの中で '-m' を指定することにより,複数の曲線を同一ファイルから読み取ることが可能になる. この時,入力ファイルの先頭行は '>' で始まり,データ組の区切りにも '>' を用いる.

データ例

2本の直行する同一線種の線を,同一ファイルから読み込む場合の入力データファイルの事例を下に示す.

>
0.000 -2600.000
0.000  2500.000
>
-2600.000  0.000
3300.000  0.000


テキストの表示 (pstext)

コマンド例

echo 0.02 0.85  8 0 0 TL text | pstext -R0/1/0/1 -JX8/4 -N -K -O >> %fig_out%

コマンド pstext を用いてテキストを表示する.指定は面倒だが表示の自由度は高いし便利. フォントNo:0 は Helvetica.

この事例では,入力データファイルは用いず,batch ファイル内で echo を用いて pstext に送り込むデータをセットしている.

データ書式

x座標 y座標 フォントサイズ 回転角(度) フォントNo 位置関係 テキスト

位置関係は以下のアルファベットの組み合わせを指定します.

TL(top-left) TC(top-center) TR(top-right)
ML(middle-left)MC(middle-center)MR(middle-right)
BL(bottom-left)BC(bottom-center)BR(bottom-right)

シンボル(ギリシャ文字),上付き,下付きなどのマークアップの文字列を下に示します.

CodeEffect
@~ シンボルフォント(ギリシャ文字)の始まりと終わり
@+ 上付き文字の始まりと終わり
@- 下付き文字の始まりと終わり
@# 小さい大文字の始まりと終わり
@_ 下線の始まりと終わり
@%fontno%フォントの変更; @%% で元のフォントに戻す
@:size: フォントサイズの変更; @:: で元のフォントサイズに戻す
@;color; フォント色の変更; @;; で元の色に戻す
@! これに続く2文字を合成
@@ @マークの表示

アルファベットとギリシャ文字の関係は下に示すとおりです.



minmax の利用

入力サンプルデータ

test1.txt
(1列データ)
0.1
0.2
0.3
0.4
0.5
test2.txt
(2列データ)
1 10
2 20
3 30
4 40
5 50
test5.txt
(5列データ)
1 10 100 1000 10000
2 20 200 2000 20000
3 30 300 3000 30000
4 40 400 4000 40000
5 50 500 5000 50000

使い方

minmax test1.txt > out.txt
minmax test2.txt >> out.txt
minmax test5.txt >> out.txt

test1.txt, test2.txt, test5.txt は入力ファイル,out.txtは出力ファイル

出力事例

test1.txt: N = 5	<0.1/0.5>
test2.txt: N = 5	<1/5>	<10/50>
test5.txt: N = 5	<1/5>	<10/50>	<100/500>	<1000/5000>	<10000/50000>

結果は,「入力ファイル名,データ数,1列目の<最小値/最大値>,・・・,5列目の<最小値/最大値>」として出力される.



pic
inserted by FC2 system