GMT是地学界常用的开源软件,不仅是因为其开源的特性,还有着独特的魅力。GMT可以对海岸线、地形、投点等进行综合表现,满足我们的学术论文。但是笔者发现,目前仍然缺乏某些特定的GMT画图教程,如本文所要分享的复杂海底地形图(如下图)。本文适合初学者,也适合具有一定基础的海洋地质地球物理学科专业的同学。

作图之前的小tips——图层

GMT的画图是通过图层的不断叠加来实现的,画图者需要做的就是先画出底图,然后在此基础上叠加需要的图层。本文就是以图层顺序的方式进行分享,这样可以对图层进行随意删减或者改变顺序。需要说明的是,本文所写的代码使用Mac下最新版本的软件GMT6

GMT6的[安装]åscholar.coding.me/2018/10/22/post_19/")、详细模块讲解请参照GMT官网或者GMT中文网。

闲话少说,Let's start!

准备工作

#!/bin/bash

fig_name=GMT_complexFig

fig_fmt=png

gmt set FONT_ANNOT_PRIMARY=12

gmt set FONT_ANNOT_PRIMARY=times-roman

gmt set MAP_FRAME_TYPE=fancy

gmt set COLOR_BACKGROUND=white

gmt set FORMAT_GEO_MAP ddd:mm:ssF

定义图名和图片格式,自定义部分GMT默认值,分别是字体大小、字体格式、地图的外框、背景颜色和经纬度标注格式

inf=earth_relief/earth_relief_05m.grd # 地形网格文件

gradf=earth_relief/grad_relief_05m.nc # 地形梯度网格文件

gmt grdgradient $inf -A45 -Nt0.3 -fg -G$gradf

梯度网格文件的生成,,目的是使底图具有阴影效果。在此强调一下-Nt选项,后面的数字越小,地形越平坦,在图范围较大情况下,建议0.5以下。

R=8/75/-57/-21 #图的经纬度范围

J=M20c #墨卡托投影

# 以下三行为生成CPT颜色文件的代码

incpt=wysiwyg

cptf=GMT_complexFig.cpt

gmt makecpt -C$incpt -T-7000/0/1400 -D -V -F -Z > $cptf

wysiwyg是GMT自带的CPT,但是需要根据数据范围和作图要求重新配置需要的CPT文件。除了wysiwyg外,大家还可以尝试haxby和globe等GMT自带颜色文件,都是比较适合画地形图的。

这就是画图需要定义的一部分,我一般会把它们放最前面,调试时候比较好找。以上工作就相当于准备好了画图需要的画板、颜料以及地图的格式和框架,下面的工作就是 just do it!

开始画图——底图

gmt begin $fig_name $fig_fmt

首先是gmt begin,这是GMT6的代码风格,后面还会看到更多与GMT5不同的地方

gmt grdimage $inf -I$gradf -R$R -J$J -C$cptf -Bx10f5 -Bya10f5

-BWseN

这是底图,可以说是很简单了吧?

gmt coast -Sgray -A0 -t70 -V

gmt coast -Ggray -A1000

看到这里是不是很纳闷为什么要用两次海岸线模块?第一行对底图本身没有添加任何线条,但是加上后会让图变得高级,本质上是在底图之上加了一层70%(可随意调整)透明的灰色(即高级灰)。底图就成了传说中的“莫兰迪色”,常用于各种家居设计以及《延禧攻略》。第二行为普通的海岸线模块,将陆地填充灰色。

gmt psscale -C$cptf -Ba2000f1000/:" Depth (m)": -D4/-0.5/8/0.4h -I # 色卡

gmt basemap -Lfx15/-0.5/-38/500+u # 比例尺,此处为500km

最终获得的底图如下

现在地形图的基本框架已经打好了,可以在此基础上随意添加各种想要的元素。

添加点、线、面

# 加线

# 洋中脊的脊轴、转换断层和构造线

gmt psxy ridge/SWIR.txt -Wthicker+s

gmt psxy ridge/SEIR.txt -Wthicker+s

gmt psxy ridge/CIR.txt -Wthicker+s

gmt psxy SWIR_TF/10E_Shaka.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/25E_Du_Toit.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/32.4E_Andrew_Bain.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/33.9E_Marion.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/35.2E_Prince_Edward.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/39.3E_Eric_Simpson.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/40.7E_Discovery2.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/46.1E_Indomed.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/52.3EGallieni.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/57E_Atlantis2.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/60.7E_Melville.txt -Wthicker,darkgray+s

