添加文字

GMT 的 text 模块可以用于添加文字。

最简单的示例

若需要添加文字,则输入数据中必须给出文字的 X 和 Y 坐标以及具体的文字。 因而,输入数据有三列:

X   Y   text

下面的示例首先用 basemap 模块绘制了一张底图,然后使用 text 模块 在底图的不同位置添加了文字。

gmt begin map
gmt basemap -R0/10/0/6 -JX10c/6c -Bafg1 -BWSen
gmt text << EOF
5 1 GMT TEXT1
5 3 GMT TEXT2
5 5 GMT TEXT3
EOF
gmt end show
../../_images/38fdb524df112d322cb711c336a3004b.png

文字属性

当然,我们可以为文字设置更丰富的属性,比如文字大小、字体、文字颜色以及文字旋转角度等。 这可以通过 -F 选项来实现。

-F+ffont 可以设置文字的属性,包括文字大小、字体和颜色,三者之间用逗号分隔。 -F+a 则可以设置文字的旋转角度。

备注

GMT 默认支持 35 种字体,可以使用 gmt text -L 查看 GMT 支持的字体名及其对应的字体编号。

下面的示例中,-F+f16p,1,red+a30 即表示文字大小为 16p,字体为 1 号字体,颜色为红色, 文字旋转角度为 30 度。

gmt begin map
gmt basemap -R0/10/0/6 -JX10c/6c -Bafg1 -BWSen
gmt text -F+f16p,1,red+a30 << EOF
5 1 GMT TEXT1
5 3 GMT TEXT2
5 5 GMT TEXT3
EOF
gmt end show
../../_images/3ec252f62d3e594f3beef544cb9797eb.png

文本框

对于每个文本字符串,我们还可以为其加上文本框。

  • -W 选项控制文本框的画笔属性

  • -G 选项控制文本框的填充色

  • -C 选项控制文字与文本框之间的空白

gmt begin map
gmt basemap -R0/10/0/6 -JX10c/6c -Bafg1 -BWSen
gmt text -F+f16p,1,red+a30 -W1p -Glightblue -C25%/25% << EOF
5 1 GMT TEXT1
5 3 GMT TEXT2
5 5 GMT TEXT3
EOF
gmt end show
../../_images/f884def0f30053ee218b2d5d7999415b.png

对齐方式

对于任意一个文本,我们还可以设置其对齐方式与偏移量。GMT 中文本的默认对齐方式 为居中对齐,即将整个文本的中心放在指定的 X 和 Y 坐标处。当然,用户也可以自行指定 文本的对齐方式。

文本的对齐方式由水平对齐方式和垂直对齐方式共同决定。水平对齐方式有三种: 左对齐(Left)、居中对齐(Center)和右对齐(Right)。 垂直对齐方式有三种:顶部对齐(Top)、居中对齐(Middle)和 底部对齐(Bottom)。三种水平对齐方式和三种垂直对齐方式,构成了文本的 9 种 对齐方式。

-F+j 用于指定文本对齐方式。下面的示例中,-F+jTL 表示文本对齐方式 为 TL(Top + Left),即表示以左上角方式对齐。从下图中可以看到,三个 文本框的左上角被放在了 (5,1)、(5,3) 和 (5,5) 处。

gmt begin map
gmt basemap -R0/10/0/6 -JX10c/6c -Bafg1 -BWSen
gmt text -F+f16p,1,red+jTL -W1p << EOF
5 1 GMT TEXT1
5 3 GMT TEXT2
5 5 GMT TEXT3
EOF
gmt end show
../../_images/d08d549b96c188d61a0876801fe3453a.png

文本偏移量

使用 -D 选项还可以对文本设置额外的偏移量。下面的示例中, -D0.5c/0.5c 分别设置了文本在 X 方向和 Y 方向的偏移量。

gmt begin map
gmt basemap -R0/10/0/6 -JX10c/6c -Bafg1 -BWSen
gmt text -F+f16p,1,red+jTL -D0.5c/0.5c -W1p << EOF
5 1 GMT TEXT1
5 3 GMT TEXT2
5 5 GMT TEXT3
EOF
gmt end show
../../_images/4cfc6aff0d835be4a0e2146814978dd0.png

变化的文字属性

如果想要不同的文字有不同的文本属性,可以多次调用 text 模块,每次设置不同的 文本属性。当然,还有更加灵活的办法,可以一个命令中实现变化的文字属性。

下面的例子中,使用了 -F+f+a+j 选项。上面已经介绍到,+f 设置文本属性, +a 设置文本旋转角度,+j 设置文本对齐方式。但我们并没有指定具体的属性 值,因而需要在输入数据中增加额外的数据列。输入数据的格式由 +f+a+j 的顺序决定,因而此时输入数据的格式为:

X   Y   font    angle   justification   text

下面的示例中,第三列为字体属性,第四列为文本旋转角度,第五列为文本对齐方式。

gmt begin map
gmt basemap -R0/10/0/6 -JX10c/6c -Bafg1 -BWSen
gmt text -F+f+a+j -W1p -Glightblue << EOF
5 1 12p,0,red       0   TL GMT TEXT1
5 3 15p,1,blue      30  MC GMT TEXT2
5 5 18p,2,yellow    180 TL GMT TEXT3
EOF
gmt end show
../../_images/8ed59962fdf2a37deb7500283479100d.png