GMT 入门
GMT 实例
GMT 进阶
- 基础知识
- 表数据
- 网格文件
- 颜色表 CPT
- 标准选项
- 地图投影
- -JX: Linear, logarithmic, power, and time
- -JP: Polar/Cylindrical
- -JA: Lambert azimuthal equal area
- -JB: Albers conic equal area
- -JC: Cassini cylindrical
- -JCyl_stere: Cylindrical stereographic
- -JD: Equidistant conic
- -JE: Azimuthal equidistant
- -JF: Azimuthal gnomonic
- -JG: Azimuthal orthographic/General perspective
- -JH: Hammer equal area
- -JI: Sinusoidal equal area
- -JJ: Miller cylindrical
- -JK: Eckert equal area
- -JL: Lambert conic conformal
- -JM: Mercator cylindrical
- -JN: Robinson
- -JO: Oblique Mercator
- -JPoly: (American) polyconic
- -JQ: Equidistant cylindrical
- -JR: Winkel Tripel
- -JS: General stereographic
- -JT: Transverse Mercator
- -JU: Universal Transverse Mercator (UTM)
- -JV: Van der Grinten
- -JW: Mollweide
- -JY: Cylindrical equal area
- 配置参数
- 地学数据集
- 中国地理空间数据集
- 中文支持
- API
- 模块手册
- basemap
- begin
- clear
- clip
- coast
- colorbar
- contour
- coupe
- end
- figure
- filter1d
- fitcircle
- gmt
- gmt-config
- gmtbinstats
- gmtconnect
- gmtdefaults
- gmtget
- gmtinfo
- gmtlogo
- gmtmath
- gmtselect
- gmtset
- gmtsimplify
- gmtspatial
- gmtsplit
- gmtvector
- gmtwhich
- grd2cpt
- grd2xyz
- grdblend
- grdclip
- grdcontour
- grdconvert
- grdcut
- grdedit
- grdfill
- grdimage
- grdinfo
- grdlandmask
- grdmask
- grdmath
- grdpaste
- grdproject
- grdsample
- grdtrack
- grdtrend
- grdvector
- grdview
- grdvolume
- gshhg
- histogram
- image
- img2google
- img2grd
- kml2gmt
- makecpt
- mapproject
- mask
- meca
- nearneighbor
- plot
- polar
- project
- psconvert
- rose
- sac
- sample1d
- solar
- spectrum1d
- sph2grd
- sphdistance
- sphinterpolate
- sphtriangulate
- surface
- ternary
- text
- triangiulate
- velo
- wiggle
- x2sys_binlist
- x2sys_cross
- x2sys_datalist
- x2sys_get
- x2sys_init
- x2sys_list
- x2sys_merge
- x2sys_put
- x2sys_report
- x2sys_solve
- xyz2grd
- mgd77manage
- mgd77convert
- mgd77header
- mgd77info
- mgd77list
- mgd77magref
- mgd77path
- mgd77sniffer
- mgd77track
- legend
- docs
- subplot
- inset
附录
其他
-B 选项
-B 选项用于设置底图边框和轴的属性。
-B 选项在设置边框属性时的语法为:
-B[axes][+b][+gfill][+i[val]][+n][+olon/lat][+ssubtitle][+ttitle][+w[pen]][+xfill][+yfill][+zfill]
其中:
axes 控制显示底图的哪几条边,具体用法在下面进一步介绍
+ttitle 指定当前底图的标题。该标题位于底图上方的中间位置。标题的文本属性由 FONT_TITLE 控制,标题与上边框之间的距离由 MAP_TITLE_OFFSET 控制
+ssubtitle (需要 +ttitle 子选项)指定底图副标题,位于标题下方。副标题的文本属性由 FONT_SUBTITLE 控制
+gfill 为底图内部填充颜色,见 填充;在 3-D 图中可用于填充两个背景墙
+n 表示不绘制边框
+i[val] 对于某些投影方式,某条轴可能不会被绘制或标注(比如 360 度的方位投影地图没有纬度轴,全球 Hammer 投影没有经度轴),使用该子选项可以强制标注一个 val 经线或纬线。[ val 默认值为 0 ]
+olon/lat 指定网格线的参考点。默认情况下,网格线是以北极点作为参考的,如果你想要以另一个点作为参考绘制倾斜的网格线,则可以使用 +o 子选项
以下子选项仅用于绘制 3-D 图:
+b 使用该子选项则会绘制 3-D 底图的 12 条边
+w[pen] 绘制 x-z 和 y-z 平面轮廓,pen 可以指定轮廓画笔属性 [默认使用 MAP_GRID_PEN_PRIMARY]
+x[fill] 填充 y-z 平面
+y[fill] 填充 x-z 平面
+z[fill] 填充 z-y 平面
通常情况下,绘图时只需要使用 axes 和 +ttitle 选项。
备注
+ttitle 以及 +ssubtitle 设置的(副)标题可以是任意字符串,如果是字符串中有空格,则必须用引号将字符串括起来
使用
@^
或者<break>
标记可以将(副)标题分为多行(副)标题中可以使用 LaTeX 表达式,详见 LaTeX 表达式
axes
axes 用于控制要绘制哪些边以及这些边是否有刻度或标注。axes 的格式为:
WSENZ[1234]wsenz[1234]lrbtu
二维底图(上图中的左图)有四条边,分别用东西南北(WSEN 或 wsen)或左右上下(lrtb)的单词首字母表示。每条边都有四种状态:
不出现某个字母 => 不绘制该字母所对应的边
出现大写字母 WSEN => 绘制某条边,该边有刻度、有标注
出现小写字母 wsen => 绘制某条边,该边有刻度、无标注
出现小写字母 lrtb => 绘制某条边,该边无刻度、无标注
下图给出了不同的 -B 选项绘制出来的效果图。读者可以修改如下命令中的 -B 选项来尝试不同搭配的效果:
gmt basemap -R0/4/0/4 -JX10c -BWS -pdf axes
3-D 底图有 12 条边(上图中的右图)。对于 3-D 底图而言,Zzu 用于控制 Z 轴的绘制
Z 表示有刻度和标注
z 表示有刻度无标注
u 表示无刻度无标注
默认只绘制一条 Z 轴,可以额外加上 1234 的任意组合来表示要绘制哪些 Z 轴。其中 1 始终表示位于左下角的 Z 轴,其他 Z 轴按逆时针顺序编号。加上 +b 子选项则绘制全部 12 条边。
下图展示了 3-D 绘图中 -B 选项的不同用法。读者可以修改如下命令中的 -B 选项来实现不同搭配的效果:
gmt basemap -R0/10/0/10/0/10 -JX5c -JZ5c -Bxaf -Byaf -Bzaf -BwesnZ+t"-BwesnZ" -p130/30 -pdf map
轴设置
X 轴、Y 轴、Z 轴,每条轴都有很多属性,包括刻度间隔、网格线间隔、轴标签以及标注的间隔、前缀和单位。轴属性可以用如下语法控制:
-B[p|s][x|y|z]intervals[+aangle|n|p][+e[l|u]][+f][+l|Llabel][+s|Sseclabel][+pprefix][+uunit]
以上语法也可以被拆分为两部分:
-B[p|s][x|y|z]intervals 和 -B[p|s][x|y|z][+aangle|n|p][+e[l|u]][+f][+l|Llabel][+s|Sseclabel][+pprefix][+uunit]
其中,
p|s 表示一级属性(primary)和二级属性(secondary),具体用法下面会进一步介绍
x|y|z 表示设置哪一条轴的属性,具体用法下面会进一步介绍
interval 设置刻度、网格线、标注的间隔,具体用法下面会进一步介绍
+aangle|n|p (仅用于笛卡尔轴)用于设置标注的倾斜角度,其中 angle 是相对于水平方向的旋转角度,取值范围为 -90 到 90 度。 +an 等效于 +a90 即垂直标注 [ y 轴默认标注方式], +ap 等效于 +a0 即平行标注 [ x 轴默认标注方式]。默认设置可以使用 MAP_ANNOT_ORTHO 修改
+llabel (仅用于笛卡尔轴)用于给指定的轴加标签。默认情况下,X 轴标签文字方向平行于 X 轴,Y 轴标签文字方向平行于 Y 轴。对于 Y 轴,可以使用 +Llabel 使得 Y 轴标签文字方向平行于 X 轴
+slabel (仅用于笛卡尔轴)与 +llabel 类似,也用于给指定的轴添加标签。当同时使用 +llabel 和 +ssecabel 时,前者用于指定左轴或下轴的标签,而后者用于指定右轴和上轴的标签。同样,+S 使得 Y 轴标签文字平行于 X 轴
+pprefix (仅用于笛卡尔轴)在选中的轴的标注加前缀
+uunit (仅用于笛卡尔轴)给选中的轴的标注加单位。对于地理图而言,标注的单位为度,该符号是自动添加的,由 FORMAT_GEO_MAP 控制
+f (仅用于地理坐标轴)在轴标注后增加 W|S|E|N 标志
+e[l|u] 不显示轴末端的标注(该选项可避免在轴相交的地方不同轴的标注重合)。l 和 u 分别表示较小的标注和较大的标注。
备注
如果 label 、prefix 或 unit 中包括空格或特殊字符,则必须用引号将字符串括起来。特殊字符的使用见 特殊字符 章节
轴标签 label 可以使用 LaTeX 表达式,详见 LaTeX 表达式
对于非地理投影(如线性投影),指定负的比例尺或底图长度,可以改变坐标轴正方向的指向
x|y|z
x|y|z 用于指明要设置哪条边的属性,默认值为 xy,即同时设置 X 轴和 Y 轴的属性。可以指定单个轴(比如只有 x),也可以同时指定多个轴(比如 xy 和 xyz)。如果想要不同轴有不同的设置,则需要多次使用 -B 选项,每个指定不同的轴。例如:
-Bxaf -Byaf -Bxyzaf
interval
每个轴都有三个属性,分别是标注(annotation)、刻度(frame)和网格线(grid)。下图展示了这三个名词在绘图时的具体含义。
GMT 坐标轴中的标注、刻度和网格线
对于每个轴来说,都有两个等级的属性可以设置,分别称为 p(Primary,一级属性)和 s(Secondary,二级属性)。
对于地理坐标而言,通常只需要使用默认的 Primary 属性即可,而 Secondary 则主要用于坐标轴为时间轴的情况下,此时 p 和 s 分别用于指定不同尺度的时间间隔。在 GMT 默认的情况下,p 属性的标注比较靠近坐标轴,而 s 属性的标注离坐标轴稍远。因此,为了更好的显示,相比于 s 属性,通常情况下, p 属性的标注、刻度线以及网格线间隔都较短,间隔也较小。 p 和 s 的具体用法与区别,可以参考后面给出的例子。
地理底图
地理底图与一般的坐标轴不同,其底图类型支持使用 MAP_FRAME_TYPE 设置为 fancy 形式。使用 FORMAT_GEO_MAP 以及 MAP_DEGREE_SYMBOL 参数可以修改标注的形式。
地理底图示例 1
对于非地理坐标轴,MAP_FRAME_TYPE 隐式地设置为 plain 。除此之外,笛卡尔轴和地理坐标轴非常类似。对于一般的线性轴而言,标注的格式由 FORMAT_FLOAT_OUT 决定,其默认值为
%g
,即根据数据的大小决定用一般表示还是指数表示,小数位的数目会根据 stride 自动决定。若设置 FORMAT_FLOAT_OUT 为其他值,则会严格使用其定义的格式,比如%.2f
表示显示两位小数。对于笛卡尔线性轴,使用 +uunit 子选项可以为每个标注添加单位。笛卡尔线性轴
由于对数坐标的特殊性,stride 参数具有特殊的含义。下面说明 stride 在对数坐标下的特殊性:
stride 必须是 1、2、3 或负整数 -n。数字用来设置要素(标注/刻度/网格线)出现的位置。
1:表示要素出现在所有 10 的整次幂的位置
2:表示要素出现在所有 10 的整次幂的 1、2、5 倍的位置
3:表示要素出现在所有 10 的整次幂的 1、2、3、4、…、9 倍的位置
-n:表示要素出现在 10 的 n 次幂的位置
在 stride 后加 l,则标注会以 log10 的值显示,比如 100 会显示成 2
在 stride 后加 p,则标注会以 10 的 n 次方的形式显示,比如 10-5
对数坐标轴
正常情况下,stride 用于生成等间隔的标注或刻度,但是由于指数函数的特性,这样的标注会在坐标轴的某一端挤在一起。为了避免这个问题,可以在 stride 后加 p,则标注会按照转换后的值等间隔出现,而标注本身依然使用未转换的值。比如,若 stride = 1,power = 0.5(即 sqrt ),则在 1、4、9、… 处会出现标注。
指数投影坐标轴
时间轴与其他轴不同的地方在于,时间轴可以有多种不同的标注方式。下面会用一系列示例来演示时间轴的灵活性。在下面的例子中,尽管只绘制了 X 轴(绘图时使用了 -BS),实际上时间轴标注的各种用法可以用于全部轴。
在绘制时间轴时,需要指定时间间隔,时间间隔的单位可以取如下值:
GMT 时间单位 如果坐标轴以弧度为单位,用户可以直接指定 \(\pi\) 的整数倍或分数倍作为标注间隔,其格式为 [s]pi[f],其中 s 表示标注间隔是 \(\pi\) 的 s 倍,而 f 表示标注间隔为 \(\pi\) 的 f 分之一。
gmt basemap -JX10c/5c -R-12pi/12pi/-1/1 -Bxa3pi -BS -png test1
gmt basemap -JX10c/5c -R-pi/pi/-1/1 -Bxapi4 -BS -png test2
自定义轴
GMT 允许用户定义标注来实现不规则间隔的标注,用法是 -Bc 后接标注文件名。
标注文件中以“#”开头的行为注释行,其余为记录行,记录行的格式为:
coord type [label]
coord 是需要标注、刻度或网格线的位置
type 是如下几个字符的组合
a 或 i 前者为 annotation,后者表示 interval annotation,在一个标注文件中,a 和 i 只能出现其中的任意一个
f 表示刻度,即 frame tick
g 表示网格线,即 gridline
label 默认的标注为 coord 的值,若指定 label,则使用 label 的值
备注
coord 必须按递增顺序排列
下面的例子中展示了自定义标注的用法,xannots.txt 和 yannots.txt 分别是 X 轴和 Y 轴的标注文件:
cat << EOF >| xannots.txt 416.0 ig Devonian 443.7 ig Silurian 488.3 ig Ordovician 542 ig Cambrian EOF cat << EOF >| yannots.txt 0 a 1 a 2 f 2.71828 ag e 3 f 3.1415926 ag @~p@~ 4 f 5 f 6 f 6.2831852 ag 2@~p@~ EOF gmt begin GMT_-B_custom gmt basemap -R416/542/0/6.2831852 -JX-12c/6c -Bpx25f5g25+u" Ma" \ -Bpycyannots.txt -Bsxcxannots.txt -BWS+glightblue \ --MAP_ANNOT_OFFSET_SECONDARY=10p --MAP_GRID_PEN_SECONDARY=2p gmt end show
自定义坐标轴
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论