plot

官方文档:

plot

简介:

在图上绘制线段、多边形和符号

该命令既可以绘制线段和多边形(多边形是闭合的线段),也可以绘制符号。 唯一的区别在于是否使用了 -S 选项:

  • 不使用 -S 选项,默认将所有的数据点连成线,即绘制线段或多边形

  • 使用 -S 选项,则仅在数据点所在位置绘制符号

可选选项

-A[m|p|x|y]

修改两点间的连接方式。

地理投影下,两点之间默认沿着大圆弧连接。

  1. -A :忽略当前的投影方式,直接用直线连接两点

  2. -Am :先沿着经线画,再沿着纬线画

  3. -Ap :先沿着纬线画,再沿着经线画

笛卡尔坐标下,两点之间默认用直线连接。

  1. -Ax 先沿着X轴画,再沿着Y轴画

  2. -Ay 先沿着Y轴画,再沿着X轴画

下图中,黑色曲线为默认情况;红线为使用 -A 的效果;蓝线为使用 -Ap 的效果;黄线为使用 -Am 的效果:

Source Code

../../_images/4125205fa5ee28478e4c308aa1be7447.png

plot -A选项示意图

注:由于这里投影比较特别,所以沿着经线的线和沿着纬线的线,看上去都是直线, 在其他投影方式下可能不会是这样。

-Ccpt

指定CPT文件或颜色列表

该选项后跟一个CPT文件名,使符号和多边形的填充颜色、线段和多边形的线条颜色由 Z 值决定。

  1. 若绘制符号(即使用 -S 选项),则符号的填充色由数据的第三列Z值决定, 其他数据列依次后移一列。

  2. 若绘制线段或多边形(即未使用 -S 选项),则需要在多段数据的数据段头记录中指定 -Zval (参见 数据段头记录中的额外属性 ),CPT文件中 val 所对应的颜色, 即为线段或多边形的线条颜色。如果要设置为多边形的填充色,注意应该要额外使用 -L 选项构建闭合多边形。

除此以外,也可以使用 -C<color1>,<color2>,... 语法在 命令行上临时构建一个颜色列表,其中 <color1> 对应Z值为0的颜色, <color2> 对应Z值为1的颜色,依次类推。

下面的例子展示了 -C<color1>,<color2>.. 用法:

gmt plot -JX10c/10c -R0/10/0/10 -B1 -Cblue,red -W2p -png test << EOF
> -Z0
1 1
2 2
> -Z1
3 3
4 4
EOF
-Ddx/dy

设置符号的偏移量。

该选项会将要绘制的符号或线段在给定坐标的基础上偏移 dx/dy 距离。 若未指定 dy,则默认 dy*=*dx

-E[x|y|X|Y][+a][+cl|f][+n][+wcap][+ppen]

绘制误差棒。

默认会绘制X和Y两个方向的误差棒。 x|y 表示只绘制X方向和/或Y方向的误差棒, 此时输入数据的格式为(具体格式由选项决定):

X  Y   [size]     [X_error]    [Y_error]  [others]

例如,X方向误差为1:

echo 5 5 1 | gmt plot -R0/10/0/10 -JX10c/10c -B1 -Sc0.1c -Ex -W2p -png test

X方向误差为1,Y方向误差为0.5:

echo 5 5 1 0.5 | gmt plot -R0/10/0/10 -JX10c/10c -B1 -Sc0.1c -Exy -W2p -png test

使用 +a 表示X方向和/或Y方向为非对称误差棒,此时输入数据的格式为:

X  Y   [size]   [X_left_error X_right_error]  [Y_left_error Y_right_error] [others]

例如:

echo 5 5 1 0.4 0.5 0.25 | gmt plot -R0/10/0/10 -JX10c/10c -B1 -Sc0.1c -Exy+a -W2p -png test

使用 XY 则绘制box-and-whisker(即stem-and-leaf)符号。以 -EX 为例,此时数据数据格式为:

X中位数  Y  0%位数 25%位数 75%位数 100%位数

25%到75%之间的方框内可以用 -G 选项填充颜色:

