GMT 区域填色
文章目录
提出问题
GMT 中可以用 psxy
绘制多段数据,画出多个闭合的多边形。一个示例命令如下:
gmt psxy input.dat -R0/360/-90/90 -JX15c/10c -Bx60 -By30 -W1p -L > test.ps
本例中的输入数据 input.dat
的内容为:
>
30 20
90 20
90 60
30 60
>
120 10
150 35
180 20
160 -10
130 -30
>
200 10
230 25
240 40
280 5
300 -20
画出来的图效果如下:
现在想要给不同的区域填充不同的颜色,目标效果图如下:
要实现区域填色,有两种方法,分别是使用 -G
选项和使用 -C
选项。
-G 选项
在每段数据的头段记录中加上 -Gcolor
选项以指定当前多边形的填充色。
还是同样的命令,此时输入数据变成:
> -Gred
30 20
90 20
90 60
30 60
> -G0/100/20
120 10
150 35
180 20
160 -10
130 -30
> -G0/0/120
200 10
230 25
240 40
280 5
300 -20
-G
选项设置了第一个多边形填充红色,第二个多边形填充 0/100/20
,第三个多边形填充 0/0/120
。
-C 选项
可以使用 -C
选项指定要使用的 cpt 文件,且每段数据的头段记录中加上 -Zval
。
下面的命令中使用了增加了 -Carea.cpt
选项:
gmt psxy input.dat -R0/360/-90/90 -JX15c/10c -Bx60 -By30 -W1p -L -Carea.cpt > test.ps
CPT 文件 area.cpt
的内容为:
0 red
1 blue
2 200/0/20
3 0/0/120
4 100/100/100
该 cpt 表明,若 Z 值取零,则填充红色,若 Z 值为 1,则填充蓝色,其他同理。
指定 -C
选项的同时,也需要在数据的头段记录中加上 -Z
选项,以指定每个多边形的填充色:
> -Z0
30 20
90 20
90 60
30 60
> -Z2
120 10
150 35
180 20
160 -10
130 -30
> -Z3
200 10
230 25
240 40
280 5
300 -20
此时,三个多边形的填充色分别是红色、 200/0/20
和 0/0/120
。
说明
上面介绍的两种方法中, -G
选项比较简单,只需要少量的修改即可实现。
-C
选项需要修改的地方较多,但更具有普适性,也更易于编程处理。
文章作者 SeisMan
上次更新 2015-08-05