在本章中,我将分享如何在gmt6中绘制线条和添加颜色。 事实上,在GMT中,画线可以说是最简单的功能,但是如何用线来表示数据是一个值得仔细考虑的问题。 以海洋学为例,我们通常使用浮标数据,浮标除了提供位置信息外,还包括各种数据,例如深度、温度、盐度,甚至海洋温度和风速。或者在气象研究方面,我们还将使用探测气球和飞机等观测手段。获得的数据不仅包括水平坐标,还包括高度信息。当我们手中有这些数据时,最容易想到的是沿着浮标、气球或飞机的路径画线。但是,如何表示路径上的不同物理量?此外,数据通常不是一行,而是多行,甚至几十行或数百行。如何分割? 上述情况在大气和海洋研究中经常遇到,因此我想与大家分享使用GMT绘制直线和线段的方法。 与前面一样,效果图首先显示。 代码如下: 为了节省各位宝贵的时间,我这次将略过与之前重复的部分。如果同学/朋友不懂,请移步之前的文章。下面我根据图中的不同线条进行讲解。 球面线 (line 1) & ~, a( k" |7 k) F* ]4 z4 e
gmt plot -W1.5 << EOF
" m8 P) e$ g' u110 40 #起点9 p5 Y/ G! y2 p5 p9 \
150 40 #终点. J9 f0 H/ I7 M. F+ e
EOF因为地球是一个椭球体,我们认为一条直线会根据不同的投影在地图上产生不同的曲率变化。这里我们使用前面的-JQ(等距矩形投影)。因此,在默认选项下,绘制的第一条线就是球体上的这条线。 在数据方面,我们只需要提供线路的起点和终点,并告诉GMT线路的厚度[-w]。 直线 (line 2) & \/ B. w4 _ n
想在地图上画直线,那么我们只需添加一个选项【-A】即可让GMT无视地图投影,画直线。 注: 在普通的xy坐标轴上,因为不会牵扯投影,不加-A,画的也会是直线。 带颜色的线 (line 3)
# G7 V4 C- {/ I/ W% n/ G! U q 这里我首先要补充说明一下,如果我们只是绘制带某一种特定颜色的线,那么我们只需在【-W】后加逗号和颜色,即【-W1.5,green】。而我这里要讲的是,以色条为基准,按照某一个量来添加颜色。首先,我先用makecpt生成了一个0到5的色带,其中1代表的正好是绿色。在绘制线时,首先使用制作好的色条,即【-C】选项。然后,在数据之前添加新的一行数据:> -Z1,即表示之后的线条属性为1(【>】和 【-Z】之间有空格)。类似地,根据图a中的色条,如果我们写上【> -Z2】,那么画出的线则会表现为橙色。 线段与形状 (line 4)
7 t& E8 i' r4 ~6 J3 l
这里,让我们看一下第一部分,线段。在数据中,我们首次引入了以[>>>>>]表示的分隔符。注意:这是GMT的默认除法形式。当然,也可以使用其他符号,但需要在plot命令中指定。我们这里不提。一个通常足以容纳[>]的数量,但如果要使用awk和其他命令来读取不同的列,则需要根据数据的总列数逐个映射[>]的数量。 引入分隔符的效果也很明显。从图中可以看出,(120,25)和(130,25)之间的线是断开的。 画完线后,我们再次使用相同的坐标来画不同颜色的小点。它的命令也很容易理解:[-S]表示绘制形状/符号(即符号),[-SC]表示绘制圆,[-sc0.1]表示绘制直径为0.1的圆。同时,再次添加[-C]将使绘图在读取前两列的坐标后继续读取第三列数据作为填充颜色的基础。 彩条 (line 5&6)
5 S* x3 H2 h4 j2 F( W$ o. b8 ^ 绘制彩色的线条,其实就是前面几种线条的组合。看着很复杂,但其实很好理解,即用【> -Z】来分割不同颜色的小段,用【> > > >】来分割每一大段。圆(circle)
" c# c" f6 ^8 j. {0 x
简单地说,圆被分成几个小段,每个小段都有不同的颜色,每个小段的末端也是下一个小段的起点。这样,你就可以一个接一个地画出一个五颜六色的圆圈。我使用从CPT city下载的光谱参考色条(这里需要单独下载)。开头和结尾颜色相同,非常适合画开头和结尾相连的圆。CPT city只是上一段的结尾和下一段的起点。这样,你就可以一个接一个地画出一个五颜六色的圆圈。我使用的是从CPT city下载的光谱参考颜色栏(这里需要单独下载,链接如下)。开头和结尾颜色相同,非常适合画开头和结尾相连的圆。 imagej | 002-spectrum 这里附上Fortran的写文件代码。 本章,我简单了绘制线条的部分方法。希望大家可以举一反三,结合不同的线段/颜色/形状绘制出好看且更易理解的线图。
0 n4 f( K1 m# w$ I' s5 p
6 q# r3 k3 }4 a* D) G4 f$ P# x! h |