echo 5 5 4 4.25 5.4 7 | gmt plot -R0/10/0/10 -JX10c/10c -B1 -Sc0.1c -EX -Gred -W2p -png test
  • 若使用 -EXY ,则输入数据中至少需要10列;

  • 若在X或Y后加上了 +n ,则需要在额外的第5列数据指定中位数的不确定性。

  • +wcap 控制误差棒顶端帽子的长度,默认值为7p

  • +ppen 控制误差棒的画笔属性,默认值为 defalut,black,solid

  • 在使用 -C 选项时,可以从CPT文件中查找到符号所对应的颜色

    • +c 表明将颜色应用于符号填充色和误差棒画笔属性

    • +cf 表明仅将颜色用于填充符号

    • +cl 表面仅将颜色用于设置误差棒画笔属性,并关闭符号填充色

-F[c|n|r][a|f|s|r|refpoint]

修改数据点的分组和连接方式。

数据的分组方式有三种:

  1. a 忽略所有数据段头记录,即将所有文件内的所有数据点作为一个单独的组, 并将第一个文件的第一个数据点作为该组的参考点

  2. f 将每个文件内的所有点分在一个组,并将每一组内的第一个点作为该组的参考点

  3. s 每段数据内的点作为一组,并将每段数据的第一个点作为该组的参考点

  4. r 每段数据内的点作为一组,并将每段数据的第一个点作为该组的参考点, 每次连线后将前一个点作为新的参考点,该选项仅与 -Fr 连用(似乎与 -Fcs 等效?)

  5. refpoint 指定某个点为所有组共同的参考点

在确定分组后,还可以额外定义组内各点的连接方式:

  • c 将组内的点连接成连续的线段

  • r 将组内的所有点与组内的参考点连线

  • n 将每个组内的所有点互相连线

在不使用 -F 选项的情况下,默认值为 -Fcs 。该选项的具体示例在后面给出。

-Gfill

设置符号或多边形的填充色。多段数据中数据段头记录中的 -G 选项会覆盖命令行中的设置。

-Iintens

模拟光照效果

<intens> 的取值范围为-1到1,用于对填充色做微调以模拟光照效果。正值 表示亮色,负值表示暗色,零表示原色。

-L[+b|d|D][+xl|r|x0][+yb|t|y0][+ppen]

将第一个和最后一个数据点连接起来。

plot 在绘制线条时,默认只将输入文本中相邻的数据点用线条连接起来。 使用 -L 选项后,plot 会额外地再将第一个和最后一个数据点连接起来,形成封闭的图形。 如果第一个和最后一个数据点的连线和其它连线交叉,就会形成不止一个封闭图形。 -L 选项常常和 -G 选项同时使用以进行颜色填充。下面看不同搭配的画图效果:

#!/usr/bin/env bash
cat << EOF > t.txt
1 1
2 3
3 2
4 4
EOF
cmd='t.txt -R0/5/0/5 -JX4c -W1p -Ba1f1'
gmt begin plot_-L_1
gmt plot $cmd -BWStr+t'No -G or -L'
gmt plot $cmd -BWStr+t'-G Only' -Gorange -X5c
# -L选项中的+p子选项对画笔的外观设置一律无效
# 没有-G选项时,使用-L选项必须使用+p子选项,但相关设置无效
gmt plot $cmd -BWStr+t'-L Only' -L+p10p,blue -X5c
gmt plot $cmd -BWStr+t'both -G and -L' -Gorange -L+p10p,blue -X5c
gmt end show
rm t.txt
../../_images/0a24074e6a0e0af45ec85b047e8c119e.png

-L 和 -G 选项不同搭配方式的效果

-L 选项还可以绘制两类包络:一类是围绕线条的包络,另一类是到指定位置的包络。 首先来看围绕线条的包络:

  1. +d 围绕线条绘制对称的包络,包络相对于线条的y轴幅度由数据文件内的第三列给出

  2. +D 围绕线条绘制不对称的包络,包络相对于线条的y轴幅度由数据文件内的第三、四列给出

  3. +b 围绕线条绘制不对称的包络,包络的y轴范围由数据文件内的第三、四列给出

下面的例子分别绘制了上述三种情形。第一幅图使用 +d 选项,数据的第三列分别是2、2、3和1, 所以包络的上下范围在线条的每一个数据点处距离线条的距离就是2、2、3和1。 第二幅图使用 +D 选项,数据的第三列分别是2、2、3和1, 所以包络的下范围在线条的每一个数据点处距离线条的距离就是2、2、3和1, 也就是和第一幅图完全相同。但是,上范围的距离使用的是数据文件的第四列,也就是4、3、2和1。 第三幅图使用 +b 选项,包络的范围与线条的位置无关。第三、四列数据分别决定了包络的上下范围。 当第三、四列数据交叉的时候,包络图形随之出现打结的现象。

