linux下gmt4绘制站点分布图,GMT复杂图制作教程———让作图简单的飞起来
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复杂图制作教程———让作图简单的飞起来相关推荐
- linux下gmt4绘制站点分布图,GMT4 脚本风格指南
这篇博文会介绍写 GMT 脚本时需要遵循的一些风格与习惯.本文的目的是,希望遵循本风格指南的 GMT 脚本能够更易读.易改.更健壮.可移植性更高. 使用脚本来执行 GMT 命令 GMT 遵循了 UNI ...
- Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案
Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 参考文章: (1)Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 (2) ...
- linux下批量下载站点内容初稿
此脚本适用于站点命名内容很有规律的网址,下载后会自动将文件拷贝到对应目录中,已测试过 尤其适合下图片 vi wgetlist #!/bin/bash #批量下载 mkdir -p 2010{1..12 ...
- 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 ...
- matlab绘制站点分布图
1.序言 研究中,经常需要标识研究所用数据的位置,即数据的站点分布情况.了解所用数据是否有代表性以及数据的适用范围,这对研究中的结果和结论具有重要的影响. 2.数据准备 (1)将需要标注的数据以经纬度 ...
- linux下spi flash驱动程序,关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析
项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分 析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析 ...
- Linux磁盘空间管理技术用,Linux下使用quota命令管理磁盘空间的实例教程
1.通过yum 方式 安装quota 复制代码代码如下: #yum install quota 2.VirtualBox创建硬盘如果你的Linux环境建立在VirtualBox下: (1)关闭虚拟机镜 ...
- linux 下nc-verilog 仿真环境搭建,Cadence NC Verilog仿真教程
这个手册将向你介绍使用 NC-Verilog simulator 和 SimVision. 本文使用的是一个用 Veilog 硬件编程语言编写的一个饮料分配机,通过这个例 子你将学会: ·编译 Ve ...
- 同一Linux下起两台Mysql Server
开始 额,无事不浪,主要还是因为碰到的问题.有个朋友拿我的服务器部署个项目,于是给他开了个账号,管理员权限就够了.然而他把Mysql给占了,我也要用咋办,他的项目我也不好动,混用同一个Server的话 ...
- Linux下使用Google Authenticator配置SSH登录动态验证码
说明: 1.一般ssh登录服务器,只需要输入账号和密码. 2.本教程的目的:在账号和密码之间再增加一个 验证码,只有输入正确的验证码之后,再输入 密码才能登录.这样就增强了ssh登录的安全性. 3.账 ...
最新文章
- 甲骨文在中国区裁员是因为云服务在华缺少竞争力吗?
- 可信计算 沈昌祥_沈昌祥院士在南宁开展网络安全前沿知识讲座
- 两段用来启动/重启Linux下Tomcat的Perl脚本
- java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]
- web前端入门学习 css(9)广义的html5 品优购项目(html+css基础完结,js开始,移动端布局开始)
- concurrenthashmap 1.7/1.8
- 一句命令行检查cpu个数
- hadoop-0.21.0-eclipse-plugin无法在eclipse中运行解决方案
- 线性表——顺序表的应用
- linux的can通信busoff,socketCAN内核源码分析是否支持busoff自恢复--Apple的学习笔记
- 【文件包含、宏、条件编译】(学习笔记21--预处理命令)
- Flutter基础—定位对齐之填充
- 开课吧课堂:详解挂起、恢复和终止线程
- css 3 制作水波状进度条
- JavaBean实现简单登录功能
- ubuntu之路——day7.1 衡量模型好坏的因素偏差和方差biasvariance 以及在深度学习中的模型优化思路...
- 计算机考试盘安装空间,2021上半年计算机水平考试模拟盘 安装
- 大数据存储技术期末复习(自用)
- ChatGPT of Siri 快捷指令语音免魔法3.5版+网页版 - TDChat
- vue 提交form表单