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代码运行文件包请直击链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容

  • 文/清风木木 继续更新中 在超市买完东西回到宿舍都六七点了,一个戴着眼镜、个子挺高的男孩说,兄弟们,从现在开始,我...
    清风木木阅读 210评论 0 0
  • 现在不大流行纸质的笔记了,携带不方便,查找或修改资料也不方便,大家更喜欢用有道云笔记或印象笔记等,存贮量大,方便归...
    潇潇_15c6阅读 302评论 0 2
  • 还没有复盘心塞啊,好好睡觉,复盘明天早上吧。哎,拖拖拉拉的毛病。 好好放松,睡个好觉
    有话好好说之南京潇洒哥阅读 148评论 0 0
  • 在广州的乡亲们都知道,要吃新鲜的海鲜,要去南沙海鲜水产市场。 今天带着小朋友逛完沙面公园。顺道就去溜达了一下。离着...
    果果艾健康阅读 448评论 0 1