#!/usr/bin/env bash
cat << EOF > t.txt
1 1 2 4
2 3 2 3
3 2 3 2
4 4 1 1
EOF
cmd='t.txt -R0/5/-2/8 -JX5c -W2p -Ba1f1 -Glightred'
gmt begin plot_-L_2
gmt plot $cmd -BWStr+t"-L\053d" -L+d
gmt plot $cmd -BWStr+t"-L\053D" -L+D -X6c
gmt plot $cmd -BWStr+t"-L\053b" -L+b -X6c
gmt end show
rm t.txt
../../_images/46d7ac73b3c80678e1868fed2901182c.png

围绕线条的包络

再来看指定位置的包络:

  1. +xl|r|x0 包络范围是从线条到线条的点的x轴最小、大值和固定值

  2. +yb|t|y0 包络范围是从线条到线条的点的y轴最小、大值和固定值

例子如下:

#!/usr/bin/env bash
cat << EOF > t.txt
1 1
2 3
3 2
4 4
EOF
cmd='t.txt -R0/5/0/5 -JX5c -W2p -Ba1f1 -Glightred'
gmt begin plot_-L_3
gmt plot $cmd -BWStr+t"-L\053xl" -L+xl
gmt plot $cmd -BWStr+t"-L\053xr" -L+xr -X6c
gmt plot $cmd -BWStr+t"-L\053x4.5" -L+x4.5 -X6c
gmt plot $cmd -BWStr+t"-L\053yt" -L+yt -X-12c -Y6.5c
gmt plot $cmd -BWStr+t"-L\053yb" -L+yb -X6c
gmt plot $cmd -BWStr+t"-L\053y4" -L+y4 -X6c
gmt end show
rm t.txt
../../_images/fd225c9af745936c036cbc3acf386917.png

到指定位置的包络

-N[c|r]

区域范围外的符号不会被裁剪,而会被正常绘制。

默认情况下,位于 -R 范围外的符号不会被绘制的。使用该选项使得即便符号的 坐标位于 -R 指定的范围外,也会被绘制。需要注意的是,该选项对线段或多边 形无效,线段和多边形总会被区域的范围裁剪。

对于存在周期性的地图而言,若符号出现在重复边界上,则会被重复绘制两次。比如:

gmt plot -R0/360/-60/60 -JM10c -Bx60 -By15 -Sc2c -png test << EOF
360 0
EOF

会在地图的左右边界处分别两个半圆,该行为可以通过 -N 选项修改:

  1. -N 关闭裁剪,符号仅绘制一次

  2. -Nr 关闭裁剪,但符号依然绘制两次

  3. -Nc 不关闭裁剪,但符号仅绘制一次

-W[pen][+cl|+cf|+c]

设置线段或符号轮廓的画笔属性。

  1. pen 具体设置见 画笔 一节,用于修改线条的宽度、颜色、线型(例如点线、虚线、点划线等)

  2. 若使用了 +cl 则表示线条颜色由CPT文件控制

  3. 若使用了 +cf 则符号的填充色由CPT文件控制

  4. 若使用了 +c 则表示线条颜色和符号填充色同时由CPT文件控制

  5. -W 选项后还可以加上额外的选项,可以指定线条的额外属性,见 线条属性 一节

-U[label][+c][+jjust][+odx/dy] (more …)

在图上绘制GMT时间戳logo

-t[transp] (more …)

设置图层透明度(百分比)。取值范围为0(不透明)到100(全透明)

-S 选项

使用 -S 选项,则表示要绘制符号。 -S 选项的基本语法是:

-S[<symbol>][<size>[<u>]]

其中 <symbol> 指定了符号类型, <size> 为符号的大小, <u><size> 的单位。

不同的符号类型,需要的输入数据格式也不同,但可以统一写成(用 ... 代表某符号 特有的输入列):

X   Y   ...
-S-|+|a|c|d|g|h|i|n|s|t|x|y|p

绘制一些简单的符号。

