GMT绘图攻略
GMT可以绘制很多复杂的图形,无论是论文还是报告中都是非常用,但同时它也很复杂,想要学号记住很难。因此,博主开设了这个栏目,一来向大家提供帮助,而来自己也可以加深理解。
坐标轴
2D
1、设置坐标轴带箭头
1 | gmt gmtset MAP_FRAME_TYPE = graph |
2、设置标注在内部
1 | gmt gmtset MAP_FRAME_TYPE = inside |
3、调整坐标轴的方向,一般来说GMT绘图是左小右大,下小上大,不过我们如果需要坐标轴反向的话,例如在表示深度时,常常需要向下为大
我们需要在-J中设置,没错,不是-B,这里很多同学可能找错地方了。
我们只需设置
1 | -JX-4i/4i #represent that x axis reversal |
3D
绘制三维坐标时,可以选择
1 | -BZ #plot the z axis with scale and callout |
我们在绘制三维图时,常常需要添加Z轴,但默认是绘制左下角的轴,但根据我们一般的观测视角,绘图会使得其他的轴全部反向,这时就需要绘制左上角的轴
1 | -BZ4 #这样就可以了 |
坐标单位
在绘制坐标单位时,使用+l参数
1 | -Bxa3g1+ldepth |
色标与图例
色标
色标绘制使用psscale
1 | gmt psscale -Dx1i/1i+e+ml+w2i/0.2i+o1c/2c -Ccpt.cpt -J -K -S -Ba1+l"bar" >ps.ps |
1 | -D的选项有很多,先说附加项 |
这里主要说一下几点,首先是色标的位置
这里使用-D说明位置,有5种分别是g|j|n|x|J
1 | -Dg:use the position used in data |
其次是修饰色标
主要有给色标去除中间黑线-S
图例
图例使用pslegend
主要使用的参数有
1 | gmt pslegeng -R -J -Dx+w<width><height> -F <<EOF >ps.ps |
光照
-I选项是非常常用的
1 | -I<size> |
在绘制彩色图时,不加光照就是原色调,加光照,值越大越白
断层滑动分布三维图
在做大地震震源分析时,常常需要给出断层的三维滑动分布,我们可以利用psxyz做到。目前关于psxyz的语法和实例不过,中文社区甚至没有翻译过来。这里博主给大家开一个路
我们的思想是利用psxyz绘制一个个矩形框,根据每个矩形框的滑移值来绘制图像。
我们以USGS给出的20181130地震断层模型文件param.txt作为源文件
首先需要把它变成能够被GMT拾取的文件格式, 即
1 | > -Z<slip> |
程序可以自己编,不是很难,注意-Z和slip之间不能有空格,这里用一个trim和adjustl函数就可以解决了。如果还有问题,可以联系博主获取支持。
这样我们就可以键入
1 | #!/bin/bash R=-150.6/-149.3/61/62/0/60 txt=plot2018 |
来得到断层的滑移分布图了
震源球的绘制
基本格式是
1 | gmt psmeca -R -J -Sa$size -C1.2p -Gcyan -K <<EOF >>$nameps.ps |
注意绘制震源球的方式有很多中,比较常用的是-Sa和-Sz两种
-Sa:指定3参数和震级即可,绘制出来的图,压缩和拉伸边界有明显的黑线
-Sz:指定地震矩张量的分量,一般是gCMT提供的数据来源是这样的,绘制出来的图没有边界黑线
1 | -C:指定震源位置和图中位置的连线参数 |
添加说明文字
基本语句是:
1 | gmt pstext -R -J -K -F+f22p,7,blue+a70 <<EOF >>$nameps.ps |
绘制断层
一些不知道参数的断层可以去官网查询,得到kmz或者shp文件在GoogleEarth中打开,逐个描点得到坐标。
基本语法是利用psxy
1 | #绘制简单的线 |
绘制图中图
在一些论文中经常需要给某一个地方的大范围说明图,我们绘制时可以
1 | gmt psbasemap -R$Rbig -J -Bse -K -X<pos> -Y<pos> >>$nameps.ps |
绘制彩色图
格式转化
我们取一个最一般的情况,我们有一个txt文件(或者dat),里面的信息是包含lon,lat,value,….分别是第1~3列,当然还包含其他列的信息。
我们首先需要转化为grd文件或者nc文件。
1 | gmt surface filename.txt -R -T0.01 -I0.1/0.1 -i0,1,2 -C0.001 -Gfilename.grd |
读取/出文件操作
主要是-i和-o的操作
1 | -i0,1,2 |
对于-o,与-i相同,不过没有运算
另外,一些小符号可以是的输入的x,y交换,即相当于-i1,0
1 | -: |
还有-h可以略去开头多少行
1 | gmt ... -h3 |
-s则可以选择数据中还有NaN的处理方法
1 | gmt select input.dat -s |
绘制CPT
使用
1 | gmt makecpt -Cblue,cyan,green,yellow,red -T-1/1-0.05 -Z -D >cpt.cpt |
Comments