gmt psxy SWIR_TF/RTJ-north-trace.txt -Wthicker,darkgray,4_4_4_4:3p+s

gmt psxy SWIR_TF/RTJ-south-trace.txt -Wthicker,darkgray,4_4_4_4:3p+s

# 加点

# 热液活动和热液异常

gmt psxy hydrothermal/hydrothermal_anomaly.txt -Sc10p -W0.2p,white -Gblue

gmt psxy hydrothermal/hydrothermal_vent.txt -Sc10p -W0.2p,white -Gred

# 加面

# 随便假设一个研究区域

echo 43 -40.5 > area

echo 43 -41.5 >> area

echo 45 -41.5 >> area

echo 45 -40.5 >> area

gmt psxy area -Gred -L -A

rm area

画到这,是不是感觉已经大功告成了?并没有~~~~因为这张图一点都不复杂,可以发现图的左上和右下角都是空白。

图例和地理位置图

画了这么多元素,应当加一些图例以说明,当然也可以在�论文中�图片下方文字说明,并将之放在右下方。

echo 55.5 -51 > legend

echo 55.5 -57 >> legend

echo 75 -57 >> legend

echo 75 -51 >> legend

gmt psxy legend -W1p,black -Gwhite -L -A

# 此处建立一个图例边框文件,并绘制

echo 56.5 -52 > ridge.legend

echo 59.5 -52 >> ridge.legend

gmt psxy ridge.legend -Wthicker

echo 59.5 -52 ridge | gmt pstext -F+f12+jLM -D0.3c/0c

# 建立图例文件 并绘制,下同

echo 56.5 -53 > TF.legend

echo 59.5 -53 >> TF.legend

gmt psxy TF.legend -Wthicker,darkgray

echo 59.5 -53 transfrom fracture | gmt pstext -F+f12+jLM -D0.3c/0c

echo 56.5 -54 > RTJtrace.legend

echo 59.5 -54 >> RTJtrace.legend

gmt psxy RTJtrace.legend -Wthicker,darkgray,4_4_4_4:3p+s

echo 59.5 -54 RTJ trace | gmt pstext -F+f12+jLM -D0.3c/0c

echo 58 -55 | gmt psxy -Sc10p -W0.2p,white -Gblue

echo 59.5 -55 hydrothermal anomaly | gmt pstext -F+f12+jLM -D0.3c/0c

echo 58 -56 | gmt psxy -Sc10p -W0.2p,white -Gred

echo 59.5 -56 hydrothermal vent | gmt pstext -F+f12+jLM -D0.3c/0c

rm legend ridge.legen TF.legend RTJtrace.legend # 删除图例文件

最后再把地理位置放在左上方。

gmt coast -R-60/300/-90/90 -JG55/-40/6c -A20000 -W0.1p -Gblack -Swhite -Ba30g -V -Y8.25c

# 这里需要说明一下,这里的-R和-J和底图不同,但仍可放置在同一张图中,但是需要调整位置(-Y8.25c,其中8.25是试出来的)

gmt psxy ridge/SWIR.txt -W0.5p+s -V

gmt psxy ridge/SEIR.txt -W0.5p+s -V

gmt psxy ridge/CIR.txt -W0.5p+s -V

gmt psxy ridge/AAR.txt -W0.5p+s -V

gmt psxy ridge/slow.txt -W0.5p+s -V

echo 50.1 -37.7| gmt psxy -Sa15p -W0.1p,red -Gred -V

成了!但是别忘了最后加上

gmt end

图例部分就不详细讲述了,因为一般人不会用GMT直接画,更多人会选择CorelDraw之类的画图软件。

完整的GMT代码运行文件包请直击链接。