这几个符号比较简单,输入数据中不需要额外的列:

  • -S- :短横线, <size> 是短横线的长度;

  • -S+ :加号, <size> 是加号的外接圆的直径;

  • -Sa :五角星(star), <size> 是外接圆直径;

  • -Sc :圆(circle), <size> 为圆的直径;

  • -Sd :菱形(diamond), <size> 为外接圆直径;

  • -Sg :八边形(octagon), <size> 为外接圆直径;

  • -Sh :六边形(hexagon), <size> 为外接圆直径;

  • -Si :倒三角(inverted triangle), <size> 为外接圆直径;

  • -Sn :五边形(pentagon), <size> 为外接圆直径;

  • -Sp :点,不需要指定 <size> ,点的大小始终为一个像素点;

  • -Ss :正方形(square), <size> 为外接圆直径;

  • -St :三角形(triangle), <size> 为外接圆直径;

  • -Sx :叉号(cross), <size> 为外接圆直径;

  • -Sy :短竖线, <size> 为短竖线的长度;

对于小写符号 acdghinst<size> 表示外接圆直径; 对于大写符号 ACDGHINST<size> 表示符号的面积与直径为 <size> 的圆的面积相同。

下图给出了上面所给出的symbol所对应的符号:

Source Code

../../_images/54119979856bdaebdc80c1c3a1ef720a.png

plot -S选项示意图

除了上述简单的符号之外,还有更多复杂的符号。

-Sb|B[<size>[<u>]][b[<base>]]

绘制垂直bar。

-Sb 用于在X坐标处绘制一个从 <base> 到Y位置的垂直bar。

  1. <size> 是bar宽度,其单位可以是长度单位 c|i|p ,也可以用 u 表示X方向单位

  2. 若不指定 b<base> ,其默认值为ymin

  3. 指定 b<base> ,为所有数据点指定base值

  4. 加上 b 但未指定 <base> ,则需要额外的一列数据来指定base的值

  5. -SB-Sb 类似,区别在于 -SB 绘制水平bar

gmt plot -R0/10/0/5 -JX15c/5c -B1 -Sb1cb -png test << EOF
2 3 1 0.5
4 2 1 1.5
8 4 1 2.5
EOF
-Se|E

绘制椭圆

-Se 用于绘制椭圆。对于椭圆而言, <size> 是不需要的。此时输入数据的格式为:

X   Y   方向   长轴长度    短轴长度

其中方向是相对于水平方向逆时针旋转的角度,两个轴的长度都使用长度单位,即 c|i|p

-SE 选项与 -Se 类似,区别在于:

  • 第三列为方位角(相对于正北方向旋转的角度)。该角度会根据所选取的地图投影变换成角度

  • 对于线性投影,长短轴的长度单位为数据单位,即与 -R 中数据范围的单位相同

  • 对于地理投影,长轴和短轴的长度单位可以设置为千米或度

用长度单位指定一个椭圆:

echo 180 0 45 5c 3c | gmt plot -R0/360/-90/90 -JN15c -B60 -Se -png test

线性投影下 -SE 的长短轴的单位为数据单位:

echo 180 0 45 300 100 | gmt plot -R0/360/-90/90 -JX10c -B60 -SE -png test

地理投影下 -SE 的长短轴的单位是地理单位,默认长度单位为千米:

echo 80 0 45 22200 11100 | gmt plot -R0/360/-90/90 -JN15c -B60 -SE -png test
echo 80 0 45 200d  100d  | gmt plot -R0/360/-90/90 -JN15c -B60 -SE -png test2

若长短轴长度相等,则椭圆退化成圆,可以用于绘制直径以千米为单位的圆,从而解决了 -Sc 只能用长度单位而不能用距离单位画圆的不足。这一特性可以用于绘制等震中 距线。比如如下命令可以绘制30度等震中距线:

echo 80 0 0 60d 60d | gmt plot -R0/360/-90/90 -JN15c -B60 -SE -png test

上面示例的输入数据中,方向和短轴长度都是多余的,所以GMT提供了 -SE-[<size>] 选项用于绘制直径为 <size> 的圆,若未指定 <size> ,则需要在数据中指定 圆的直径。比如30度和60度等震中距线可以用如下命令绘制:

gmt plot -R0/360/-90/90 -JN15c -B60 -SE- -png test << EOF
180 0 60d
180 0 120d
EOF
-Sf<gap>[/<size>][+l|+r][+b+c+f+s+t][+o<offset>][+p[<pen>]]

