绘制符号
绘制各种类型的符号也是常见的绘图需求之一。GMT 支持绘制十几种常见的符号类型,还支持自定义复杂的符号类型,足以满足日常的科研绘图需求。这一节将介绍如何使用 plot 模块绘制多样的符号。
符号一览
plot 模块绘制符号需要使用 -S 选项。-S 选项后面紧跟着符号类型代码,以及符号大小。GMT 中常见的十几种简单符号及其对应的符号类型代码如下图所示。比如 c 代表圆(circle),t 代表三角形(triangle)。
绘制简单符号
以绘制圆圈为例,通过查询文档或者看上图可知,圆圈对应的符号类型代码为 c。 -Sc0.5c 则表示绘制直径为 0.5 厘米的圆圈。为了绘制圆圈,我们需要给定圆圈的位置,因而输入数据中需要提供圆圈的 X 和 Y 坐标。
下面的示例中在 (2,3)、(5,6)、(8,2) 三个点绘制了三个直径为 0.5 厘米的圆圈。
gmt begin symbols
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc0.5c << EOF
2 3
5 6
8 2
EOF
gmt end show
与绘制线段和多边形类似,我们可以使用 -W 选项控制符号轮廓的画笔属性,使用 -G 选项为符号设置填充色。下面的命令就绘制了三个黑边红色圆圈。
gmt begin symbols
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc0.5c -W1p,black -Gred << EOF
2 3
5 6
8 2
EOF
gmt end show
若想要绘制其它符号,则只需要使用对应的符号类型代码即可。例如,将 -Sc0.5c 改成 -St0.5c 则会绘制三角形。
当然,某些符号类型可能需要额外的输入数据。比如 -Sr 表示绘制长方形,此时输入数据中除了需要长方形的 X 和 Y 坐标之外,还需要长方形的宽和高,因而输入数据需要四列。对于这些输入数据稍复杂的符号,可以阅读文档以了解其输入数据的格式。
大小变化的符号
若想要绘制大小变化的符号,则需要在输入数据中额外加上一列以控制每个符号的大小,同时,在 -S 选项中则不再需要指定符号大小。
下面的示例中,-Sc 中没有指定圆圈大小,此时输入数据的第三列控制圆圈大小。由此,我们即得到了大小变化的符号。
gmt begin symbols
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc -W1p,black -Gred << EOF
2 3 0.3
5 6 0.8
8 2 0.5
EOF
gmt end show
颜色变化的符号
前面提到,使用 -G 选项可以为符号填充颜色,但其只能同时为所有符号指定单一的颜色。如果想要让符号的颜色根据某个数值的不同而使用不同的颜色,则需要使用 -C 选项。 -C 选项表示符号的填充色由某个数值以及 CPT 颜色表所控制。CPT 颜色表给出了数值与颜色之间的对应关系。因而对于任意一个符号,我们都可以给其一个数值,GMT 会根据该数值从 CPT 颜色表中找到对应的颜色作为该符号的填充色。因而,在输入数据中,我们需要在 X 和 Y 坐标的基础上额外加一列 Z 值,用于控制符号的填充色。
下面的示例中,我们首先使用 makecpt 模块,以 GMT 内置 CPT 颜色表 hot 为基础,生成了一个新的 CPT 颜色表。关于 CPT 颜色表的具体细节在后面会介绍到。此处,读者只需要知道,我们制作了一个 CPT 文件供后面的命令使用。该 CPT 颜色表为 0 到 3 之内的每个数值都对应了一个颜色。
同时,对于输入数据,我们额外增加一列(通常称这一列为 Z 值),该列的值决定了符号的填充色。
gmt begin symbols
gmt makecpt -Chot -T0/3/1
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc0.5c -W1p,black -C << EOF
2 3 0
5 6 1
8 2 2
EOF
gmt end show
绘制不同的符号
前面说到,-S 选项中指定不同的符号类型代码则代表绘制不同的符号,但每次只能指定一种符号类型代码。如果想要不同的数据使用不同的符号绘制,则可以只指定符号大小而不指定符号类型代码,并在输入数据的最后一列指定符号类型代码。
下面的示例中,我们使用 -S0.5c 指定了符号的大小,但是没有指定符号类型。输入数据的最后一列中 c、t和 i 则分别为三个数据指定了各自的符号类型。
gmt begin symbols
gmt basemap -R0/10/0/10 -JX10c/10c -Baf
gmt plot -S0.5c -W1p,black -Gred << EOF
2 3 c
5 6 t
8 2 i
EOF
gmt end show
大小、颜色和符号类型都变化的符号
前面介绍了如何绘制大小变化或颜色变化或符号类型变化的符号。那么如何实现颜色、大小以及符号三者都变化的符号呢?可以使用 -S 但不指定符号类型以及符号大小,同时使用 -C 选项。
关键问题在于,此时的数据数据格式是怎样的。根据 GMT 的规定,此时输入数据的格式为:
X Y Z size symbol
即第三列控制符号填充色,第四列为符号大小,最后一列为符号类型代码。
gmt begin symbols
gmt makecpt -Chot -T0/3/1
gmt plot -R0/10/0/10 -JX10c/10c -Baf -S -W1p,black -C << EOF
2 3 0 0.3 c
5 6 1 0.8 t
8 2 2 0.5 i
EOF
gmt end show