psvelo メモ

ベクトル場を矢印で描いたり,楕円を描いたりできる.詳細は

man psvelo

で確認できる.

ベクトル場,矢印

gmt psvelo -J -R -B -Se[velscale]/[confidence]/[fontsize] -A[params] -G[fill] inputfile.txt > output.ps

-J, -R, -B

いつもの共通オプション.省略.

input file

例えば filegradient.txt のようなファイル. それぞれの点で,各列に以下の情報が格納されているファイルを入力する.

  • 1,2列: lon(x), lat(y)
  • 3,4列: east(x)方向, north(y)方向成分
  • 5,6列: east(x)方向, north(y)方向の不確実性(?)
  • 7列: 2方向成分の相関(?)
  • 8列: (空白でも可) 名前

上記の配列は -Se を指定した場合で,-Sr などの場合は入れるべき変数が異なる.
下記の例にあるような図を描く場合には,5〜7 列目の値を変えても何も変わらない.

-Se[velscale]/[confidence]/[fontsize]

  • velscale: 矢印全体の大きさを調節する.
  • confidence: 楕円を描く際に使う信頼限界.ここでは関係ない.
  • fontsize: caption のフォントサイズ.スケールを表示する時に使う.表示させない場合は0でOK.

-A[params]

必須ではないがほとんどの場合で必要.矢印の形状について指定する.
指定方法は一つではなく

-A0.03/0.25/0.10 # LineWidth/HeadLength/HeadSize, 数値は例

という方法と

-A+a25+e # vector attributes, 数値は例

という方法がある.vector attributes の指定子は

  • +a: Arrow Headの傘(?)の開く角度(デフォルト30deg)
  • +e: 線の末端に Arrow Head を置く (+s, +m は始点,中間点)
  • +r: Arrow Headの半分右側だけ表示する(+l は左側だけ)
  • +g[fill]: Arrow Headの内部の着色 (fill attributes)
  • +p[pen]: 線のスペック(pen attributes) など.

-G[fill]

fill attributes で矢印の着色.-A から vector attributes を指定した場合はそれ優先. Arrow Head も線もどちらも同じ色になる.

例1, 2種類で描いてみる

#!/bin/bash

# input file
input="gradient.txt"


# params and options
wid=12 # paper size
proj="X$wid" # -J
region="-3/3/-3/3" # -R
axes="-Ba1f1 -Bx+lX-axis -By+lY-axis -BWSne+ggray95" # -B

# -Se velscale / confidence / fontsize
sc=0.4
conf=0.0
fs=12
# Output 1
psname="psveloA1.ps"
# -A LineWidth / HeadLength / HeadSize
LW=0.03
HL=0.25
HS=0.10

# vector field
gmt psvelo -J$proj -R$region $axes -A$LW/$HL/$HS -Gblack -Se$sc/$conf/0 -P -V -K $input > $psname

# arrow scale
gmt psvelo -J -R -A$LW/$HL/$HS -Gblack -Se$sc/$conf/$fs -P -V -O <<EOF >> $psname
# lon   lat    u1    u2  sig1  sig2  cor  (option) name 
-2.00  2.80  1.00  0.00  0.00  0.00  0.0     1.0 [unit]
EOF
## Output 2
psname="psveloA2.ps"
arrow="+a25+e+gred+p0.5" # Vector Attribute

# vector field
gmt psvelo -J$proj -R$region $axes -A$arrow -Gblack -Se$sc/$conf/0 -P -V -K $input > $psname

# arrow scale
gmt psvelo -J -R -A$arrow -Gblack -Se$sc/$conf/$fs -P -V -O <<EOF >> $psname
# lon   lat    u1    u2  sig1  sig2  cor  (option) name 
-2.00  2.80  1.00  0.00  0.00  0.00  0.5     1.0 [unit]
EOF

psveloA1.png psveloA2.png

例2, 矢印のスケールを図の外側に配置する

例1のようにオプションをベクトル場を描く場合と同一にすると,図の内側にしかスケールを配置できない.
単純に lon, lat または x, y の値を変更しても,範囲外になると矢印が表示されなくなってしまう.
図の外に矢印のスケールを配置するには,スケールを描くときだけ図を大きくする.
または,psvelo の時に図の原点位置をシフトする -X と -Y オプションに値を与えてずらし,外側に配置させる.

#!/bin/bash
# input file
input="gradient.txt"
# Output
psname="psvelo.ps"


# params and options
wid=12 # paper size
proj="X$wid" # -J
region="-3/3/-3/3" # -R
axes="-Ba1f -Bx+lX-axis -By+lY-axis -BWSne+ggray95" # -B

# -Se velscale / confidence / fontsize
sc=0.4
conf=0.0
fs=12

# -A LineWidth / HeadLength / HeadSize
LW=0.03
HL=0.25
HS=0.10
# vector field
gmt psvelo -J$proj -R$region $axes -A$LW/$HL/$HS -Gblack -Se$sc/$conf/0 -P -V -K $input > $psname
# scale (inside)
gmt psvelo -J -R -A$LW/$HL/$HS -Gblack -Se$sc/$conf/$fs -P -V -O -K <<EOF >> $psname
# lon   lat    u1    u2  sig1  sig2  cor  (option) name 
-1.50  2.80  1.00  0.00  0.00  0.00  0.0   (in) 1.0 [unit]
EOF
# scale (outside)
gmt psvelo -Y1.0 -J -R -A$LW/$HL/$HS -Gblack -Se$sc/$conf/$fs -P -V -O <<EOF >> $psname
# lon   lat    u1    u2  sig1  sig2  cor  (option) name 
-1.50  2.80  1.00  0.00  0.00  0.00  0.0   (out) 1.0 [unit]
EOF
psvelo.png

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2019-11-13 (Wed) 17:24:15 (32d)