绘制front,即在线段上加上符号以表示断层等front

  1. <gap> 线段上符号之间的距离,若 <gap> 为负值,则解释为线段上符号的个数

  2. <size> 为符号大小

    1. 若省略了 <size> ,则默认为 <gap> 的30%

    2. <gap> 为负值,则 <size> 是必须的

  3. +l+r 分别表示将符号画在线段的左侧还是右侧,默认是绘制在线段中间

  4. +b 符号为box

  5. +c 符号为circle

  6. +t 符号为triangle

  7. +f 符号表示断层(fault),默认值。

  8. +s 符号表示断层的滑动(slip),用于表示左旋或右旋断层。其可以接受一个 可选的参数来控制绘制矢量时的角度。也可以用 +S 绘制一个弧形箭头

  9. +o<offset> 将线段上的第一个符号相对于线段的起点偏离 <offset> 距离,默认值为0

  10. 默认符号的颜色与线段颜色相同( -W 选项),可以使用 +p<pen> 为符号单独指定颜色,也可以使用 +p ,即不绘制符号的轮廓。

下面的例子分别绘制了 +b+c+f+s+t 所对应的符号:

#!/usr/bin/env bash
gmt begin plot_-Sf
gmt basemap -R150/200/20/50 -JM15c -B10
gmt plot -Sf2c/0.1i+l+b -Gblack -W << EOF
155 30
160 40
EOF
gmt plot -Sf2c/0.1i+l+c -Gblue -W << EOF
165 30
170 40
EOF
gmt plot -Sf2c/0.1i+l+f -Gred -W << EOF
175 30
180 40
EOF
gmt plot -Sf2c/0.3i+l+s+o1 -Gyellow -W << EOF
185 30
190 40
EOF
gmt plot -Sf1c/0.1i+l+t -Gwhite -W -B10 << EOF
195 30
200 40
EOF
gmt end show
../../_images/2f85d973fa3480463047256b53f9fe93.png

plot -Sf示意图

-Sj|J

绘制旋转矩形

其输入数据为:

X   Y   方向    X轴长度   Y轴长度

方向为相对于水平方向逆时针旋转的角度。

-SJ-Sj 类似,区别在于:

  1. 输入的第三列是方位角

  2. 对于地理投影,X轴和Y轴长度的单位为地理单位,默认为 km

  3. 对于线性投影,X轴和Y轴长度的单位与 -R 选项中数据范围的单位相同

若矩形的长宽相等,则矩形退化成正方形,此时可以使用 -SJ-<size><size> 是正方形的长度,若未指定 <size> 则需要在输入数据的第三列指定长度。

-Sk<name>/<size>

绘制自定义的符号。目前,GMT 官方内置了 40 个自定义符号,如下所示:

GMT 内置自定义符号

如果这些内置自定义符号无法满足需求,用户可以自行制作自定义符号文件并使用。 详细使用方法见制作和使用自定义符号

-Sl<size>+t<string>+j<justify>

绘制文本字符串

该选项的功能与 text 类似,不知道为何要设计这个选项。

  1. <size> 文本串的大小

  2. +t<string> 指定文本串

  3. +j<justify> 修改文本串的对齐方式,默认为 CM

-Sm|M<size>

绘制数学圆弧

输入数据的格式为:

X  Y  radius_of_arc  start_direction  stop_direction
  1. <size> 为矢量箭头的长度

  2. 圆弧的线宽由 -W 选项设定

  3. -SM 选项与 -Sm 完全相同,只是当圆弧的夹角恰好是90度是, -SM 会用直角符号来表示

  4. 圆弧的两端可加上额外的箭头,见 矢量/箭头 一节

#!/usr/bin/env bash
gmt begin plot_-Sm
gmt basemap -R0/4/0.5/1.5 -JX6c/3c -Bxa1g1 -Bya0.5g0.5 -BWSen
gmt plot -Sc0.15c -Gblack << EOF
1 1
3 1
EOF
gmt plot -Sm0.2c+b+e+g -Gblack -W0.5p,red << EOF
1 1 1 10 60
EOF
gmt plot -Sm0.2c+b+l -Gblack -W0.5p,blue << EOF
3 1 1 10 150
EOF
gmt end show
../../_images/7a0e0140be55f2e70476cd8fce6c4108.png

plot -Sm 示意图

-Sq[<type>]<info>[:<labelinfo>]

绘制quoted lines,即带标注的线段,比如等值线、带断层名的断层线等

