绘制颜色渐变的线条
文章目录
想要绘制一条颜色变化的线段,下面是演示代码:
#!/bin/bash
# GMT v5.2.1
gmt makecpt -Crainbow -T-2/2/1 > lines.cpt
gmt psxy -JX15c/4c -R0/6/0/4 -B1 -Clines.cpt -W2p > test.ps << EOF
> -Z-1.5
1 2
2 2
> -Z-0.5
2 2
3 2
> -Z0.5
3 2
4 2
> -Z1.5
4 2
5 2
EOF
绘图效果如下图:
简单解释一下:
makecpt
命令制作了一个 - 2 到 2 间隔为 1 的 CPT 文件psxy
命令中使用了-C
选项,此时需要输入数据是多段表数据,且每段数据的段头记录中,需要有-Z<val>
以指定每段数据的 Z 值- 实际绘图时,对于每段数据,命令会读取该数据数据的段头记录中的
-Z<val>
中的 Z 值,然后到 CPT 文件中查找 Z 值所对应的颜色,作为该段线段的颜色
实际绘图时,可能遇到的情况是:已知 A 点和 B 点的 Z 值,A 点到 B 点连线上 Z 值渐变,想要通过线条颜色的渐变来体现 Z 值的渐变。此时需要一些额外的处理,其中涉及到一些编程,所以下面仅提供思路。
已知 A 点和 B 点坐标,利用如下命令将 A 到 B 的连线等分成若干份:
gmt project -C<xA>/<yA> -E<xB>/<yB> -G<dist>
其中 -C
后接 A 点坐标, -E
后接 B 点坐标, -G
后接等分后相邻两点间的距离。 <dist>
越小,A 到 B 线段的颜色变化就越平滑。
最终输出的结果中有三列数据:X 坐标、Y 坐标和与 A 点的距离。对于生成的每个点而言,根据 A 和 B 两点的 Z 值、A 和 B 两点之间的距离以及该点与 A 点之间的距离,通过简单的线性插值,即可得到每一点的 Z 值。
有了 AB 之间每一点的坐标和 Z 值,就可以构建如上例所示的多段数据。对于每段数据而言,其 Z 值可以取该段数据首尾两点 Z 值的平均,或者其他取法亦可。
文章作者 SeisMan
上次更新 2016-01-18