绘制矢量场

贡献者

SeisPider

使用 grdvector 模块绘制矢量场,需要提供矢量场的 X 分量和 Y 分量。

本文所使用的示例数据,包含四列信息:

X位置   Y位置    矢量X分量   矢量Y分量

示例中使用 xyz2grd 模块分别生成矢量X分量和Y分量的网格文件,再使用 grdvector 模块进行绘制,最后生成图例。

示例数据下载 velocity.dat

#!/usr/bin/env sh
#
# 绘制矢量场
#
gmt begin vector-fields
gmt basemap -R0/400/0/400 -JX-10c/-10c -Bxaf+l"X [km]" -Byaf+l"Depth [km]" -BEnSw+t"Mantle Velocity"

# 将速度矢量的 X 分量和 Y 分量分别转换成网格文件
gmt xyz2grd velocity.dat -R0/400/0/400 -I10/10 -i0,1,2 -GU.nc
gmt xyz2grd velocity.dat -R0/400/0/400 -I10/10 -i0,1,3 -GV.nc

# 绘制矢量
# -Q 设置矢量属性
# -G 设置矢量内部颜色填充
# -W 设置绘制矢量外边画笔的属性
# -S 设置矢量值和图上距离的换算关系: 20c表示长度为20的矢量在图上的长度为1 cm
gmt grdvector U.nc V.nc -I10/10 -Q0.2c+e+n0.5c+h0.5 -Gblack -W1p -S20c

# 绘制图例
# 长度为 5 cm/year 的矢量对应的长度为 0.25 cm
gmt legend -F+gwhite+p0.5p,black -DjBR+w2.2c+o0.1c/0.1c << EOF
S 0.2c v0.2c+e+n0.5c+h0.5 0.25c black 1p 0.5c 5 cm/year
EOF

rm U.nc V.nc
gmt end show
../../_images/8a6a8e6f891062a0ab1c3334af2ea8bf.png