linux下gmt4绘制站点分布图,GMT复杂图制作教程———让作图简单的飞起来相关推荐

  1. linux下gmt4绘制站点分布图,GMT4 脚本风格指南

    这篇博文会介绍写 GMT 脚本时需要遵循的一些风格与习惯.本文的目的是,希望遵循本风格指南的 GMT 脚本能够更易读.易改.更健壮.可移植性更高. 使用脚本来执行 GMT 命令 GMT 遵循了 UNI ...

  2. Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案

    Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 参考文章: (1)Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 (2) ...

  3. linux下批量下载站点内容初稿

    此脚本适用于站点命名内容很有规律的网址,下载后会自动将文件拷贝到对应目录中,已测试过 尤其适合下图片 vi wgetlist #!/bin/bash #批量下载 mkdir -p 2010{1..12 ...

  4. linux django搭建网站,Linux下搭建Django站点一

    系统环境:CentOS 6.2 Python版本:2.7.8 1.安装Django: 1.1.pip安装: pip install django 1.2.easy_install安装: easy_in ...

  5. matlab绘制站点分布图

    1.序言 研究中,经常需要标识研究所用数据的位置,即数据的站点分布情况.了解所用数据是否有代表性以及数据的适用范围,这对研究中的结果和结论具有重要的影响. 2.数据准备 (1)将需要标注的数据以经纬度 ...

  6. linux下spi flash驱动程序,关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析

    项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分 析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析 ...

  7. Linux磁盘空间管理技术用,Linux下使用quota命令管理磁盘空间的实例教程

    1.通过yum 方式 安装quota 复制代码代码如下: #yum install quota 2.VirtualBox创建硬盘如果你的Linux环境建立在VirtualBox下: (1)关闭虚拟机镜 ...

  8. linux 下nc-verilog 仿真环境搭建,Cadence NC Verilog仿真教程

    这个手册将向你介绍使用 NC-Verilog simulator 和 SimVision. 本文使用的是一个用 Veilog 硬件编程语言编写的一个饮料分配机,通过这个例 子你将学会:  ·编译 Ve ...

  9. 同一Linux下起两台Mysql Server

    开始 额,无事不浪,主要还是因为碰到的问题.有个朋友拿我的服务器部署个项目,于是给他开了个账号,管理员权限就够了.然而他把Mysql给占了,我也要用咋办,他的项目我也不好动,混用同一个Server的话 ...

  10. Linux下使用Google Authenticator配置SSH登录动态验证码

    说明: 1.一般ssh登录服务器,只需要输入账号和密码. 2.本教程的目的:在账号和密码之间再增加一个 验证码,只有输入正确的验证码之后,再输入 密码才能登录.这样就增强了ssh登录的安全性. 3.账 ...

最新文章

  1. 甲骨文在中国区裁员是因为云服务在华缺少竞争力吗?
  2. 可信计算 沈昌祥_沈昌祥院士在南宁开展网络安全前沿知识讲座
  3. 两段用来启动/重启Linux下Tomcat的Perl脚本
  4. java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]
  5. web前端入门学习 css(9)广义的html5 品优购项目(html+css基础完结,js开始,移动端布局开始)
  6. concurrenthashmap 1.7/1.8
  7. 一句命令行检查cpu个数
  8. hadoop-0.21.0-eclipse-plugin无法在eclipse中运行解决方案
  9. 线性表——顺序表的应用
  10. linux的can通信busoff,socketCAN内核源码分析是否支持busoff自恢复--Apple的学习笔记
  11. 【文件包含、宏、条件编译】(学习笔记21--预处理命令)
  12. Flutter基础—定位对齐之填充
  13. 开课吧课堂:详解挂起、恢复和终止线程
  14. css 3 制作水波状进度条
  15. JavaBean实现简单登录功能
  16. ubuntu之路——day7.1 衡量模型好坏的因素偏差和方差biasvariance 以及在深度学习中的模型优化思路...
  17. 计算机考试盘安装空间,2021上半年计算机水平考试模拟盘 安装
  18. 大数据存储技术期末复习(自用)
  19. ChatGPT of Siri 快捷指令语音免魔法3.5版+网页版 - TDChat
  20. vue 提交form表单

热门文章

  1. 计算机模运算规则,补码,模运算和溢出
  2. JAVA-反射面试题及答案
  3. DevChartControl的颜色配置
  4. 开关电源三种拓扑的产生
  5. 嵌入式培训经验分享——网络编程项目实战(在线电子词典)
  6. Kali-工具-crunch(字典生成)
  7. 学习windows内核一
  8. linux c 键盘钩子,利用键盘钩子在Windows平台下捕获键盘动作 (转)
  9. CAD软件中怎么计算雨水?CAD雨水计算技巧
  10. pcie16x能插1x的卡嘛?_存储先锋,雷克沙633x TF卡评测