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
附录
其他
subplot
- 官方文档
- 简介
管理和设置子图模式
subplot 模块可以将当前纸张分隔成若干个网格区域,每个区域内都可以包含一张单独的子图。
subplot 模块提供了三条指令:
subplot begin 进入子图模式,并设置子图的布局
subplot set 用于指定接下来的绘图操作在哪一个子图中进行
subplot end 用于结束子图模式
在子图模式中,需要注意如下几点:
gmt subplot begin nrowsxncols
- nrowsxncols
指定子图的行数和列数。中间为小写英文字母 x,不是星号或其他符号。
每一行和每一列均有相同的子图数目。注意:你无需在每个子图内都绘图。
- -F[f|s]width/height[+fwfracs/hfracs][+cdx/dy][+gfill][+ppen][+wpen]
指定图片的尺寸。有两种方式:
-Ff: 直接指定整张图片的尺寸
-Fs: 指定单个子图的尺寸
除此之外,还可以为整张图加上背景色和边框:
+ppen: 为整张图加上背景矩形边框
+wpen: 绘制子图区域之间的水平和垂直分割线
+gfill: 为整张图的背景矩形填充颜色
+cdx/dy: 设置背景矩形与整张图之间的额外空白
- -F[f]width/height[+fwfracs/hfracs]
指定整张图片的宽度 width 和高度 height。
这种情况下,GMT会根据整张图片的尺寸以及子图的数目自动计算每张子图的尺寸。在计算子图尺寸时会考虑每个子图的刻度线、标注、标签所占据的空间,以及不同子图之间的间隔。整张图的最外圈的刻度线、标记和标签不算在整张图片尺寸之内。
默认所有行和列的尺寸都是相同的。若想要子图的每一行具有不同的高度,或者子图的每一列具有不同的宽度,则可以使用 +f,后面紧跟着一系列逗号分隔的宽度比例和以逗号分隔的高度比例。单个数则表示所有行或列有相同的宽度或高度。
例如,对于一个2x2的子图,使用-Ff12c/12c+f3,1/1,2 则表示
整张图的宽度和高度均为12厘米
第一列占3个宽度,第二列占1个宽度
第一行占1个高度,第二行占2个高度
- -Fswidths/heights
通过指定每个子图的宽度和高度间接指定图片尺寸。
在这种情况下,整张图片的尺寸由每个子图的尺寸以及刻度线、标注、标签占据的空间和子图之间的间隙共同决定,但最外圈的刻度线、标记、标签所占据的空间不算在整张图的尺寸之内。
默认所有行和列的尺寸都是相同的。若想要给每行或每列指定不同的子图尺寸,可以加上一系列以逗号分隔的宽度,然后再加上一个斜杠,并加上一系列以逗号分隔的高度。单个数则表示所有行或列有相同的宽度或高度。
例如,对于一个2x2的子图,使用 -Fs4c,8c/4c 则表示第一列为4厘米宽,第二列为8厘米宽,所有列的高度均为4厘米高。注意,宽度值或高度值的数目必须是一个或者与行数/列数相匹配。
对于地理地图而言,每张子图的高度由地图区域
- -A[autolabel][+j|Jrefpoint][+cdx/dy][+gfill][+ppen][+odx/dy][+r][+R][+v]
为子图自动添加编号。
autolabel 可以是单个数字或字母,也可以在数字或字母的一侧或两侧加上括号。其设置了左上角第一张子图的编号,而其余子图则按照递增的顺序依次编号。默认值为 a)。
备注
括号在Unix Shell中有特殊含义,可以将其用单引号括起来,即
'(a)'
。加上子选项可以指定编号的更多属性:
- -Bparameters (more …)
设置底图边框和轴属性
- -C[side]clearance
设置子图区域内某个边的额外空白量。这些额外的空白量可以用于绘制比例尺、添加额外的文字等。
side 可以取 e w s n 分别代表东西南北四条边;也可以取 x 或 y,分别表示设置东西或南北方向两条边的空白;若不指定 side,则表示同时设置四条边上的空白量。
该选项可以重复多次,对不同边分别设置不同的间距。
subplot begin 中该选项对所有子图均有效,而 subplot set 中使用该选项则仅对当前子图有效。
备注
在子图模式内不能使用
subplot set 通过指定子图的行列号或索引号以激活某个特定的子图,接下来的所有绘图命令将只在该子图内进行绘制。其与 -c 选项 功能基本一致。
子图的行号、列号、索引号均从0开始算起。因而对于MxN的子图而言,行号的取值为0到M-1,列号的取值为0到N-1,索引号的取值则为0到(M*N-1)。
若使用 subplot set 但未指定子图的行列号或索引号,则GMT会自动激活“下一个”子图。例如,对于一个2行2列的图而言,每次使用 subplot set 而不指定子图行和列,则按照行优先顺序依次激活子图
0,0
→0,1
→1,0
→1,1
。若 subplot begin 中使用了 -A+v 选项,则按照列优先顺序依次激活子图0,0
→1,0
→0,1
→1,1
。subplot set 语法
gmt subplot set [ row,col|index ] [ -Afixedlabel] [ -Cside/clearance ] [
- row,col | index
指定要激活的子图的行列号或索引号。行列号、索引号均从0开始算起。
若不指定子图行列号或索引号,则自动激活“下一个”子图。
- -Afixedlabel
设置当前子图的编号,忽略 subplot begin 中
该命令用于结束当前的子图模式。
在结束子图模式时,其会进行如下操作:
对所有子图进行编号
将绘图原点重置回之前的原点位置
更新历史信息,设置为线性投影,并给出整张图的大小,使得用户可以使用 -DJ 方式放置colorbar等。
subplot end 语法
gmt subplot end [
下面的示例展示了如何设置一张2x2布局的图,并使用不同的方式指定要激活的子图。不同的设置方式的效果是相同的,用户在使用时可根据需求选择最直观最简便的方式。
方法1: 使用 subplot set 指定子图行列号
注意行列号均从0开始。
gmt begin map gmt subplot begin 2x2 -Fs5c/2.5c -A gmt subplot set 0,0 gmt basemap -R0/10/0/10 -Baf gmt subplot set 0,1 gmt basemap -R0/10/0/10 -Baf gmt subplot set 1,0 gmt basemap -R0/10/0/10 -Baf gmt subplot set 1,1 gmt basemap -R0/10/0/10 -Baf gmt subplot end gmt end show
方法2: 使用 subplot set 指定子图索引号
注意子图索引号从0开始:
gmt begin map gmt subplot begin 2x2 -Fs5c/2.5c -A gmt subplot set 0 gmt basemap -R0/10/0/10 -Baf gmt subplot set 1 gmt basemap -R0/10/0/10 -Baf gmt subplot set 2 gmt basemap -R0/10/0/10 -Baf gmt subplot set 3 gmt basemap -R0/10/0/10 -Baf gmt subplot end gmt end show
方法3: 使用 subplot set 但不指定子图号
每次使用 subplot set 但不指定子图行列号或索引号,则会自动激活“下一个”子图:
gmt begin map gmt subplot begin 2x2 -Fs5c/2.5c -A gmt subplot set gmt basemap -R0/10/0/10 -Baf gmt subplot set gmt basemap -R0/10/0/10 -Baf gmt subplot set gmt basemap -R0/10/0/10 -Baf gmt subplot set gmt basemap -R0/10/0/10 -Baf gmt subplot end gmt end show
方法4: 使用 -c 选项
-c 选项 的功能与 subplot set 类似,可以用于激活指定的子图。其后可以接子图行列号或索引号,也可以只使用 -c 自动激活下一个子图:
gmt begin map gmt subplot begin 2x2 -Fs5c/2.5c -A gmt basemap -R0/10/0/10 -Baf -c gmt basemap -R0/10/0/10 -Baf -c gmt basemap -R0/10/0/10 -Baf -c gmt basemap -R0/10/0/10 -Baf -c gmt subplot end gmt end show
下面展示了如何设置一个2x2的图,并设置共用X和Y轴:
gmt begin panels gmt subplot begin 2x2 -Fs10c/5c -M5p -A -SCb -SRl -Bwstr -R0/80/0/10 gmt subplot set gmt basemap gmt subplot set gmt basemap gmt subplot set gmt basemap gmt subplot set gmt basemap gmt subplot end gmt end show
下面的示例展示了如何绘制一个不完全规则的子图。这个示例中,实际上只使用了子图0、2、3,而第一张图同时占据了子图0和1的空间。在这种情况下,GMT的自动编号功能无法正确编号,因而需要在 subplot set 中为每个子图单独指定编号。
gmt begin map gmt subplot begin 2x2 -Fs5c/3c -A -M0 gmt subplot set 0 gmt basemap -R0/20/0/10 -JX11.2c/3c -Baf -BWSen gmt subplot set 2 -A'(b)' gmt basemap -R0/20/0/10 -JX? -Baf -BWSen gmt subplot set 3 -A'(c)' gmt basemap -R0/20/0/10 -JX? -Baf -BWSen gmt subplot end gmt end show
相关模块
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论