<type> 有6种可选的方式:

  1. d<dist>[<u>]/[<frac>] 指定标签之间的距离,单位 <u>c|i|p<frac> 表示将第一个标签放在距离quoted lines起点 <frac>*<dist>

  2. D<dist>[<u>]/[<frac>] 指定标签之间的距离,单位 <u> 可以取 e|f|k|M|n|u|d|m|s

  3. f<ffile.d> 根据ASCII文件 <ffile.d> 的内容确定标签的位置。仅当 <ffile.d> 中指定的标签位置与quoted lines上数据点的位置完全匹配时才会被绘制

  4. l<line1>[,<line2>,...] 指定一个或多个以逗号分隔的线段,标签会放在线段 与quoted line相交的地方。 <line> 的格式为 start_lon/start_lat/stop_lon/stop_lat ,其中 start_lon/start_lat 以及 stop_lon/stop_lat 可以用锚点中的两字符替换。

  5. L<line1>[,<line2>,...]l 类似,只是将线段解释为两点之间的大圆路径

  6. n<n_label> 指定等间隔标签的数目,见官方文档

  7. N<n_label> 见官方文档

  8. s<n_label> 见官方文档

  9. S<n_label> 见官方文档

  10. x<xfile.d> 见官方文档

  11. X<xfile.d> 见官方文档

<labelinfo> 用于控制标签的格式,其可以是下面子选项的任意组合,详情见官方文档:

  1. +a<angle>

  2. +c<dx>/<dy>

  3. +d

  4. +e

  5. +f<font>

  6. +g<color>

  7. +j<just>

  8. +l<label>

  9. +L<label>

  10. +n<dx>/<dy>

  11. +o

  12. +p<pen>

  13. +r<min_rad>

  14. +t[<file>]

  15. +u<unit>

  16. +v

  17. +w

  18. +x[<first>,<last>]

-Sr[+s]

绘制矩形

使用 -Sr 时无需指定 size,其输入格式为:

X   Y   X轴长度   Y轴长度

若加上 +s 选项,则输入数据分别为矩形的两个对角顶点的X和Y坐标。

-SR

绘制圆角矩形

size 对该符号无用。其输入格式为:

X   Y   X轴长度     Y轴长度     圆角半径
-Sv|V|=

绘制矢量

-Sv 用于绘制矢量,输入数据格式为:

X   Y   方向    长度
  1. size 为矢量箭头的长度

  2. 矢量宽度由 -W 控制

  3. 更多箭头的属性见 矢量/箭头 一节

  4. -SV-Sv 类似,区别在于第三列是方位角而不是方向

  5. -S=-SV 类似,区别在于第四列长度的单位是地理单位

echo 2 2 45 5c | gmt plot -R0/10/0/10 -JX10c/10c -B1 -Sv1c+e -W2p -png test
-Sw|W[+a|+r]

绘制楔形饼图(pie wedge),即饼图中的一个切片。加上 +a 表示只 绘制弧线, +r 表示只绘制径向线。

楔形饼图所需要的输入数据格式为:

X   Y   start_direction     stop_direcrion
  1. size 是楔形饼图所对应的圆的直径

  2. 对于 -Sw ,第三、四列是楔形的开始和结束方向,其中方向定义为相对于 X轴正方向(即东向)逆时针旋转的角度

  3. 对于 -SW ,第三、四列是楔形的开始和结束方位角,其中方位角定义为 相对于北向顺时针旋转的角度。对于地理楔形而言, <size> 代表径向地理距离而不是

下面的示例分别用 -SW-Sw 画了两个不同大小的楔形饼图:

#!/usr/bin/env bash
gmt begin plot_-Sw
gmt basemap -R0/10/0/5 -Jx1c -Ba1g1
gmt plot -Sw2c -Glightblue << EOF
2 2 0 45
EOF
gmt plot -SW3c -Glightblue << EOF
6 2 0 45
EOF
gmt end show
../../_images/92700a09118401a3a9c221a3e0ca2048.png

plot -Sw示意图。

左边-Sw,右边-SW;图中1格表示1cm。

-S~[d|D|f|l|L|n|N|s|S|x|X]<info>[:<symbolinfo>]

绘制decorated line,即带有符号的线段。详见官方文档。

输入数据格式

-S 选项相对复杂,与不同的选项连用,或者后面接不同的参数,所需要的输入数据的 格式也不同。不管是什么符号,至少都需要给定符号的位置,即X和Y是必须的:

X   Y

不同的符号,可能还需要额外的信息,统一写成(用 ... 代表某符号特有的输入列):

