作図例とスクリプト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F129300%2F01e456d6-fdd4-49a9-ced7-65426110dc1c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ed8e341c832c7862953978990cabe46f)
fig=fig_torus1.eps
gmt set FONT_LABEL 12p
gmt set MAP_TICK_LENGTH_PRIMARY 0c
echo "-4 0 2" | gmt psxy -R-8/8/-4/4 -JX8/4 -SC -W2 -P -K > $fig
echo " 4 0 2" | gmt psxy -R -JX -SC -W2 -O -K >> $fig
gmt psxy -R -JX -Sv0.2+s -W1 -K -O << EOT >> $fig
-4 2 4 2
-4 -2 4 -2
-5.414 1.414 -5.414 2.600
EOT
gmt psxy -R -JX -Sv0.2+s -W1,15_5_5_5:0 -K -O << EOT >> $fig
0 -4 0 4
-6.3 0 6.3 0
-4 -2.5 -4 2.5
4 -2.5 4 2.5
EOT
gmt set MAP_VECTOR_SHAPE 0
gmt psxy -R -JX -Sv0.2+s+e+a60 -W2 -G0 -O -K << EOT >> $fig
-4 2 -2 2
4 2 2 2
-5.414 1.414 -6.828 0
5.414 1.414 6.828 0
EOT
awk 'BEGIN{pi=3.141592654;for(i=0;i<=330;i=i+30){x1=4+1.2*cos(i/180*pi);y1=1.2*sin(i/180*pi);\
x2=4+2*cos(i/180*pi);y2=2*sin(i/180*pi);print x1,y1,x2,y2}}' | gmt psxy -R -JX -Sv0.2+s+e+a60 -W2 -G0 -O -K >> $fig
gmt set MAP_VECTOR_SHAPE 1
gmt psxy -R -JX -Sv0.2+s+b+e+a45 -W0.5 -G0 -O -K << EOT >> $fig
-5.414 2.6 0 2.6
0 2.6 4 2.6
-4 0 -5.414 -1.414
0 -4 -5.414 1.414
EOT
gmt pstext -R -J -F+f+a+j -N -K -O << EOT >> $fig
-2.707 3.0 10p,Helvetica 0 MC r@-0@-
2 3.0 10p,Helvetica 0 MC b
-6.828 1.0 10p,Helvetica 0 MC N@~j@~
-1.8 1.5 10p,Helvetica 0 MC N@~j@~
1.8 1.5 10p,Helvetica 0 MC N@~j@~
6.828 1.0 10p,Helvetica 0 MC N@~j@~
-5 -0.5 10p,Helvetica 0 MC a
-3.3 -1.3 10p,Helvetica 0 MC r
-0.5 -3.0 10p,Helvetica 0 MC @~j@~
4.5 0.5 10p,Helvetica 0 MC p
EOT
echo "0 0" | gmt psxy -R0/1/0/1 -J -Sp -N -K -O >> $fig
echo "1 1" | gmt psxy -R0/1/0/1 -J -Sp -N -O >> $fig
主なコマンド
2点を結ぶ直線を引く (-Sv0.2+s -W1)
-Sv+sで,2点を結ぶ直線を描画します.線種は-Wオプションで指定します. -Sv の次の数値 0.2 は矢印の長さです.ここでは無意味ですが,入れておく必要があるようです. 下の例では実線が描画されます.
gmt psxy -R -JX -Sv0.2+s -W1 -K -O << EOT >> $fig
-4 2 4 2
-4 -2 4 -2
-5.414 1.414 -5.414 2.600
EOT
2点を結ぶ一点鎖線を引く (-Sv0.2+s -W1,15_5_5_5:0)
-Sv+sで,2点を結ぶ直線を描画します.線種は-Wオプションで指定することにより実線,破線など線種を変えることができます. 下の事例では,一点鎖線が描画されます.
gmt psxy -R -JX -Sv0.2+s -W1,15_5_5_5:0 -K -O << EOT >> $fig
0 -4 0 4
-6.3 0 6.3 0
-4 -2.5 -4 2.5
4 -2.5 4 2.5
EOT
片矢印 (-Sv0.2+s+e+a45)
-Sv に,s:始点と終点座標を与える,e:終点方向矢印,a45:矢印の角度を加えて片矢印を描画します. 線種は,-Wオプションにて指定します. 下にコマンド事例を示します.
gmt set MAP_VECTOR_SHAPE 0
gmt psxy -R -JX -Sv0.2+s+e+a60 -W2 -G0 -O -K << EOT >> $fig
-4 2 -2 2
4 2 2 2
-5.414 1.414 -6.828 0
5.414 1.414 6.828 0
EOT
両矢印 (-Sv0.2+s+b+e+a45)
-Sv に,s:始点と終点座標を与える,b:始点方向矢印,e:終点方向矢印,a45:矢印の角度を加えて両矢印を描画します. 片矢印との違いは,b と e で2方向の矢印を指定することです. 線種は,-W オプションにて指定します.下にコマンド事例を示します.
gmt set MAP_VECTOR_SHAPE 1
gmt psxy -R -JX -Sv0.2+s+b+e+a45 -W0.5 -G0 -O -K << EOT >> $fig
-5.414 2.6 0 2.6
0 2.6 4 2.6
-4 0 -5.414 -1.414
0 -4 -5.414 1.414
EOT
テキストの表示 (pstext)
コマンド pstext を用いてテキストを表示する.指定は面倒だが表示の自由度は高いし便利.
コマンド例
gmt pstext -R0/1/0/1 -J -F+f+a+j -N -K -O << EOT >> $fig
0.50 0.75 10p 0 LM Tunnel radius
EOT
データ書式
テキスト描画では,x座標・y座標・テキストは必須として,-F+f+a+jに対し以下のようにデータとして入力します.
x y f a j s
x | : x座標 |
y | : y座標 |
f | : フォント(サイズは必須),デフォルトフォントは Helvetica |
a | : 角度 |
j | : 座標に対する表示位置 |
s | : 表示するテキスト |
表示位置は以下のアルファベットの組み合わせを指定します.
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) |
シンボル(ギリシャ文字),上付き,下付きなどのマークアップの文字列を下に示します.
Code | Effect |
@~ | シンボルフォント(ギリシャ文字)の始まりと終わり |
@+ | 上付き文字の始まりと終わり |
@- | 下付き文字の始まりと終わり |
@# | 小さい大文字の始まりと終わり |
@_ | 下線の始まりと終わり |
@%fontno% | フォントの変更; @%% で元のフォントに戻す |
@:size: | フォントサイズの変更; @:: で元のフォントサイズに戻す |
@;color; | フォント色の変更; @;; で元の色に戻す |
@! | これに続く2文字を合成 |
@@ | @マークの表示 |
アルファベットとギリシャ文字の関係は下に示すとおりです.
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F129300%2Fc50c6e1d-953b-a19c-24c9-f8067a774849.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=91d9ebce13961611e0faeb348fe6170c)
fig=fig_text.eps
gmt pstext -R4/36/0/5 -JX15/3 -F+f+a+j -N -P << EOT > $fig
4 1 12p 0 LM @@~a@@~
4 2 12p 0 LM alphabet
4 3 12p 0 LM @@~A@@~
4 4 12p 0 LM ALPHABET
10 1 12p 0 MC @~a@~
11 1 12p 0 MC @~b@~
12 1 12p 0 MC @~c@~
.....
EOT
矢印の形
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F129300%2Fa2e4b8ee-bb59-ee16-eba5-28cf27e82f61.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=171cd1c25789b0b0d102d0f66371acc0)
fig=fig_gmt_arrow.eps
gmt set MAP_VECTOR_SHAPE 0
echo 1 0 1 2 | gmt psxy -R0/10/0/3 -JX10/3 -Sv0.5+s+e+a30 -W2 -G0 -P -K > $fig
echo 2 0 2 2 | gmt psxy -R -JX -Sv0.5+s+e+a45 -W2 -G255 -O -K >> $fig
echo 3 0 3 2 | gmt psxy -R -JX -Sv0.5+s+e+a60 -W2 -O -K >> $fig
gmt set MAP_VECTOR_SHAPE 1
echo 4 0 4 2 | gmt psxy -R -JX -Sv0.5+s+e+a30 -W2 -G0 -O -K >> $fig
echo 5 0 5 2 | gmt psxy -R -JX -Sv0.5+s+e+a45 -W2 -G0 -O -K >> $fig
echo 6 0 6 2 | gmt psxy -R -JX -Sv0.5+s+e+a60 -W2 -G0 -O -K >> $fig
gmt set MAP_VECTOR_SHAPE 1.5
echo 7 0 7 2 | gmt psxy -R -JX -Sv0.5+s+e+a30 -W1 -G0 -O -K >> $fig
echo 8 0 8 2 | gmt psxy -R -JX -Sv0.5+s+e+a45 -W1 -G0 -O -K >> $fig
echo 9 0 9 2 | gmt psxy -R -JX -Sv0.5+s+e+a60 -W1 -G0 -O >> $fig
ハッチングパターン
echo 0.5 -0.5 | psxy -R0/12/-15/1 -JX12/15 -SS1 -Gp200/1:F0/0/0B- -P -K > fig_gmt_pat0.eps
echo 1.5 -0.5 | psxy -R -J -SS1 -GP200/1:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 2.5 -0.5 | psxy -R -J -SS1 -Gp200/2:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 3.5 -0.5 | psxy -R -J -SS1 -GP200/2:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 4.5 -0.5 | psxy -R -J -SS1 -Gp200/3:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 5.5 -0.5 | psxy -R -J -SS1 -GP200/3:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 6.5 -0.5 | psxy -R -J -SS1 -Gp200/4:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 7.5 -0.5 | psxy -R -J -SS1 -GP200/4:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 8.5 -0.5 | psxy -R -J -SS1 -Gp200/5:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 9.5 -0.5 | psxy -R -J -SS1 -GP200/5:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 10.5 -0.5 | psxy -R -J -SS1 -Gp200/6:F0/0/0B- -K -O >> fig_gmt_pat0.eps
echo 11.5 -0.5 | psxy -R -J -SS1 -GP200/6:F0/0/0B- -K -O >> fig_gmt_pat0.eps
........
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F129300%2Fd103fc5d-7dea-1954-812e-b250e0312645.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=edcfb64f71d0bcfb8691d8daf28b2d08)