Generic Mapping Tools(GMT)是科研工作者常用的画图工具。GMT的功能强大,也内置了一些统计模块。相较于其他常用的绘图工具(或含有绘图功能的软件,比如Matlab,Python,R等),GMT的特点是高效出图,缺点则是没有可操作的直观界面(GUI)。
我这系列的文章奔着“开袋即食”的理念,直接从实例入手。部分GMT4,5和6的区别,我也会提到。提前说明,文章中,我只会针对实例给出代码,至于如何举一反三,请各位同学自行根据GMT手册研究。
序言:GMT的使用环境
(1)安装
我个人是使用mac作为工作电脑环境,因此安装GMT可以用homebrew、macport等工具简单地进行安装。在终端里输入:
brew install gmt
或
brew install gmt@5
注意homebrew里的GMT包是GMT6的版本。如果要安装GMT5版本,需使用第二条命令。
(2)使用
通常,GMT的代码都需要写在bash之类的批处理用文档里。
比如,本次实例所用代码都可以写入plscatter.sh这样的文件里,然后通过以下命令执行。
sh plscatter.sh
正文:(1)散点图(Scatter Plot)+拟合 —— 此为GMT5版
先上效果图(数据是我随手选的)。
这张图上,包含了大部分GMT画散点图所需要用到内容:
- 绘制子图
- 根据数据绘制点并着色。
- 绘制颜色尺度
- 添加不同字体、颜色的文本和绘制文本框
- 上下标等小功能
伸手党可以直接复制走。如果想学习,则可以继续往后看。
#!/bin/bash
# Description: A sample for GMT.
# Author: Zhihu Gadian
#
# output in English
export LANG=C
######### Personal Settings
# . ./gmtpar.sh 调用公共设置中,以下为gmtpar.sh的内容。
gmt set PROJ_LENGTH_UNIT INCH
gmt set FONT_TITLE 20
gmt set FONT_ANNOT_PRIMARY 14
gmt set FONT_LABEL 16
gmt set MAP_TICK_PEN thin
gmt set MAP_FRAME_TYPE plain
gmt set MAP_FRAME_PEN thicker
gmt set PS_MEDIA a4
########## End Personal Settings
range=1800/2400/1800/2400
cptfile=compare.cpt
size=2.8
xanot=a200f100g300
yanot=a200f100g300
in=sample.txt
out=sample.ps
gmt makecpt -Cseis -T0/60/2 -D -I > $cptfile
########panel 1
gmt psbasemap -R${
range} -JX${
size} -B${
xanot}:"Sample 1 Obs. [m@+2@+]":/${
yanot}:"Sample 1 Model [m@+2@+]":WSne -X1 -K > $out
awk '{if ( $1 != "#" && $2 > -900. && $4 > -900. ) print $2,$4,$1}' $in|
gmt psxy -R -J -Sc0.04 -C$cptfile -O -K >> $out
awk '{if ( $1 != "#" && $2 > -900. && $4 > -900. ) print $2,$4}' $in|
gmt regress -Fxm -T1700/2500/1 > sample1_regress