X   Y   ...

-S 指定了符号类型但未指定大小,即 -S<symbol> ,若该符号类型需要指定 大小,则需要将符号大小放在输入数据的第三列,其他输入数据的列号延后, 此时数据格式为:

X   Y   size    ...

若size<=0,则跳过该记录行。

-S 选项后未指定符号代码,则符号代码必须位于输入文件的最后一列

X   Y   ...   symbol

若使用了 -C-S 选项,则符号的填充色由数据的第三列决定,其他字段依次后移:

X   Y  [Z]   ...  symbol

因而总结一下输入数据的格式为:

x  y  [Z]  [size]  ...   [symbol]

其中 ... 为某些符号所要求的特殊的数据列, symbol 是未指定符号时必须的 输入列, size 是未指定大小时的输入列。

制作和使用自定义符号

如果 GMT 内置的自定义符号无法满足用户的需求,用户可以根据 GMT 自定义符号文件 的格式要求自行制作自定义符号文件。

使用自定义符号时,GMT 会依次按照如下顺序去搜索自定义符号的定义文件 name.def

  1. 当前目录,即运行脚本所在目录

  2. ~/.gmt/custom 目录(Linux 和 macOS 用户)或 C:\Users\你的当前用户名\.gmt\custom 目录(Windows用户)

  3. $GMT_SHAREDIR/custom 目录

用户可以将自己制作的自定义符号复制到以上任一路径即可正常使用。 建议放在 ~/.gmt/custom 目录(Linux 和 macOS 用户)或 C:\Users\你的当前用户名\.gmt\custom 目录(Windows 用户)下。

多段数据

对于多段数据而言,每段数据的头段记录中都可以包含一些选项,以使得不同段数据拥有 不同的属性。头段记录中的选项会覆盖命令中选项的参数:

  • -Gfill :设置当前段数据的填充色

  • -G- :对当前数据段关闭填充

  • -G :恢复到默认填充色

  • -W<pen> :设置当前段数据的画笔属性

  • -W :恢复到默认画笔属性 MAP_DEFAULT_PEN

  • -W- :不绘制轮廓

  • -Z<zval> :从cpt文件中查找Z值<zval>所对应的颜色作为填充色

  • -ZNaN :从cpt文件中获取NaN颜色

详情及示例参见 数据段头记录中的额外属性

示例

最简单的命令,绘制线段或多边形,此时数据输入需要两列,即X和Y:

gmt plot -R0/10/0/10 -JX10c -B1 -png test << EOF
3 5
5 8
7 4
EOF

下面的脚本展示了 -F 选项的用法:

#!/usr/bin/env bash

# 此处定义了函数plotpts,用于绘制图中绿色和蓝色的圆圈,并加上文字
function plotpts
{
    # Plots the two data tables and places given text
    gmt plot -Sc0.2c -Ggreen -Wfaint t1.txt
    gmt plot -Sc0.2c -Gblue -Wfaint t2.txt
    echo $* | gmt text -F+cTL+jTL+f12p -Dj0.05i
}
# 生成测试用的第一个数据文件
cat << EOF > t1.txt
10 10
48 15
28 20
>
40 40
30  5
5  15
EOF
# 生成测试用的第二个数据文件
cat << EOF > t2.txt
7  20
29 11
8   4
EOF
# -Fcs: 默认的连接方式
gmt begin plot_-F
gmt basemap -R0/50/0/45 -Jx0.06i -Ba10 -BWSne
gmt plot -W1p t[12].txt
plotpts TWO DATA TABLES

# -Fra
gmt plot -W1p t[12].txt -Fra -X3.25i
plotpts DATASET ORIGIN

# -Frf
gmt plot -W1p t[12].txt -Frf -X-3.25i -Y3.15i
plotpts TABLE ORIGIN

# -Frs
gmt plot -W1p t[12].txt -Frs -X3.25i
plotpts SEGMENT ORIGIN

# -Fr10/35
gmt plot -W1p t[12].txt -Fr10/35 -X-3.25i -Y3.15i
plotpts FIXED ORIGIN
echo 10 35 | gmt plot -Sa0.4c -Gred -Wfaint

# -Fna
gmt plot -W1p t[12].txt -Fna -X3.25i
plotpts NETWORK

gmt end show
rm t[12].txt
../../_images/32a985b027152642d9fa6e073b79d6fd.png

plot -F选项示意图