From 7263a6e8608a0270cdc397190caa9b1b3b3e6ab5 Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Wed, 4 Sep 2024 19:21:42 +0800 Subject: [PATCH] ReST->MyST Chapter 3 (#1349) --- source/tutorial/advanced.md | 14 ++ source/tutorial/advanced.rst | 14 -- source/tutorial/{basemap.rst => basemap.md} | 125 ++++++++------- .../tutorial/{coastline.rst => coastline.md} | 52 ++++--- source/tutorial/commands.md | 112 +++++++++++++ source/tutorial/commands.rst | 108 ------------- .../{configurations.rst => configurations.md} | 80 +++++----- .../{earth-relief.rst => earth-relief.md} | 71 +++++---- .../get-started/{index.rst => index.md} | 14 +- source/tutorial/get-started/linux.md | 138 ++++++++++++++++ source/tutorial/get-started/linux.rst | 132 ---------------- source/tutorial/get-started/macos.md | 140 +++++++++++++++++ source/tutorial/get-started/macos.rst | 134 ---------------- source/tutorial/get-started/windows.md | 147 ++++++++++++++++++ source/tutorial/get-started/windows.rst | 143 ----------------- .../histogram/{index.rst => index.md} | 45 +++--- source/tutorial/{inset.rst => inset.md} | 15 +- .../tutorial/layers/{index.rst => index.md} | 59 +++---- source/tutorial/{legend.rst => legend.md} | 70 +++++---- source/tutorial/{lines.rst => lines.md} | 142 +++++++++-------- source/tutorial/multifig.md | 33 ++++ source/tutorial/multifig.rst | 32 ---- source/tutorial/oneliner.md | 33 ++++ source/tutorial/oneliner.rst | 30 ---- source/tutorial/scripting/bash.md | 83 ++++++++++ source/tutorial/scripting/bash.rst | 86 ---------- source/tutorial/scripting/batch.md | 107 +++++++++++++ source/tutorial/scripting/batch.rst | 100 ------------ .../scripting/{index.rst => index.md} | 12 +- source/tutorial/{started.rst => started.md} | 30 ++-- source/tutorial/{subplot.rst => subplot.md} | 103 ++++++------ source/tutorial/{symbols.rst => symbols.md} | 47 +++--- source/tutorial/{texts.rst => texts.md} | 65 ++++---- 33 files changed, 1321 insertions(+), 1195 deletions(-) create mode 100644 source/tutorial/advanced.md delete mode 100644 source/tutorial/advanced.rst rename source/tutorial/{basemap.rst => basemap.md} (51%) rename source/tutorial/{coastline.rst => coastline.md} (81%) create mode 100644 source/tutorial/commands.md delete mode 100644 source/tutorial/commands.rst rename source/tutorial/{configurations.rst => configurations.md} (61%) rename source/tutorial/{earth-relief.rst => earth-relief.md} (76%) rename source/tutorial/get-started/{index.rst => index.md} (69%) create mode 100644 source/tutorial/get-started/linux.md delete mode 100644 source/tutorial/get-started/linux.rst create mode 100644 source/tutorial/get-started/macos.md delete mode 100644 source/tutorial/get-started/macos.rst create mode 100644 source/tutorial/get-started/windows.md delete mode 100644 source/tutorial/get-started/windows.rst rename source/tutorial/histogram/{index.rst => index.md} (83%) rename source/tutorial/{inset.rst => inset.md} (92%) rename source/tutorial/layers/{index.rst => index.md} (68%) rename source/tutorial/{legend.rst => legend.md} (64%) rename source/tutorial/{lines.rst => lines.md} (75%) create mode 100644 source/tutorial/multifig.md delete mode 100644 source/tutorial/multifig.rst create mode 100644 source/tutorial/oneliner.md delete mode 100644 source/tutorial/oneliner.rst create mode 100644 source/tutorial/scripting/bash.md delete mode 100644 source/tutorial/scripting/bash.rst create mode 100644 source/tutorial/scripting/batch.md delete mode 100644 source/tutorial/scripting/batch.rst rename source/tutorial/scripting/{index.rst => index.md} (86%) rename source/tutorial/{started.rst => started.md} (55%) rename source/tutorial/{subplot.rst => subplot.md} (67%) rename source/tutorial/{symbols.rst => symbols.md} (89%) rename source/tutorial/{texts.rst => texts.md} (75%) diff --git a/source/tutorial/advanced.md b/source/tutorial/advanced.md new file mode 100644 index 0000000000..f8263200ed --- /dev/null +++ b/source/tutorial/advanced.md @@ -0,0 +1,14 @@ +# 进阶教程 + +《进阶教程》展示如何使用 GMT 实现更复杂的绘图功能。 + +```{toctree} +:maxdepth: 1 + +histogram/index +configurations +oneliner +inset +subplot +multifig +``` diff --git a/source/tutorial/advanced.rst b/source/tutorial/advanced.rst deleted file mode 100644 index a63a832875..0000000000 --- a/source/tutorial/advanced.rst +++ /dev/null @@ -1,14 +0,0 @@ -进阶教程 -======== - -《进阶教程》展示如何使用 GMT 实现更复杂的绘图功能。 - -.. toctree:: - :maxdepth: 1 - - histogram/index - configurations - oneliner - inset - subplot - multifig diff --git a/source/tutorial/basemap.rst b/source/tutorial/basemap.md similarity index 51% rename from source/tutorial/basemap.rst rename to source/tutorial/basemap.md index cc5507d155..989e7d3ea1 100644 --- a/source/tutorial/basemap.rst +++ b/source/tutorial/basemap.md @@ -1,14 +1,12 @@ -绘制底图 -======== +# 绘制底图 GMT 可以绘制多种不同类型的底图,包括全球地图、区域地图,以及线性坐标轴、 对数轴、指数轴、极坐标轴,甚至 3D 坐标轴。 -这一节我们将通过使用 :doc:`/module/coast` 和 :doc:`/module/basemap` 模块绘制 -不同类型的底图,并了解 GMT 中 **-J**、**-R**\ 和 **-B** 选项的基本用法。 +这一节我们将通过使用 {doc}`/module/coast` 和 {doc}`/module/basemap` 模块绘制 +不同类型的底图,并了解 GMT 中 **-J**、**-R**和 **-B** 选项的基本用法。 -全球地图 --------- +## 全球地图 要绘制地图,就需要将地球的三维球面投影到一个二维面上,投影的过程需要指定投影方式。 GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 @@ -16,6 +14,7 @@ GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 下面用最简单的命令绘制了一张全球地图。 +```{eval-rst} .. gmtplot:: :caption: 全球地图(无边框版) :width: 85% @@ -23,19 +22,21 @@ GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 gmt begin GlobalMap gmt coast -JH180/12c -R0/360/-90/90 -W0.5p -A10000 gmt end show +``` -先忽略后面的 **-W0.5p -A10000**\ (后面章节会介绍到),这里只关注 **-J** 和 **-R** 选项。 +先忽略后面的 **-W0.5p -A10000**(后面章节会介绍到),这里只关注 **-J** 和 **-R** 选项。 此示例中: -#. **-JH180/12c** 指定地图投影参数,**H** 表示使用 Hammer 投影,地图中心位于经度 180° 处, - 地图宽度为 12 厘米(**12c**,**c** 表示单位厘米); -#. **-R0/360/-90/90** 指定要绘制的区域范围,即经度 0° 到 360°,纬度 -90° 到 90°, - 四个数字之间用斜杠 **/** 分隔。 +1. **-JH180/12c** 指定地图投影参数,**H** 表示使用 Hammer 投影,地图中心位于经度 180° 处, + 地图宽度为 12 厘米(**12c**,**c** 表示单位厘米); +2. **-R0/360/-90/90** 指定要绘制的区域范围,即经度 0° 到 360°,纬度 -90° 到 90°, + 四个数字之间用斜杠 **/** 分隔。 上面使用了非常简单的 GMT 命令即绘制出了一张全球地图的底图,但其跟我们常见的 全球地图比还缺了个底图边框。GMT 中可以使用 **-B** 选项为地理底图加上边框 并绘制经纬线。 +```{eval-rst} .. gmtplot:: :caption: 全球地图(有边框版) :width: 85% @@ -43,34 +44,35 @@ GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 gmt begin GlobalMap gmt coast -JH180/12c -Rg -Bg -W0.5p -A10000 gmt end show +``` 跟上一个脚本相比,此处我们做了两点修改: -#. 使用 **-Rg** 代替了 **-R0/360/-90/90**。这二者是完全等效的。 - 由于绘制全球地图是很常见的需求,因而 GMT 为其设计了一个更简单的写法。 - **-Rg** 中 **g** 代表 **g**\ lobal。 -#. 增加了 **-Bg** 选项。**-B** 用于给底图加上边框,其中的 **g** 则用于 - 向底图中加入网格线(**g** 代表 \ **g**\ rid)。 +1. 使用 **-Rg** 代替了 **-R0/360/-90/90**。这二者是完全等效的。 + 由于绘制全球地图是很常见的需求,因而 GMT 为其设计了一个更简单的写法。 + **-Rg** 中 **g** 代表 **g**lobal。 +2. 增加了 **-Bg** 选项。**-B** 用于给底图加上边框,其中的 **g** 则用于 + 向底图中加入网格线(**g** 代表 **g**rid)。 -.. tip:: +:::{tip} +GMT 支持 30 多种不同的地图投影方式,详情见 {doc}`/proj/index` 一章。 +将上面的示例脚本中 **-JH180/12c** 修改为下面列出的一些值以了解不同投影方式之间的差异: - GMT 支持 30 多种不同的地图投影方式,详情见 :doc:`/proj/index` 一章。 - 将上面的示例脚本中 **-JH180/12c** 修改为下面列出的一些值以了解不同投影方式之间的差异: +- **-JA280/30/12c** +- **-JI180/12c** +- **-JK180/12c** +- **-JN180/12c** +- **-JR180/12c** +::: - - **-JA280/30/12c** - - **-JI180/12c** - - **-JK180/12c** - - **-JN180/12c** - - **-JR180/12c** - -区域地图 --------- +## 区域地图 绘制区域地图与绘制全球地图没有本质区别,我们依然需要使用 **-J** 指定投影方式, 使用 **-R** 指定绘图区域范围,使用 **-B** 指定底图边框。 下面的 GMT 命令绘制了一张新西兰地图。 +```{eval-rst} .. gmtplot:: :caption: 使用国家代码指定绘图区域 :width: 50% @@ -78,14 +80,15 @@ GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 gmt begin NewZealandMap gmt coast -JM12c -RNZ -Ba -W0.5p -A10000 gmt end show +``` 这里我们使用了: -- **-JM12c** 指定了使用墨卡托投影(绘制区域地图最常用的投影方式),地图宽度为 12 厘米; -- **-RNZ** 指定了绘图区域范围,此处 **NZ** 是新西兰的国家代码,GMT 会自动根据国家代码 - 提取该国家的区域范围并用于绘图; -- **-Ba** 用于给底图添加边框。对于某些地图投影,GMT 默认使用图中所示的黑白相间的 - 底图边框。**a** 用于添加标注(**a**\ nnotation,即图中的经纬度数字)。 +- **-JM12c** 指定了使用墨卡托投影(绘制区域地图最常用的投影方式),地图宽度为 12 厘米; +- **-RNZ** 指定了绘图区域范围,此处 **NZ** 是新西兰的国家代码,GMT 会自动根据国家代码 + 提取该国家的区域范围并用于绘图; +- **-Ba** 用于给底图添加边框。对于某些地图投影,GMT 默认使用图中所示的黑白相间的 + 底图边框。**a** 用于添加标注(**a**nnotation,即图中的经纬度数字)。 如果对于根据国家代码自动确定的区域范围不太满意,我们也可以使用 **-R** 选项 最原始的方式来指定区域范围。 @@ -95,6 +98,7 @@ GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 通过上面的图,我们大概知道了新西兰的经纬度范围。我们可以直接使用 **-R165/180/-48/-32** 指定绘图区域。 +```{eval-rst} .. gmtplot:: :caption: 使用经纬度范围指定绘图区域 :width: 50% @@ -102,23 +106,25 @@ GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 gmt begin NewZealandMap gmt coast -JM12c -R165/180/-48/-32 -Bafg -W0.5p -A10000 gmt end show +``` -上面的例子中我们还调整了 **-B** 选项,**-Bafg** 表示绘制底图边框的标注(**a**\ nnotation)、 -刻度线(**f**\ rame,即图中黑白线段的间隔)和网格线(**g**\ rid)。 +上面的例子中我们还调整了 **-B** 选项,**-Bafg** 表示绘制底图边框的标注(**a**nnotation)、 +刻度线(**f**rame,即图中黑白线段的间隔)和网格线(**g**rid)。 标注、刻度线以及网格线的间隔由 GMT 算法自动决定。 对 GMT 自动算法确定的间隔不满意?你还可以任意指定自己想要的间隔。 下面例子中,我们对底图进行了进一步的自定义,为 X 轴和 Y 轴分别指定了间隔, 并给底图添加了标题: -- **-Bxa4g2** 表示设置 X 轴(**x**)的标注间隔为 4 度、网格线间隔为 2 度(**a4g2**) -- **-Bya3g3** 表示设置 Y 轴(**y**)的标注间隔为 3 度、网格间隔为 3 度(**a3g3**) -- **-BWSen** 中 WSEN 分别是西南东北四个方向的英文单词首字母,用于控制四条边的属性。 - 大写的 **WS** 表示给西边和南边添加标注,而小写的 **en** 则表示对于东边和北边 - 只绘制边框但不显示标注 -- **-BWSen+t"New Zealand"** 中 **+t** 用于给整张图添加标题(**t**\ itle)。 - 由于标题 New Zealand 中含有空格,我们需要使用引号将其括起来 +- **-Bxa4g2** 表示设置 X 轴(**x**)的标注间隔为 4 度、网格线间隔为 2 度(**a4g2**) +- **-Bya3g3** 表示设置 Y 轴(**y**)的标注间隔为 3 度、网格间隔为 3 度(**a3g3**) +- **-BWSen** 中 WSEN 分别是西南东北四个方向的英文单词首字母,用于控制四条边的属性。 + 大写的 **WS** 表示给西边和南边添加标注,而小写的 **en** 则表示对于东边和北边 + 只绘制边框但不显示标注 +- **-BWSen+t"New Zealand"** 中 **+t** 用于给整张图添加标题(**t**itle)。 + 由于标题 New Zealand 中含有空格,我们需要使用引号将其括起来 +```{eval-rst} .. gmtplot:: :caption: 为区域地图添加标题 :width: 50% @@ -126,9 +132,9 @@ GMT 中使用 **-J** 选项指定地图投影参数以及地图的尺寸。 gmt begin NewZealandMap gmt coast -JM12c -R165/180/-48/-32 -Bxa4g2 -Bya3g3 -BWSen+t"New Zealand" -W0.5p -A10000 gmt end show +``` -线性坐标轴 ----------- +## 线性坐标轴 GMT 最擅长绘制地图,同时也适合绘制最简单的线性坐标轴。同样的,要想绘制线性坐标轴, 我们依然需要使用 **-R** 指定坐标轴范围,使用 **-B** 绘制边框并指定边框和坐标轴属性, @@ -136,13 +142,14 @@ GMT 最擅长绘制地图,同时也适合绘制最简单的线性坐标轴。 下面的示例中,我们使用了: -- **-JX8c/5c** 表明线性坐标轴的宽度为 8 厘米,高度为 5 厘米 -- **-R10/70/-4/8** 表明 X 轴范围为 10 到 70,Y 轴范围为 -4 到 8 -- **-Bxa10f5g10+l"X Label"** 设置了 X 轴的属性, - **a10f5g10** 分别设置了标注(**a**\ nnotation)间隔为 10, - 刻度(**f**\ rame)间隔为 5,网格线(**g**\ rid )间隔为 10; - **+l"X Label"** 则为 X 轴添加了标签;对于 Y 轴同理; +- **-JX8c/5c** 表明线性坐标轴的宽度为 8 厘米,高度为 5 厘米 +- **-R10/70/-4/8** 表明 X 轴范围为 10 到 70,Y 轴范围为 -4 到 8 +- **-Bxa10f5g10+l"X Label"** 设置了 X 轴的属性, + **a10f5g10** 分别设置了标注(**a**nnotation)间隔为 10, + 刻度(**f**rame)间隔为 5,网格线(**g**rid )间隔为 10; + **+l"X Label"** 则为 X 轴添加了标签;对于 Y 轴同理; +```{eval-rst} .. gmtplot:: :width: 60% :caption: 线性坐标轴 @@ -150,25 +157,26 @@ GMT 最擅长绘制地图,同时也适合绘制最简单的线性坐标轴。 gmt begin linearXY gmt basemap -R10/70/-4/8 -JX8c/5c -Bxa10f5g10+l"X Label" -Bya4f2g2+l"Y Label" -BWSen+t"Linear X-Y Plot" gmt end show +``` GMT 同样也可以绘制对数轴、指数轴以及极坐标轴,在这一节中不再介绍。 -三维线性坐标轴 --------------- +## 三维线性坐标轴 三维坐标轴相对于二维坐标轴多了一个 Z 轴。与二维线性坐标轴类似,我们需要针对 Z 轴 指定 Z 轴的范围、Z 轴的高度以及三维视角。 下面的命令绘制了一个三维线性坐标轴,相比于传统的二维线性坐标轴,其不同之处在于: -- **-R** 选项中有 6 个数字,后面两个数字表示 Z 轴最小值和最大值 -- **-JZ5c** 指定了 Z 轴的高度为 5 厘米 -- **-Bzaf** 指定了 Z 轴的标注和刻度属性 -- **-BSEwnZ+b** 中 **Z+b** 表示绘制一条 Z 轴,并绘制出整个长方体的所有边 -- **-p130/30** 指定了看这个长方形的视角。130 和 30 分别为三维视角的方位角和高度角。 - 这个解释起来稍复杂,读者可以自己试试修改这两个参数并查看效果。方位角的取值范围 - 为 0 到 360 度,高度角的取值范围为 0 到 90 度。 +- **-R** 选项中有 6 个数字,后面两个数字表示 Z 轴最小值和最大值 +- **-JZ5c** 指定了 Z 轴的高度为 5 厘米 +- **-Bzaf** 指定了 Z 轴的标注和刻度属性 +- **-BSEwnZ+b** 中 **Z+b** 表示绘制一条 Z 轴,并绘制出整个长方体的所有边 +- **-p130/30** 指定了看这个长方形的视角。130 和 30 分别为三维视角的方位角和高度角。 + 这个解释起来稍复杂,读者可以自己试试修改这两个参数并查看效果。方位角的取值范围 + 为 0 到 360 度,高度角的取值范围为 0 到 90 度。 +```{eval-rst} .. gmtplot:: :width: 50% :caption: 三维线性坐标轴 @@ -176,3 +184,4 @@ GMT 同样也可以绘制对数轴、指数轴以及极坐标轴,在这一节 gmt begin 3DMap gmt basemap -R10/70/-4/8/-10/10 -JX8c/5c -JZ5c -Bxa10+lX -Bya4+lY -Bzaf+lDepth -BSEwnZ+b+t"3D Plot" -p130/30 gmt end show +``` diff --git a/source/tutorial/coastline.rst b/source/tutorial/coastline.md similarity index 81% rename from source/tutorial/coastline.rst rename to source/tutorial/coastline.md index 13fcbf043d..ed97bd7c16 100644 --- a/source/tutorial/coastline.rst +++ b/source/tutorial/coastline.md @@ -1,14 +1,12 @@ -绘制海岸线 -========== +# 绘制海岸线 -GMT 中使用 :doc:`/module/coast` 模块绘制海岸线。 +GMT 中使用 {doc}`/module/coast` 模块绘制海岸线。 **coast** 模块,顾名思义是海岸线、湖岸线的意思。 该模块不仅可以绘制这些岸线,还可以绘制比例尺和行政边界等。 这一节我们将通过绘制一张美国地图来介绍 **coast** 模块的基本用法。 -绘制海岸线和湖岸线 ------------------- +## 绘制海岸线和湖岸线 下面的脚本用最简单的命令绘制了一张美国地图。其中 **-R** 选项设置了绘图区域,**-JM15c** 设置投影方式和图片尺寸, @@ -17,6 +15,7 @@ GMT 中使用 :doc:`/module/coast` 模块绘制海岸线。 **coast** 模块的选项 **-W0.5p,black** 表示绘制岸线, 并设置岸线为 0.5p 宽的黑色线条。 +```{eval-rst} .. gmtplot:: :width: 80% :caption: 美国海岸线 @@ -24,15 +23,17 @@ GMT 中使用 :doc:`/module/coast` 模块绘制海岸线。 gmt begin coastline gmt coast -R-130/-50/20/60 -JM15c -Baf -W0.5p,black gmt end show +``` 上图看上去有些复杂。这是因为默认情况下 **-W** 选项会绘制所有水体与陆地的界限, 包括海岸线、湖岸线、湖中岛的边界等。 -根据水体或陆地的不同,**coast**\ 模块将岸线分为从 1 到 4 的四个级别, +根据水体或陆地的不同,**coast**模块将岸线分为从 1 到 4 的四个级别, 依次指海岸线、湖岸线、湖中岛,以及湖中岛内的湖边界。 因而,我们可以在使用 **-W** 选项时指定要绘制哪一个等级的岸线。 下面的脚本中,我们使用 **-W1/0.5p,black** 表示用 0.5p 宽的黑色线条绘制 1 级海岸线。 +```{eval-rst} .. gmtplot:: :width: 80% :caption: 绘制海岸线 @@ -40,11 +41,13 @@ GMT 中使用 :doc:`/module/coast` 模块绘制海岸线。 gmt begin coastline gmt coast -R-130/-50/20/60 -JM15c -Baf -W1/0.5p,black gmt end show +``` 可以在一个命令中多次使用 **-W** 选项,分别用不同的线条绘制不同等级的岸线。 这里我们使用 **-W1/0.5p,black** 绘制 0.5p 黑色的海岸线, 同时使用 **-W2/1p,lightred** 绘制 1p 宽的浅红色湖岸线。 +```{eval-rst} .. gmtplot:: :width: 80% :caption: 绘制海岸线和湖岸线 @@ -52,14 +55,15 @@ GMT 中使用 :doc:`/module/coast` 模块绘制海岸线。 gmt begin coastline gmt coast -R-130/-50/20/60 -JM15c -Baf -W1/0.5p,black -W2/1p,lightred gmt end show +``` -设置要绘制的对象的最小面积 --------------------------- +## 设置要绘制的对象的最小面积 上图看上去依然有些乱。主要是因为美国有大大小小的很多岛屿和湖泊, GMT 默认会把这些岛屿和湖泊都画出来。如果能够只绘制比较大的岛屿或湖泊就好了, 我们可以通过 **-A** 选项设置要绘制的对象的最小面积(单位为平方千米)。 +```{eval-rst} .. gmtplot:: :width: 80% :caption: 设置要绘制的对象的最小面积 @@ -67,16 +71,17 @@ GMT 默认会把这些岛屿和湖泊都画出来。如果能够只绘制比较 gmt begin coastline gmt coast -R-130/-50/20/60 -JM15c -Baf -W1/0.5p,black -W2/1p,lightred -A5000 gmt end show +``` 这里我们使用 **-A5000** 表示只绘制面积大于 5000 平方千米的湖泊或岛屿。 这样子得到的图看上去更加干净简洁。 -填充陆地与水体 --------------- +## 填充陆地与水体 上面介绍了如何使用 **-W** 绘制海岸线和湖岸线。我们还可以不绘制岸线, 而是为陆地和水体设置不同的填充色。 +```{eval-rst} .. gmtplot:: :width: 80% :caption: 填充颜色 @@ -84,19 +89,20 @@ GMT 默认会把这些岛屿和湖泊都画出来。如果能够只绘制比较 gmt begin coastline gmt coast -R-130/-50/20/60 -JM15c -Baf -A5000 -Gred -Slightblue -Clightred gmt end show +``` 其中,**-G** 设置了陆地区域的填充色,**-S** 设置水体的颜色, **-C** 则设置湖泊的颜色(若不指定 **-C**,则湖泊颜色由 **-S** 控制)。 当然,你也可以同时使用 **-W** 选项和 **-G** 选项,即绘制岸线并填充颜色。 -绘制国界/州界 -------------- +## 绘制国界/州界 使用 **-N** 选项可以绘制国界、州界/省界等行政边界。**-N1** 表示绘制国界线, -**-N2** 表示绘制州界/省界线。该选项绘制的行政边界来自 :doc:`/dataset/gshhg`, +**-N2** 表示绘制州界/省界线。该选项绘制的行政边界来自 {doc}`/dataset/gshhg`, 目前只有美洲各国以及澳大利亚有州界/省界线。 +```{eval-rst} .. gmtplot:: :width: 80% :caption: 绘制国界与州界 @@ -104,18 +110,18 @@ GMT 默认会把这些岛屿和湖泊都画出来。如果能够只绘制比较 gmt begin coastline gmt coast -R-130/-50/20/60 -JM15c -Baf -A5000 -Gred -Slightblue -Clightred -N1/1p -N2/0.25p gmt end show +``` -.. note:: +:::{note} +除了 **-N** 选项之外,还有其他方法使用 GMT 绘制洲界、国界、州界/省界等行政区划边界: - 除了 **-N** 选项之外,还有其他方法使用 GMT 绘制洲界、国界、州界/省界等行政区划边界: +- **-E** 选项可以用于绘制洲界、国界以及省界/州界。详细用法请参考 {doc}`/dataset/dcw/index` 小节。 +- 使用 {doc}`/dataset/gadm/index` 绘制全球所有国家和地区的国界、省界、市界、区界等 + 多个级别的行政区划边界 +- 使用 {doc}`/dataset-CN/CN-border` 绘制中国国界和省界等行政区划边界 +::: - - **-E** 选项可以用于绘制洲界、国界以及省界/州界。详细用法请参考 :doc:`/dataset/dcw/index` 小节。 - - 使用 :doc:`/dataset/gadm/index` 绘制全球所有国家和地区的国界、省界、市界、区界等 - 多个级别的行政区划边界 - - 使用 :doc:`/dataset-CN/CN-border` 绘制中国国界和省界等行政区划边界 - -添加比例尺 ----------- +## 添加比例尺 最后,我们还需要为地图添加比例尺。为了绘制比例尺,我们需要提供如下参数: @@ -131,6 +137,7 @@ GMT 默认会把这些岛屿和湖泊都画出来。如果能够只绘制比较 - **+f** 表示比例尺的风格为图中所示黑白相间的铁轨形式 - **+u** 表示显示比例尺对应的单位 +```{eval-rst} .. gmtplot:: :width: 80% :caption: 添加比例尺 @@ -138,3 +145,4 @@ GMT 默认会把这些岛屿和湖泊都画出来。如果能够只绘制比较 gmt begin coastline gmt coast -R-130/-50/20/60 -JM15c -Baf -A5000 -Gred -Slightblue -Clightred -Lg-60/25+c25+w1000k+f+u gmt end show +``` diff --git a/source/tutorial/commands.md b/source/tutorial/commands.md new file mode 100644 index 0000000000..ba0eaad7ba --- /dev/null +++ b/source/tutorial/commands.md @@ -0,0 +1,112 @@ +# 命令初探 + +上一节我们使用 GMT 绘制了第一张图,但是没有对其中的细节做任何介绍。 +这一节我们将简单介绍一下 GMT 的命令。 + +## GMT 绘图脚本模板 + +GMT 在绘图时,总是以 {doc}`/module/begin` 开始,并以 {doc}`/module/end` 结束。 +所有的**绘图命令**都放在 **begin** 与 **end** 之间,而非绘图命令可以放在 +任何地方。 + +:::{note} +GMT 老用户可能会对此比较陌生。 + +GMT 自 6.0.0 版本开始,引入了一种全新的绘图命令执行模式,称之为现代模式。 +GMT5 及之前的命令风格称之为经典模式。GMT6 既支持经典模式也支持现代模式。 +现代模式与经典模式可以完成相同的绘图功能,但现代模式大大简化了绘图代码, +并极大避免了用户最容易出错的地方,因而推荐用户使用现代模式而非经典模式。 + +本手册将只使用现代模式,而不介绍经典模式。 +GMT 新用户只需要按照本手册直接学习现代模式即可; +对于 GMT 老用户,建议阅读 {doc}`/migrating/classic2modern` +或者观看视频教程 [GMT6 新特性](https://www.bilibili.com/video/av73835957), +并开始使用现代模式进行绘图。 +::: + +在前一节中我们使用 `gmt --new-script` 命令生成一个绘图模板。 +忽略掉绘图模板中的注释语句,一个最最基本的 GMT 绘图脚本的模板是: + +``` +gmt begin +# +# 其它命令,包括 GMT 绘图命令、数据处理命令以及其它 UNIX 命令 +# +gmt end show +``` + +你可以直接执行这个脚本,但是因为这里什么命令也没用,所以这个脚本不会生成任何图片。 + +绘图时我们通常需要指定图片文件名和图片格式,因而更实用的绘图脚本模板为: + +``` +gmt begin FigureName pdf +# +# 其它命令,包括 GMT 绘图命令、数据处理命令以及其它 UNIX 命令 +# +gmt end show +``` + +- *FigureName* 指定了要生成的图片文件名,你可以指定任意文件名, + 但最好避免在文件名中使用特殊符号和空格。若不给定文件名, + 则默认文件名为 `gmtsession` +- 紧跟在图片文件名后的 **pdf** 指定了要生成的图片格式(若不指定格式,则默认图片格式为 PDF)。 + GMT 支持多种图片格式,pdf、ps、eps、jpg、png、bmp 等等。若想要一次性生成多种格式的图片, + 则可以使用逗号将多种格式连接起来,如 **pdf,png** 会同时生成 PDF 和 PNG 格式的图片 +- **gmt end** 后面加上 **show**,则 GMT 会在绘图完成后,使用系统自带的阅读器 + 软件自动打开生成的图片文件,供用户预览绘图效果 + +## 绘制第一张图 + +在 GMT 绘图脚本模板的基础上,向 **begin** 和 **end** 语句中间加入正确的 GMT 绘图命令, +即可实现用 GMT 绘图。 + +下面的脚本使用 {doc}`/module/coast` 绘制了一张全球地图。 +执行该脚本,会生成文件名为 {file}`GlobalMap`、格式为 PNG 和 PDF 的图片文件, +并且 GMT 会在绘图结束后自动打开生成的图片文件。 + +```{eval-rst} +.. gmtplot:: + :width: 80% + :caption: 使用 GMT 绘制的第一张图 + + gmt begin GlobalMap + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" + gmt end show +``` + +:::{tip} +不理解 **gmt coast** 这一行命令的含义?没关系,稍后会详细介绍。 +::: + +:::{tip} +想了解 **gmt coast** 的具体用法?打开终端,敲入 `gmt docs coast`, +GMT 会自动帮你打开 **coast** 模块的说明文档。 +::: + +## GMT 命令格式 + +一个 GMT 命令通常由 **gmt** + **模块名** + **选项** + **参数** 构成。比如 +上面的例子中: + +``` +gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" +``` + +- 所有的 GMT 命令都需要以 **gmt** 开头 +- **coast** 是模块名,这个模块可以用于绘制海岸线 +- **-R**、**-J**、**-G**、**-B**等以 **-** 开头的是模块的选项 +- **-Baf** 中 **af** 是 **-B** 选项的参数 +- **-B+t**"My First Plot" 中 **+t** 为 **-B** 的 + 子选项,"My First Plot" 则是子选项 **+t** 的参数 + +关于 GMT 命令的几点说明: + +- 若模块名以 **gmt** 开头,则模块名中的 **gmt** 可省略。 + 比如 **gmt gmtset xxx xxx** 可简写为 **gmt set xxx xxx** +- 模块名、选项等均区分大小写 +- 选项以 **-** 开头,后接**单个字符**表示某个选项,字符后接选项的参数以及子选项 +- 子选项以 **+** 开头,后接**单个字符**以及子选项的参数 +- 不以 **-** 开头的参数,通常都会被当做文件,GMT 会尝试去读取 +- 各选项间以空格分隔,选项内部不能有空格。选项内部的字符串中若存在空格, + 在 Bash 下可以使用单引号或双引号括起来,而在 Windows 的 Batch 下则只能使用双引号。 diff --git a/source/tutorial/commands.rst b/source/tutorial/commands.rst deleted file mode 100644 index 4ba51b13d0..0000000000 --- a/source/tutorial/commands.rst +++ /dev/null @@ -1,108 +0,0 @@ -命令初探 -======== - -上一节我们使用 GMT 绘制了第一张图,但是没有对其中的细节做任何介绍。 -这一节我们将简单介绍一下 GMT 的命令。 - -GMT 绘图脚本模板 ----------------- - -GMT 在绘图时,总是以 :doc:`/module/begin` 开始,并以 :doc:`/module/end` 结束。 -所有的\ **绘图命令**\ 都放在 **begin** 与 **end** 之间,而非绘图命令可以放在 -任何地方。 - -.. note:: - - GMT 老用户可能会对此比较陌生。 - - GMT 自 6.0.0 版本开始,引入了一种全新的绘图命令执行模式,称之为现代模式。 - GMT5 及之前的命令风格称之为经典模式。GMT6 既支持经典模式也支持现代模式。 - 现代模式与经典模式可以完成相同的绘图功能,但现代模式大大简化了绘图代码, - 并极大避免了用户最容易出错的地方,因而推荐用户使用现代模式而非经典模式。 - - 本手册将只使用现代模式,而不介绍经典模式。 - GMT 新用户只需要按照本手册直接学习现代模式即可; - 对于 GMT 老用户,建议阅读 :doc:`/migrating/classic2modern` - 或者观看视频教程 `GMT6 新特性 `_, - 并开始使用现代模式进行绘图。 - -在前一节中我们使用 ``gmt --new-script`` 命令生成一个绘图模板。 -忽略掉绘图模板中的注释语句,一个最最基本的 GMT 绘图脚本的模板是:: - - gmt begin - # - # 其它命令,包括 GMT 绘图命令、数据处理命令以及其它 UNIX 命令 - # - gmt end show - -你可以直接执行这个脚本,但是因为这里什么命令也没用,所以这个脚本不会生成任何图片。 - -绘图时我们通常需要指定图片文件名和图片格式,因而更实用的绘图脚本模板为:: - - gmt begin FigureName pdf - # - # 其它命令,包括 GMT 绘图命令、数据处理命令以及其它 UNIX 命令 - # - gmt end show - -- *FigureName* 指定了要生成的图片文件名,你可以指定任意文件名, - 但最好避免在文件名中使用特殊符号和空格。若不给定文件名, - 则默认文件名为 ``gmtsession`` -- 紧跟在图片文件名后的 **pdf** 指定了要生成的图片格式(若不指定格式,则默认图片格式为 PDF)。 - GMT 支持多种图片格式,pdf、ps、eps、jpg、png、bmp 等等。若想要一次性生成多种格式的图片, - 则可以使用逗号将多种格式连接起来,如 **pdf,png** 会同时生成 PDF 和 PNG 格式的图片 -- **gmt end** 后面加上 **show**,则 GMT 会在绘图完成后,使用系统自带的阅读器 - 软件自动打开生成的图片文件,供用户预览绘图效果 - -绘制第一张图 ------------- - -在 GMT 绘图脚本模板的基础上,向 **begin** 和 **end** 语句中间加入正确的 GMT 绘图命令, -即可实现用 GMT 绘图。 - -下面的脚本使用 :doc:`/module/coast` 绘制了一张全球地图。 -执行该脚本,会生成文件名为 :file:`GlobalMap`、格式为 PNG 和 PDF 的图片文件, -并且 GMT 会在绘图结束后自动打开生成的图片文件。 - -.. gmtplot:: - :width: 80% - :caption: 使用 GMT 绘制的第一张图 - - gmt begin GlobalMap - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -.. tip:: - - 不理解 **gmt coast** 这一行命令的含义?没关系,稍后会详细介绍。 - -.. tip:: - - 想了解 **gmt coast** 的具体用法?打开终端,敲入 ``gmt docs coast``, - GMT 会自动帮你打开 **coast** 模块的说明文档。 - -GMT 命令格式 ------------- - -一个 GMT 命令通常由 **gmt** + **模块名** + **选项** + **参数** 构成。比如 -上面的例子中:: - - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - -- 所有的 GMT 命令都需要以 **gmt** 开头 -- **coast** 是模块名,这个模块可以用于绘制海岸线 -- **-R**、**-J**、**-G**、**-B**\ 等以 **-** 开头的是模块的选项 -- **-Baf** 中 **af** 是 **-B** 选项的参数 -- **-B+t**\ "My First Plot" 中 **+t** 为 **-B** 的 - 子选项,"My First Plot" 则是子选项 **+t** 的参数 - -关于 GMT 命令的几点说明: - -- 若模块名以 **gmt** 开头,则模块名中的 **gmt** 可省略。 - 比如 **gmt gmtset xxx xxx** 可简写为 **gmt set xxx xxx** -- 模块名、选项等均区分大小写 -- 选项以 **-** 开头,后接\ **单个字符**\ 表示某个选项,字符后接选项的参数以及子选项 -- 子选项以 **+** 开头,后接\ **单个字符**\ 以及子选项的参数 -- 不以 **-** 开头的参数,通常都会被当做文件,GMT 会尝试去读取 -- 各选项间以空格分隔,选项内部不能有空格。选项内部的字符串中若存在空格, - 在 Bash 下可以使用单引号或双引号括起来,而在 Windows 的 Batch 下则只能使用双引号。 diff --git a/source/tutorial/configurations.rst b/source/tutorial/configurations.md similarity index 61% rename from source/tutorial/configurations.rst rename to source/tutorial/configurations.md index 119d3a6963..2fdd1bb1d8 100644 --- a/source/tutorial/configurations.rst +++ b/source/tutorial/configurations.md @@ -1,67 +1,74 @@ -设置配置参数 -============ +# 设置配置参数 -:贡献者: |王亮|, |田冬冬| +:贡献者: {{ 王亮 }}, {{ 田冬冬 }} + +--- 本节介绍 GMT 的配置参数及其设置方法。GMT 提供了 150 多个配置参数, 用于控制图形的外观和数据的处理方式。这些配置参数一般都有默认值。有时,这些默认值并不合适。 例如,下面这幅图的标题相对于底图大了一些,显得不协调。遇到类似的情况, 可以自行设置相关配置参数,以细致地调节图形的外观或数据的处理方式。 +```{eval-rst} .. gmtplot:: :language: bash :width: 20% gmt begin conf0 - gmt basemap -JX2c -R0/1/0/1 -Bwsen+t'Title' + gmt basemap -JX2c -R0/1/0/1 -Bwsen+t'Title' gmt end show +``` 要设置配置参数,就需要依次解决两个问题:第一个问题是确定需要修改的配置参数的名称, 第二个问题是如何修改。所以,本节先介绍如何确定配置参数的名称,再介绍配置参数的设置方法。 -确定配置参数的名称 ------------------- +## 确定配置参数的名称 -使用 :doc:`/module/gmtdefaults` 模块可以列出所有配置参数及其默认值。 +使用 {doc}`/module/gmtdefaults` 模块可以列出所有配置参数及其默认值。 配置参数的名称是由它控制的元素的属性决定的,所以根据元素或属性的名称,即可找到对应的配置参数。 上面的例子中的问题是标题的字体太大,因此需要修改的配置参数的元素是标题(TITLE), -而属性是字体(FONT)。执行 ``gmt defaults`` 命令并用 ``grep`` 命令进行筛选,可以找到所有与标题(TITLE)有关的参数:: - - $ gmt defaults | grep TITLE - FONT_TITLE = 24p,Helvetica,black - MAP_TITLE_OFFSET = 14p - -下面的命令可以找到和字体(FONT)有关的参数:: - - $ gmt defaults | grep FONT - # FONT Parameters - FONT_ANNOT_PRIMARY = 12p,Helvetica,black - FONT_ANNOT_SECONDARY = 14p,Helvetica,black - FONT_HEADING = 32p,Helvetica,black - FONT_LABEL = 16p,Helvetica,black - FONT_LOGO = 8p,Helvetica,black - FONT_TAG = 20p,Helvetica,black - FONT_TITLE = 24p,Helvetica,black +而属性是字体(FONT)。执行 `gmt defaults` 命令并用 `grep` 命令进行筛选,可以找到所有与标题(TITLE)有关的参数: + +``` +$ gmt defaults | grep TITLE +FONT_TITLE = 24p,Helvetica,black +MAP_TITLE_OFFSET = 14p +``` + +下面的命令可以找到和字体(FONT)有关的参数: + +``` +$ gmt defaults | grep FONT +# FONT Parameters +FONT_ANNOT_PRIMARY = 12p,Helvetica,black +FONT_ANNOT_SECONDARY = 14p,Helvetica,black +FONT_HEADING = 32p,Helvetica,black +FONT_LABEL = 16p,Helvetica,black +FONT_LOGO = 8p,Helvetica,black +FONT_TAG = 20p,Helvetica,black +FONT_TITLE = 24p,Helvetica,black +``` 下图展示了 GMT 绘图时底图中各个元素的英文名称以及本手册中对应的中文名称。 建议读者记住底图各个元素的中英文名称以方便查找和修改。 -.. figure:: tutor_conf.png - :width: 100% - :align: center +:::{figure} tutor_conf.png +:align: center +:width: 100% +::: -配置参数的设置方法 ------------------- +## 配置参数的设置方法 配置参数的设置有两种方法:一种为全局设置,对设置以后的所有命令都有效。另一种为临时设置, -只对该条命令有效。下面以配置参数 :term:`FONT_TITLE` 为例, +只对该条命令有效。下面以配置参数 {term}`FONT_TITLE` 为例, 介绍全局和临时设置标题(TITLE)的字体(FONT)的方法。 -全局设置需要使用 :doc:`/module/gmtset` 模块。用 :doc:`/module/gmtset` 模块 +全局设置需要使用 {doc}`/module/gmtset` 模块。用 {doc}`/module/gmtset` 模块 做的设置对之后的所有命令都有效。在下面的例子中, -使用 :doc:`/module/gmtset` 模块全局设置了标题的字体为 ``12p,Times-Bold,red``, +使用 {doc}`/module/gmtset` 模块全局设置了标题的字体为 `12p,Times-Bold,red`, 所以两个标题的字体都发生了相应的改变。 +```{eval-rst} .. gmtplot:: :language: bash :width: 50% @@ -72,14 +79,16 @@ gmt basemap -JX5c -R0/1/0/1 -Bwsen+t'Title One' gmt basemap -JX5c -R0/1/0/1 -Bwsen+t'Title Two' -X6c gmt end show +``` -临时设置则是通过为命令添加选项 **--KEY=**\ *value* 的形式实现的, +临时设置则是通过为命令添加选项 **--KEY=***value* 的形式实现的, 其中 **KEY** 是配置参数的名称,*value* 是配置参数的值。在下面的例子中, -在绘制左边的底图时使用了选项 ``--FONT_TITLE=12p,Times-Bold,red``, +在绘制左边的底图时使用了选项 `--FONT_TITLE=12p,Times-Bold,red`, 所以该底图的标题的字体是红色的。由于临时设置仅对当前命令有效,其不会影响到 -接下来的其它命令。因而右边的底图的标题属性依然是 :term:`FONT_TITLE` 的 +接下来的其它命令。因而右边的底图的标题属性依然是 {term}`FONT_TITLE` 的 默认值。 +```{eval-rst} .. gmtplot:: :language: bash :width: 50% @@ -89,3 +98,4 @@ gmt basemap -JX5c -R0/1/0/1 -Bwsen+t'Title One' --FONT_TITLE=12p,Times-Bold,red gmt basemap -JX5c -R0/1/0/1 -Bwsen+t'Title Two' -X6c gmt end show +``` diff --git a/source/tutorial/earth-relief.rst b/source/tutorial/earth-relief.md similarity index 76% rename from source/tutorial/earth-relief.rst rename to source/tutorial/earth-relief.md index ba159bcf7c..f58b7797e2 100644 --- a/source/tutorial/earth-relief.rst +++ b/source/tutorial/earth-relief.md @@ -1,49 +1,47 @@ -绘制地形起伏 -============ +# 绘制地形起伏 绘制地图时另一个常见的需求是绘制全球或者区域的地形起伏作为底图。 -GMT 中 :doc:`/module/grdimage` 模块可以绘制二维网格,其原理是建立 Z 值与颜色之间的映射关系, +GMT 中 {doc}`/module/grdimage` 模块可以绘制二维网格,其原理是建立 Z 值与颜色之间的映射关系, 每个坐标点不同的 Z 值用不同的颜色表征。 地形起伏,即不同经纬度处的高程或海深数据,也是一种二维数据,因而我们可以使用 **grdimage** 模块绘制地形起伏。 -全球地形起伏数据 ----------------- +## 全球地形起伏数据 要绘制全球或区域地形起伏图,首先需要拥有地形起伏数据,即不同经纬度处的高程或海深数据。 GMT 收集整理并提供了一套全球地形起伏数据,供用户直接使用。 这套地形起伏数据分为包含了从 60 分到 1 秒的多种不同精度的全球地形起伏数据, 以满足不同的绘图区域大小的需求。 -GMT 用户可以通过给定文件名 :file:`@earth_relief_xxx` 的方式来指定要使用某个精度的地形。 -*xxx* 用于指定数据精度,例如 **15m**、**01m**\ 和 \ **15s** 分别表示数据分辨率为 +GMT 用户可以通过给定文件名 {file}`@earth_relief_xxx` 的方式来指定要使用某个精度的地形。 +*xxx* 用于指定数据精度,例如 **15m**、**01m**和 **15s** 分别表示数据分辨率为 15 分、1 分和 15 秒。1 秒约为 30 米,1 分约为 2 千米。 -.. note:: +:::{note} +不同尺度的图件可以使用不同分辨率的地形起伏数据,满足所需清晰度的同时, +又尽量保证绘图不会太慢、图片不过太大。这里根据经验,做以下推荐 +(用户需要根据自身实际情况调整): - 不同尺度的图件可以使用不同分辨率的地形起伏数据,满足所需清晰度的同时, - 又尽量保证绘图不会太慢、图片不过太大。这里根据经验,做以下推荐 - (用户需要根据自身实际情况调整): - - - 绘制全球尺度地形起伏时,推荐先尝试 **30m** 分辨率 - - 绘制整个中国或者美国的地形起伏时,推荐先尝试 **05m** 分辨率 - - 绘制 3 度 x 3 度~10 度 x 10 度大小的区域地形起伏,推荐先尝试 **30s** 分辨率 - - 绘制更小区域的地形起伏,推荐先尝试 **03s** +- 绘制全球尺度地形起伏时,推荐先尝试 **30m** 分辨率 +- 绘制整个中国或者美国的地形起伏时,推荐先尝试 **05m** 分辨率 +- 绘制 3 度 x 3 度~10 度 x 10 度大小的区域地形起伏,推荐先尝试 **30s** 分辨率 +- 绘制更小区域的地形起伏,推荐先尝试 **03s** +::: 文件名前的 **@** 表示该数据是由 GMT 官方提供并维护的数据,当第一次使用该文件时, GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录中,当以后再使用该文件时, 则直接读取本地文件,而无需重新下载该数据。 关于全球地形起伏数据的详细介绍见 -`earth-relief `__ 。 +[earth-relief](https://www.generic-mapping-tools.org/remote-datasets/earth-relief.html) 。 -绘制全球地形起伏图 ------------------- +## 绘制全球地形起伏图 -下面我们将使用 **grdimage** 模块绘制 30 分精度的全球地形起伏数据(:file:`@earth_relief_30m`)。 +下面我们将使用 **grdimage** 模块绘制 30 分精度的全球地形起伏数据({file}`@earth_relief_30m`)。 不同的高程用不同的颜色表示,从中我们很容易看出不同地区的地形变化。 +```{eval-rst} .. gmtplot:: :width: 100% :caption: 全球地形起伏图 @@ -51,14 +49,15 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 gmt begin global_relief gmt grdimage @earth_relief_30m -JH180/10c gmt end show +``` -绘图区域地形起伏图 ------------------- +## 绘图区域地形起伏图 想要绘制区域地形起伏?只需要在 **grdimage** 模块中使用 **-R** 选项指定 区域经纬度范围即可。这里我们设置了绘图区域为 118°E 至 125°E、20°N 至 26°N。 由于绘图区域比较小,所以我们选用了更高精度的 1 分的地形起伏数据。 +```{eval-rst} .. gmtplot:: :width: 70% :caption: 台湾区域地形图 @@ -66,9 +65,9 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 gmt begin taiwan_relief gmt grdimage @earth_relief_01m -JM15c -R118/125/20/26 -Baf -BWSen gmt end show +``` -增加光照效果 ------------- +## 增加光照效果 为了让地形起伏图更加立体,我们可以为图幅加上光照效果。我们可以指定光照的方向、 强度等参数,也可以直接使用 **-I+d** 以使用默认的光照效果。 @@ -76,6 +75,7 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 下面的示例中,我们加上了 **-I+d** 以增加光照效果。跟上图比一比,是否图片更加立体 也更加美观了呢? +```{eval-rst} .. gmtplot:: :width: 70% :caption: 带光照效果的台湾区域地形图 @@ -83,20 +83,21 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 gmt begin taiwan_relief gmt grdimage @earth_relief_01m -JM15c -R118/125/20/26 -Baf -BWSen -I+d gmt end show +``` 增加光照效果本质上是计算了每个点沿着某个方位角的方向梯度,然后根据每个点的 方向梯度的正负以及振幅调节该点颜色的亮度值。对于向阳处,其方向梯度为正值,则增加 该点颜色的亮度;对于背阴处,其方向梯度为负值,则降低该点颜色的亮度。由此达到 增加光照效果、增强立体感的目的。 -添加色标 --------- +## 添加色标 前面提到,**grdimage** 绘制地形起伏数据本质上就是将高程的数值与颜色之间对应起来。 二者之间的对应关系由色标文件(即 CPT 文件)决定。那么,上图使用的是怎么样的 CPT 呢? 高程数值与颜色之间的对应关系又是怎样的呢?不同的颜色代表的具体数值又是多少呢? -这就需要用 :doc:`/module/colorbar` 向图中添加色标。 +这就需要用 {doc}`/module/colorbar` 向图中添加色标。 +```{eval-rst} .. gmtplot:: :width: 70% @@ -104,9 +105,11 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 gmt grdimage @earth_relief_01m -JM15c -R118/125/20/26 -Baf -BWSen -I+d gmt colorbar gmt end show +``` 我们可以进一步使用 **-B** 选项设置色标的标注间隔,并为色标添加一个标签。 +```{eval-rst} .. gmtplot:: :width: 70% @@ -114,11 +117,13 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 gmt grdimage @earth_relief_01m -JM15c -R118/125/20/26 -Baf -BWSen -I+d gmt colorbar -Bxaf+l"Elevation (m)" gmt end show +``` 当然,我们还可以更进一步调整色标的位置、长度等属性。下面的脚本中,我们使用了 **-D** 选项将色标放在了地形起伏图的右侧中间(**JMR**)向右偏移 1.5 厘米, 色标长度为 10 厘米,并将标签放在了色标左侧(**+ml**)。 +```{eval-rst} .. gmtplot:: :width: 70% @@ -126,17 +131,18 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 gmt grdimage @earth_relief_01m -JM15c -R118/125/20/26 -Baf -BWSen -I+d gmt colorbar -DJMR+w10c+o1.5c/0c+ml -Bxa1000f -By+l"m" gmt end show +``` -制作 CPT 文件 -------------- +## 制作 CPT 文件 -上面的示例中使用的是 GMT 的默认 CPT 文件。用户也可以使用 :doc:`/module/makecpt` 或 -:doc:`gmt:grd2cpt` 制作 CPT 文件。 +上面的示例中使用的是 GMT 的默认 CPT 文件。用户也可以使用 {doc}`/module/makecpt` 或 +{doc}`gmt:grd2cpt` 制作 CPT 文件。 -下面的示例中,我们使用 :doc:`/module/makecpt` 模块在 GMT 内置 CPT **globe** 的基础 +下面的示例中,我们使用 {doc}`/module/makecpt` 模块在 GMT 内置 CPT **globe** 的基础 上生成了一个 -8000 到 8000 范围内的新 CPT 文件。生成的 CPT 文件将作为当前 CPT 文件,供 接下来的 **grdimage** 和 **colorbar** 命令使用。 +```{eval-rst} .. gmtplot:: :width: 70% @@ -146,3 +152,4 @@ GMT 会自动从服务器下载该数据并保存到本地的 GMT 数据目录 gmt grdimage @earth_relief_01m -I+d gmt colorbar -Bxa2000 -B+l"m" gmt end show +``` diff --git a/source/tutorial/get-started/index.rst b/source/tutorial/get-started/index.md similarity index 69% rename from source/tutorial/get-started/index.rst rename to source/tutorial/get-started/index.md index 685537c273..897aca71ab 100644 --- a/source/tutorial/get-started/index.rst +++ b/source/tutorial/get-started/index.md @@ -1,12 +1,12 @@ -GMT 初探 -======== +# GMT 初探 这一节将介绍如何开始使用 GMT。本节分为三个小节,分别针对 Linux、macOS 和 Windows 系统。 用户应根据自己当前的操作系统阅读相应的小节。 -.. toctree:: - :maxdepth: 1 +```{toctree} +:maxdepth: 1 - linux - macos - windows +linux +macos +windows +``` diff --git a/source/tutorial/get-started/linux.md b/source/tutorial/get-started/linux.md new file mode 100644 index 0000000000..271c750f5e --- /dev/null +++ b/source/tutorial/get-started/linux.md @@ -0,0 +1,138 @@ +# GMT 初探: Linux 篇 + +## 启动终端 + +GMT 是一个纯命令行软件,没有任何的图形界面。所有的绘图操作都需要通过 +在终端和脚本中执行命令来完成。 +终端是 Linux 系统的标配,通常你可以在系统的 “应用程序” 中找到并启动它。 + +## 运行 GMT + +启动终端后,敲入 `gmt` 以执行 GMT 命令。你将看到 GMT 的欢迎界面信息,类似于: + +```console + GMT - The Generic Mapping Tools, Version 6.5.0 [64-bit] [8 cores] + (c) 1991-2021 The GMT Team (https://www.generic-mapping-tools.org/team.html). + + Supported in part by the US National Science Foundation (http://www.nsf.gov/) + and volunteers from around the world. + + GMT is distributed under the GNU LGPL License (http://www.gnu.org/licenses/lgpl.html). + Dependencies: netCDF, GDAL, PCRE, FFTW, LAPACK, ZLIB, Ghostscript, GraphicsMagick, FFmpeg. + +usage: gmt [options] + gmt [] + +options: + --help List descriptions of available GMT modules. + --new-script[=L] Write GMT modern mode script template to stdout. + Optionally specify bash|csh|batch [Default is current shell]. + --new-glue=name Write C code for external supplements to glue them to GMT. + --show-bindir Show directory with GMT executables. + --show-citation Show the most recent citation for GMT. + --show-classic Show all classic module names. + --show-classic-core Show all classic module names (core only). + --show-cores Show number of available cores. + --show-datadir Show directory/ies with user data. + --show-dataserver Show URL of the remote GMT data server. + --show-doi Show the DOI for the current release. + --show-library Show path of the shared GMT library. + --show-modules Show all modern module names. + --show-modules-core Show all modern module names (core only). + --show-plugindir Show directory for plug-ins. + --show-sharedir Show directory for shared GMT resources. + --show-userdir Show full path of user's ~/.gmt dir + --version Print GMT version number. + +if is '=' we call exit (0) if module exist and non-zero otherwise. +``` + +## 生成脚本模板 + +继续在终端中敲入: + +``` +gmt --new-script > myplot.sh +``` + +该命令会在当前目录生成一个 GMT 模板脚本,并保存到 Bash 脚本文件 {file}`myplot.sh` 中。 + +:::{note} +本手册中所有示例均使用 Bash 脚本,要求读者对 Bash 脚本及 Unix 命令行有最基本的了解。 +不了解的用户请阅读网络上 Bash 相关教程,或本手册中 {doc}`/tutorial/scripting/index` 一节。 +::: + +## 查看并编辑脚本文件 + +Bash 脚本文件是一个纯文本文件,可以直接用文本编辑器打开。比如,可以使用大多数 +Linux 都自带了的文本编辑器 **gedit** 打开该脚本文件: + +``` +gedit myplot.sh +``` + +打开脚本文件后会看到如下内容: + +``` +#!/usr/bin/env -S bash -e +# GMT modern mode bash template +# Date: 2019-09-10T00:44:39 +# User: seisman +# Purpose: Purpose of this script +export GMT_SESSION_NAME=$$ # Set a unique session name +gmt begin figurename + # Place modern session commands here +gmt end show +``` + +其中,以 **#** 开头的行尾注释行,**export GMT_SESSION_NAME=\$\$** 这一行属于 +高级用法,可以忽略。因而核心内容只有两行,即 **gmt begin** 和 **gmt end** 这两行。 + +编辑脚本,在 **gmt begin** 和 **gmt end** 中间添加 GMT 命令,将脚本修改如下: + +``` +#!/usr/bin/env -S bash -e +# GMT modern mode bash template +# Date: 2019-09-10T00:44:39 +# User: seisman +# Purpose: Purpose of this script +export GMT_SESSION_NAME=$$ # Set a unique session name +gmt begin figurename + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" +gmt end show +``` + +编辑完成后记得保存文件。 + +## 执行脚本以绘图 + +回到终端,运行 Bash 脚本: + +``` +bash myplot.sh +``` + +待脚本执行完成后,会自动用阅读器(通常是 evince)打开生成的 PDF 格式的图片文件。 +你将看到如下图所示的图片。 + +```{eval-rst} +.. gmtplot:: + :width: 75% + :show-code: false + + #!/usr/bin/env bash + # GMT modern mode bash template + # Date: 2019-09-10T00:44:39 + # User: seisman + # Purpose: Purpose of this script + export GMT_SESSION_NAME=$$ # Set a unique session name + gmt begin figurename + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" + gmt end show +``` + +这基本上就是运行 GMT 脚本的基本流程,即: + +- 生成脚本模板 +- 编辑脚本,添加 GMT 绘图命令 +- 运行脚本并查看绘图效果 diff --git a/source/tutorial/get-started/linux.rst b/source/tutorial/get-started/linux.rst deleted file mode 100644 index 0731d12047..0000000000 --- a/source/tutorial/get-started/linux.rst +++ /dev/null @@ -1,132 +0,0 @@ -GMT 初探: Linux 篇 -================== - -启动终端 --------- - -GMT 是一个纯命令行软件,没有任何的图形界面。所有的绘图操作都需要通过 -在终端和脚本中执行命令来完成。 -终端是 Linux 系统的标配,通常你可以在系统的 “应用程序” 中找到并启动它。 - -运行 GMT --------- - -启动终端后,敲入 ``gmt`` 以执行 GMT 命令。你将看到 GMT 的欢迎界面信息,类似于: - -.. code-block:: console - - GMT - The Generic Mapping Tools, Version 6.5.0 [64-bit] [8 cores] - (c) 1991-2021 The GMT Team (https://www.generic-mapping-tools.org/team.html). - - Supported in part by the US National Science Foundation (http://www.nsf.gov/) - and volunteers from around the world. - - GMT is distributed under the GNU LGPL License (http://www.gnu.org/licenses/lgpl.html). - Dependencies: netCDF, GDAL, PCRE, FFTW, LAPACK, ZLIB, Ghostscript, GraphicsMagick, FFmpeg. - - usage: gmt [options] - gmt [] - - options: - --help List descriptions of available GMT modules. - --new-script[=L] Write GMT modern mode script template to stdout. - Optionally specify bash|csh|batch [Default is current shell]. - --new-glue=name Write C code for external supplements to glue them to GMT. - --show-bindir Show directory with GMT executables. - --show-citation Show the most recent citation for GMT. - --show-classic Show all classic module names. - --show-classic-core Show all classic module names (core only). - --show-cores Show number of available cores. - --show-datadir Show directory/ies with user data. - --show-dataserver Show URL of the remote GMT data server. - --show-doi Show the DOI for the current release. - --show-library Show path of the shared GMT library. - --show-modules Show all modern module names. - --show-modules-core Show all modern module names (core only). - --show-plugindir Show directory for plug-ins. - --show-sharedir Show directory for shared GMT resources. - --show-userdir Show full path of user's ~/.gmt dir - --version Print GMT version number. - - if is '=' we call exit (0) if module exist and non-zero otherwise. - -生成脚本模板 ------------- - -继续在终端中敲入:: - - gmt --new-script > myplot.sh - -该命令会在当前目录生成一个 GMT 模板脚本,并保存到 Bash 脚本文件 :file:`myplot.sh` 中。 - -.. note:: - - 本手册中所有示例均使用 Bash 脚本,要求读者对 Bash 脚本及 Unix 命令行有最基本的了解。 - 不了解的用户请阅读网络上 Bash 相关教程,或本手册中 :doc:`/tutorial/scripting/index` 一节。 - -查看并编辑脚本文件 ------------------- - -Bash 脚本文件是一个纯文本文件,可以直接用文本编辑器打开。比如,可以使用大多数 -Linux 都自带了的文本编辑器 **gedit** 打开该脚本文件:: - - gedit myplot.sh - -打开脚本文件后会看到如下内容:: - - #!/usr/bin/env -S bash -e - # GMT modern mode bash template - # Date: 2019-09-10T00:44:39 - # User: seisman - # Purpose: Purpose of this script - export GMT_SESSION_NAME=$$ # Set a unique session name - gmt begin figurename - # Place modern session commands here - gmt end show - -其中,以 **#** 开头的行尾注释行,**export GMT_SESSION_NAME=$$** 这一行属于 -高级用法,可以忽略。因而核心内容只有两行,即 **gmt begin** 和 **gmt end** 这两行。 - -编辑脚本,在 **gmt begin** 和 **gmt end** 中间添加 GMT 命令,将脚本修改如下:: - - #!/usr/bin/env -S bash -e - # GMT modern mode bash template - # Date: 2019-09-10T00:44:39 - # User: seisman - # Purpose: Purpose of this script - export GMT_SESSION_NAME=$$ # Set a unique session name - gmt begin figurename - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -编辑完成后记得保存文件。 - -执行脚本以绘图 --------------- - -回到终端,运行 Bash 脚本:: - - bash myplot.sh - -待脚本执行完成后,会自动用阅读器(通常是 evince)打开生成的 PDF 格式的图片文件。 -你将看到如下图所示的图片。 - -.. gmtplot:: - :width: 75% - :show-code: false - - #!/usr/bin/env bash - # GMT modern mode bash template - # Date: 2019-09-10T00:44:39 - # User: seisman - # Purpose: Purpose of this script - export GMT_SESSION_NAME=$$ # Set a unique session name - gmt begin figurename - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -这基本上就是运行 GMT 脚本的基本流程,即: - -- 生成脚本模板 -- 编辑脚本,添加 GMT 绘图命令 -- 运行脚本并查看绘图效果 diff --git a/source/tutorial/get-started/macos.md b/source/tutorial/get-started/macos.md new file mode 100644 index 0000000000..187d257d00 --- /dev/null +++ b/source/tutorial/get-started/macos.md @@ -0,0 +1,140 @@ +# GMT 初探: macOS 篇 + +## 启动终端 + +GMT 是一个纯命令行软件,没有任何的图形界面。所有的绘图操作都需要通过 +在终端和脚本中执行命令来完成。 + +macOS 下可以使用 {kbd}`Command + 空格键` 启动 Spotlight,在弹出的搜索框中输入 +“terminal” 再按回车即可打开终端。 + +## 运行 GMT + +启动终端后,敲入 `gmt` 以执行 GMT 命令。你将看到 GMT 的欢迎界面信息,类似于: + +```console + GMT - The Generic Mapping Tools, Version 6.5.0 [64-bit] [8 cores] + (c) 1991-2021 The GMT Team (https://www.generic-mapping-tools.org/team.html). + + Supported in part by the US National Science Foundation (http://www.nsf.gov/) + and volunteers from around the world. + + GMT is distributed under the GNU LGPL License (http://www.gnu.org/licenses/lgpl.html). + Dependencies: netCDF, GDAL, PCRE, FFTW, LAPACK, ZLIB, Ghostscript, GraphicsMagick, FFmpeg. + +usage: gmt [options] + gmt [] + +options: + --help List descriptions of available GMT modules. + --new-script[=L] Write GMT modern mode script template to stdout. + Optionally specify bash|csh|batch [Default is current shell]. + --new-glue=name Write C code for external supplements to glue them to GMT. + --show-bindir Show directory with GMT executables. + --show-citation Show the most recent citation for GMT. + --show-classic Show all classic module names. + --show-classic-core Show all classic module names (core only). + --show-cores Show number of available cores. + --show-datadir Show directory/ies with user data. + --show-dataserver Show URL of the remote GMT data server. + --show-doi Show the DOI for the current release. + --show-library Show path of the shared GMT library. + --show-modules Show all modern module names. + --show-modules-core Show all modern module names (core only). + --show-plugindir Show directory for plug-ins. + --show-sharedir Show directory for shared GMT resources. + --show-userdir Show full path of user's ~/.gmt dir + --version Print GMT version number. + +if is '=' we call exit (0) if module exist and non-zero otherwise. +``` + +## 生成脚本模板 + +继续在终端中敲入: + +``` +gmt --new-script > myplot.sh +``` + +该命令会在当前目录生成一个 GMT 模板脚本,并保存到 Bash 脚本文件 {file}`myplot.sh` 中。 + +:::{note} +本手册中所有示例均使用 Bash 脚本,要求读者对 Bash 脚本及 Unix 命令行有最基本的了解。 +不了解的用户请阅读网络上 Bash 相关教程,或本手册中 {doc}`/tutorial/scripting/index` 一节。 +::: + +## 查看并编辑脚本文件 + +Bash 脚本文件是一个纯文本文件,可以直接用文本编辑器打开。比如,可以使用 macOS 自带的 +文本编辑器打开该脚本文件: + +``` +open myplot.sh +``` + +打开脚本文件后会看到如下内容: + +``` +#!/usr/bin/env -S bash -e +# GMT modern mode bash template +# Date: 2019-09-10T00:44:39 +# User: seisman +# Purpose: Purpose of this script +export GMT_SESSION_NAME=$$ # Set a unique session name +gmt begin figurename + # Place modern session commands here +gmt end show +``` + +其中,以 **#** 开头的行尾注释行,**export GMT_SESSION_NAME=\$\$** 这一行属于 +高级用法,可以忽略。核心内容只有两行,即 **gmt begin** 和 **gmt end** 这两行。 + +编辑脚本,在 **gmt begin** 和 **gmt end** 中间添加 GMT 命令,将脚本修改如下: + +``` +#!/usr/bin/env -S bash -e +# GMT modern mode bash template +# Date: 2019-09-10T00:44:39 +# User: seisman +# Purpose: Purpose of this script +export GMT_SESSION_NAME=$$ # Set a unique session name +gmt begin figurename + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" +gmt end show +``` + +编辑完成后记得保存文件。 + +## 执行脚本以绘图 + +回到终端,运行 Bash 脚本: + +``` +bash myplot.sh +``` + +待脚本执行完成后,会自动用 macOS 自带的 PDF 阅读器(即 Preview)打开生成的 PDF 格式的 +图片文件。你将看到如下图所示的图片: + +```{eval-rst} +.. gmtplot:: + :width: 75% + :show-code: false + + #!/usr/bin/env bash + # GMT modern mode bash template + # Date: 2019-09-10T00:44:39 + # User: seisman + # Purpose: Purpose of this script + export GMT_SESSION_NAME=$$ # Set a unique session name + gmt begin figurename + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" + gmt end show +``` + +这基本上就是运行 GMT 脚本的基本流程,即: + +- 生成脚本模板 +- 编辑脚本,添加 GMT 绘图命令 +- 运行脚本并查看绘图效果 diff --git a/source/tutorial/get-started/macos.rst b/source/tutorial/get-started/macos.rst deleted file mode 100644 index 1326b22c3e..0000000000 --- a/source/tutorial/get-started/macos.rst +++ /dev/null @@ -1,134 +0,0 @@ -GMT 初探: macOS 篇 -================== - -启动终端 --------- - -GMT 是一个纯命令行软件,没有任何的图形界面。所有的绘图操作都需要通过 -在终端和脚本中执行命令来完成。 - -macOS 下可以使用 :kbd:`Command + 空格键` 启动 Spotlight,在弹出的搜索框中输入 -“terminal” 再按回车即可打开终端。 - -运行 GMT --------- - -启动终端后,敲入 ``gmt`` 以执行 GMT 命令。你将看到 GMT 的欢迎界面信息,类似于: - -.. code-block:: console - - GMT - The Generic Mapping Tools, Version 6.5.0 [64-bit] [8 cores] - (c) 1991-2021 The GMT Team (https://www.generic-mapping-tools.org/team.html). - - Supported in part by the US National Science Foundation (http://www.nsf.gov/) - and volunteers from around the world. - - GMT is distributed under the GNU LGPL License (http://www.gnu.org/licenses/lgpl.html). - Dependencies: netCDF, GDAL, PCRE, FFTW, LAPACK, ZLIB, Ghostscript, GraphicsMagick, FFmpeg. - - usage: gmt [options] - gmt [] - - options: - --help List descriptions of available GMT modules. - --new-script[=L] Write GMT modern mode script template to stdout. - Optionally specify bash|csh|batch [Default is current shell]. - --new-glue=name Write C code for external supplements to glue them to GMT. - --show-bindir Show directory with GMT executables. - --show-citation Show the most recent citation for GMT. - --show-classic Show all classic module names. - --show-classic-core Show all classic module names (core only). - --show-cores Show number of available cores. - --show-datadir Show directory/ies with user data. - --show-dataserver Show URL of the remote GMT data server. - --show-doi Show the DOI for the current release. - --show-library Show path of the shared GMT library. - --show-modules Show all modern module names. - --show-modules-core Show all modern module names (core only). - --show-plugindir Show directory for plug-ins. - --show-sharedir Show directory for shared GMT resources. - --show-userdir Show full path of user's ~/.gmt dir - --version Print GMT version number. - - if is '=' we call exit (0) if module exist and non-zero otherwise. - -生成脚本模板 ------------- - -继续在终端中敲入:: - - gmt --new-script > myplot.sh - -该命令会在当前目录生成一个 GMT 模板脚本,并保存到 Bash 脚本文件 :file:`myplot.sh` 中。 - -.. note:: - - 本手册中所有示例均使用 Bash 脚本,要求读者对 Bash 脚本及 Unix 命令行有最基本的了解。 - 不了解的用户请阅读网络上 Bash 相关教程,或本手册中 :doc:`/tutorial/scripting/index` 一节。 - -查看并编辑脚本文件 ------------------- - -Bash 脚本文件是一个纯文本文件,可以直接用文本编辑器打开。比如,可以使用 macOS 自带的 -文本编辑器打开该脚本文件:: - - open myplot.sh - -打开脚本文件后会看到如下内容:: - - #!/usr/bin/env -S bash -e - # GMT modern mode bash template - # Date: 2019-09-10T00:44:39 - # User: seisman - # Purpose: Purpose of this script - export GMT_SESSION_NAME=$$ # Set a unique session name - gmt begin figurename - # Place modern session commands here - gmt end show - -其中,以 **#** 开头的行尾注释行,**export GMT_SESSION_NAME=$$** 这一行属于 -高级用法,可以忽略。核心内容只有两行,即 **gmt begin** 和 **gmt end** 这两行。 - -编辑脚本,在 **gmt begin** 和 **gmt end** 中间添加 GMT 命令,将脚本修改如下:: - - #!/usr/bin/env -S bash -e - # GMT modern mode bash template - # Date: 2019-09-10T00:44:39 - # User: seisman - # Purpose: Purpose of this script - export GMT_SESSION_NAME=$$ # Set a unique session name - gmt begin figurename - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -编辑完成后记得保存文件。 - -执行脚本以绘图 --------------- - -回到终端,运行 Bash 脚本:: - - bash myplot.sh - -待脚本执行完成后,会自动用 macOS 自带的 PDF 阅读器(即 Preview)打开生成的 PDF 格式的 -图片文件。你将看到如下图所示的图片: - -.. gmtplot:: - :width: 75% - :show-code: false - - #!/usr/bin/env bash - # GMT modern mode bash template - # Date: 2019-09-10T00:44:39 - # User: seisman - # Purpose: Purpose of this script - export GMT_SESSION_NAME=$$ # Set a unique session name - gmt begin figurename - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -这基本上就是运行 GMT 脚本的基本流程,即: - -- 生成脚本模板 -- 编辑脚本,添加 GMT 绘图命令 -- 运行脚本并查看绘图效果 diff --git a/source/tutorial/get-started/windows.md b/source/tutorial/get-started/windows.md new file mode 100644 index 0000000000..bd6bbe89c6 --- /dev/null +++ b/source/tutorial/get-started/windows.md @@ -0,0 +1,147 @@ +# GMT 初探: Windows 篇 + +## 启动 CMD 命令行 + +GMT 是一个纯命令行软件,没有任何的图形界面。所有的绘图操作都需要通过 +在终端和脚本中执行命令来完成。Windows 下的默认终端是 “命令提示符”, +也就是 CMD 命令行。 + +点击 “开始”→“附件”→“命令提示符” 即可启动 CMD, +也可以直接在开始按钮中的搜索框中搜索 “CMD” 并启动。 + +## 运行 GMT + +启动 CMD 后,敲入 `gmt` 以执行 GMT 命令。你将看到 GMT 的欢迎界面信息,类似于: + +```console + GMT - The Generic Mapping Tools, Version 6.5.0 [64-bit] [8 cores] + (c) 1991-2021 The GMT Team (https://www.generic-mapping-tools.org/team.html). + + Supported in part by the US National Science Foundation (http://www.nsf.gov/) + and volunteers from around the world. + + GMT is distributed under the GNU LGPL License (http://www.gnu.org/licenses/lgpl.html). + Dependencies: netCDF, GDAL, PCRE, FFTW, LAPACK, ZLIB, Ghostscript, GraphicsMagick, FFmpeg. + +usage: gmt [options] + gmt [] + +options: + --help List descriptions of available GMT modules. + --new-script[=L] Write GMT modern mode script template to stdout. + Optionally specify bash|csh|batch [Default is current shell]. + --new-glue=name Write C code for external supplements to glue them to GMT. + --show-bindir Show directory with GMT executables. + --show-citation Show the most recent citation for GMT. + --show-classic Show all classic module names. + --show-classic-core Show all classic module names (core only). + --show-cores Show number of available cores. + --show-datadir Show directory/ies with user data. + --show-dataserver Show URL of the remote GMT data server. + --show-doi Show the DOI for the current release. + --show-library Show path of the shared GMT library. + --show-modules Show all modern module names. + --show-modules-core Show all modern module names (core only). + --show-plugindir Show directory for plug-ins. + --show-sharedir Show directory for shared GMT resources. + --show-userdir Show full path of user's ~/.gmt dir + --version Print GMT version number. + +if is '=' we call exit (0) if module exist and non-zero otherwise. +``` + +## 生成脚本模板 + +继续在终端中敲入: + +``` +gmt --new-script > myplot.bat +``` + +该命令会在当前目录生成一个 GMT 模板脚本,并保存到 Batch 脚本文件 {file}`myplot.bat` 中。 + +:::{note} +Batch 是 Windows 自带的脚本语言,但本教程中所有示例均使用 Unix 下常用的 Bash 脚本。 +因而 Windows 用户有两种选择: + +1. 安装 [Git for Windows](https://git-scm.com/download/win) 并使用其提供的 + Bash,本手册中的所有命令都将可以直接使用。要求读者对 Bash 脚本及 Unix 命令行有最基本的了解。 + 不了解的用户请阅读网络上 Bash 相关教程,或本手册中 {doc}`/tutorial/scripting/index` 一节。 +2. 继续使用 Windows 的 Batch 脚本。要求读者对 Batch 脚本和 Bash 脚本均有所了解,并 + 知道二者用法的差异,以便于将手册中的 Bash 脚本转换为 Batch 脚本。 + 不了解的用户请阅读网络上 Bash 和 Batch 相关教程,或本手册中 + {doc}`/tutorial/scripting/index` 一节。 +::: + +## 查看并编辑脚本文件 + +Batch 脚本文件是一个纯文本文件,可以直接用文本编辑器打开。例如,Windows 下自带的记事本 +即可打开该脚本文件。 + +打开脚本文件后会看到如下内容: + +``` +REM GMT modern mode batch template +REM Date: 2019-09-02T23:34:25 +REM User: seisman +REM Purpose: Purpose of this script +REM Set a unique session name: +@echo off +set GMT_SESSION_NAME=7492 +gmt begin figurename + REM Place modern session commands here +gmt end show +``` + +其中,以 **REM** 开头的行尾注释行,**set GMT_SESSION_NAME=7492** 这一行属于 +高级用法,可以忽略。核心内容只有两行,即 **gmt begin** 和 **gmt end** 这两行。 + +编辑脚本,在 **gmt begin** 和 **gmt end** 中间添加 GMT 命令,将脚本修改如下: + +``` +REM GMT modern mode batch template +REM Date: 2019-09-02T23:34:25 +REM User: seisman +REM Purpose: Purpose of this script +REM Set a unique session name: +@echo off +set GMT_SESSION_NAME=7492 +gmt begin figurename + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" +gmt end show +``` + +编辑完成后记得保存文件。 + +## 执行脚本以绘图 + +回到 CMD,直接输入 Batch 脚本名以运行该脚本: + +``` +myplot.bat +``` + +待脚本执行完成后,会自动用 PDF 阅读器打开生成的 PDF 格式的图片文件。 +你将看到如下图所示的图片。 + +```{eval-rst} +.. gmtplot:: + :width: 75% + :show-code: false + + #!/usr/bin/env bash + # GMT modern mode bash template + # Date: 2019-09-10T00:44:39 + # User: seisman + # Purpose: Purpose of this script + export GMT_SESSION_NAME=$$ # Set a unique session name + gmt begin figurename + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" + gmt end show +``` + +这基本上就是运行 GMT 脚本的基本流程,即: + +- 生成脚本模板 +- 编辑脚本,添加 GMT 绘图命令 +- 运行脚本并查看绘图效果 diff --git a/source/tutorial/get-started/windows.rst b/source/tutorial/get-started/windows.rst deleted file mode 100644 index 208e04590f..0000000000 --- a/source/tutorial/get-started/windows.rst +++ /dev/null @@ -1,143 +0,0 @@ -GMT 初探: Windows 篇 -==================== - -启动 CMD 命令行 ---------------- - -GMT 是一个纯命令行软件,没有任何的图形界面。所有的绘图操作都需要通过 -在终端和脚本中执行命令来完成。Windows 下的默认终端是 “命令提示符”, -也就是 CMD 命令行。 - -点击 “开始”→“附件”→“命令提示符” 即可启动 CMD, -也可以直接在开始按钮中的搜索框中搜索 “CMD” 并启动。 - -运行 GMT --------- - -启动 CMD 后,敲入 ``gmt`` 以执行 GMT 命令。你将看到 GMT 的欢迎界面信息,类似于: - -.. code-block:: console - - GMT - The Generic Mapping Tools, Version 6.5.0 [64-bit] [8 cores] - (c) 1991-2021 The GMT Team (https://www.generic-mapping-tools.org/team.html). - - Supported in part by the US National Science Foundation (http://www.nsf.gov/) - and volunteers from around the world. - - GMT is distributed under the GNU LGPL License (http://www.gnu.org/licenses/lgpl.html). - Dependencies: netCDF, GDAL, PCRE, FFTW, LAPACK, ZLIB, Ghostscript, GraphicsMagick, FFmpeg. - - usage: gmt [options] - gmt [] - - options: - --help List descriptions of available GMT modules. - --new-script[=L] Write GMT modern mode script template to stdout. - Optionally specify bash|csh|batch [Default is current shell]. - --new-glue=name Write C code for external supplements to glue them to GMT. - --show-bindir Show directory with GMT executables. - --show-citation Show the most recent citation for GMT. - --show-classic Show all classic module names. - --show-classic-core Show all classic module names (core only). - --show-cores Show number of available cores. - --show-datadir Show directory/ies with user data. - --show-dataserver Show URL of the remote GMT data server. - --show-doi Show the DOI for the current release. - --show-library Show path of the shared GMT library. - --show-modules Show all modern module names. - --show-modules-core Show all modern module names (core only). - --show-plugindir Show directory for plug-ins. - --show-sharedir Show directory for shared GMT resources. - --show-userdir Show full path of user's ~/.gmt dir - --version Print GMT version number. - - if is '=' we call exit (0) if module exist and non-zero otherwise. - -生成脚本模板 ------------- - -继续在终端中敲入:: - - gmt --new-script > myplot.bat - -该命令会在当前目录生成一个 GMT 模板脚本,并保存到 Batch 脚本文件 :file:`myplot.bat` 中。 - -.. note:: - - Batch 是 Windows 自带的脚本语言,但本教程中所有示例均使用 Unix 下常用的 Bash 脚本。 - 因而 Windows 用户有两种选择: - - #. 安装 `Git for Windows `_ 并使用其提供的 - Bash,本手册中的所有命令都将可以直接使用。要求读者对 Bash 脚本及 Unix 命令行有最基本的了解。 - 不了解的用户请阅读网络上 Bash 相关教程,或本手册中 :doc:`/tutorial/scripting/index` 一节。 - #. 继续使用 Windows 的 Batch 脚本。要求读者对 Batch 脚本和 Bash 脚本均有所了解,并 - 知道二者用法的差异,以便于将手册中的 Bash 脚本转换为 Batch 脚本。 - 不了解的用户请阅读网络上 Bash 和 Batch 相关教程,或本手册中 - :doc:`/tutorial/scripting/index` 一节。 - -查看并编辑脚本文件 ------------------- - -Batch 脚本文件是一个纯文本文件,可以直接用文本编辑器打开。例如,Windows 下自带的记事本 -即可打开该脚本文件。 - -打开脚本文件后会看到如下内容:: - - REM GMT modern mode batch template - REM Date: 2019-09-02T23:34:25 - REM User: seisman - REM Purpose: Purpose of this script - REM Set a unique session name: - @echo off - set GMT_SESSION_NAME=7492 - gmt begin figurename - REM Place modern session commands here - gmt end show - -其中,以 **REM** 开头的行尾注释行,**set GMT_SESSION_NAME=7492** 这一行属于 -高级用法,可以忽略。核心内容只有两行,即 **gmt begin** 和 **gmt end** 这两行。 - -编辑脚本,在 **gmt begin** 和 **gmt end** 中间添加 GMT 命令,将脚本修改如下:: - - REM GMT modern mode batch template - REM Date: 2019-09-02T23:34:25 - REM User: seisman - REM Purpose: Purpose of this script - REM Set a unique session name: - @echo off - set GMT_SESSION_NAME=7492 - gmt begin figurename - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -编辑完成后记得保存文件。 - -执行脚本以绘图 --------------- - -回到 CMD,直接输入 Batch 脚本名以运行该脚本:: - - myplot.bat - -待脚本执行完成后,会自动用 PDF 阅读器打开生成的 PDF 格式的图片文件。 -你将看到如下图所示的图片。 - -.. gmtplot:: - :width: 75% - :show-code: false - - #!/usr/bin/env bash - # GMT modern mode bash template - # Date: 2019-09-10T00:44:39 - # User: seisman - # Purpose: Purpose of this script - export GMT_SESSION_NAME=$$ # Set a unique session name - gmt begin figurename - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -这基本上就是运行 GMT 脚本的基本流程,即: - -- 生成脚本模板 -- 编辑脚本,添加 GMT 绘图命令 -- 运行脚本并查看绘图效果 diff --git a/source/tutorial/histogram/index.rst b/source/tutorial/histogram/index.md similarity index 83% rename from source/tutorial/histogram/index.rst rename to source/tutorial/histogram/index.md index 52050e817e..9abd4f2286 100644 --- a/source/tutorial/histogram/index.rst +++ b/source/tutorial/histogram/index.md @@ -1,63 +1,68 @@ -绘制直方图 -========== +# 绘制直方图 -GMT 中 :doc:`/module/histogram` 模块用于统计并绘制直方图。 +GMT 中 {doc}`/module/histogram` 模块用于统计并绘制直方图。 直方图可以直观地展现样本的分布情况。 一个直方的宽度表示它的数据范围,长度表示位于该范围内的样本的数量或者比例。 这一节中,我们通过绘制地震震源深度直方图来介绍直方图的绘制。 -以下示例使用的数据为 :download:`eq.dat `, +以下示例使用的数据为 {download}`eq.dat `, 数据包含了三列,分别是地震的经度、纬度和深度。 直方图根据直方的方向可以分为垂直直方图和水平直方图,也可以根据直方的长度的意义不同 分为计数直方图和百分比直方图。 -垂直直方图 ----------- +## 垂直直方图 GMT 中默认绘制垂直直方图。绘制直方图只需要一列数据,而上面的示例数据有三列。 我们需要使用 **-i2** 选项将输入数据的第三列(GMT 中列号从 0 开始)传递给 **histogram**。 -直接使用下面的命令:: +直接使用下面的命令: - gmt histogram eq.dat -i2 -png map +``` +gmt histogram eq.dat -i2 -png map +``` -会得到如下报错信息:: +会得到如下报错信息: - histogram [ERROR]: Required argument for bin width not set - histogram [ERROR]: Option -T: Must specify bin width - histogram [ERROR]: Must specify either fill (-G) or lookup colors (-C), outline pen attributes (-W), or both. +``` +histogram [ERROR]: Required argument for bin width not set +histogram [ERROR]: Option -T: Must specify bin width +histogram [ERROR]: Must specify either fill (-G) or lookup colors (-C), outline pen attributes (-W), or both. +``` 报错信息告诉我们,**histogram** 需要使用 **-T** 选项指定直方的宽度。同时还需要 使用 **-G** 指定直方的填充色,或使用 **-W** 指定直方边框的画笔属性。 根据错误信息,我们向上面的命令增加了几个额外的选项: - **-T5** 设置了统计时每一个直方的宽度是 5。该选项还可以更灵活地设置直方的最大最小值等属性, - 详见 :doc:`/module/histogram` 模块文档 + 详见 {doc}`/module/histogram` 模块文档 - **-W1p** 设置直方的边框宽度为 1p - **-Baf** 则为整张图加了一个自动的边框 +```{eval-rst} .. gmtplot:: :language: bash :width: 50% :caption: 垂直直方图 gmt histogram eq.dat -Baf -T5 -W1p -i2 -png hist1 +``` 由此,我们得到了一张非常简单的直方图。从直方图中我们对数据也有了基本的认识。 直方图中横轴表示数据中地震深度范围集中在 0-40 千米。 -增加修饰 --------- +## 增加修饰 为了让图形更加的美观,我们可以添加一些选项: +```{eval-rst} .. gmtplot:: :language: bash :width: 75% :caption: 添加选项的垂直直方图 gmt histogram eq.dat -JX15c/9c -R0/40/0/600 -Bxaf+l"Depth" -Byaf+l"Counts" -BWSen -D -W1p -Gred -T5 -i2 -png hist2 +``` - **-JX15c/9c** 指定了整张直方图的宽度和高度。若不指定,GMT 会自动指定一个合适的值 - **-R0/40/0/600** 设置了直方图的数据范围。若不指定,**histogram** 会自动确定最适合的数据范围。 @@ -67,32 +72,34 @@ GMT 中默认绘制垂直直方图。绘制直方图只需要一列数据,而 - **-D** 会在每个直方的上方标注该直方中的数量。该选项还可以接更多的子选项以控制标注的 位置、字体和角度等 -水平直方图 ----------- +## 水平直方图 如果想要绘制水平直方图,只需要增加 **-A** 选项。 需要注意的是,尽管水平直方图中横轴是地震数量,纵轴是地震深度,**-R** 选项中依然是 深度在前、统计值在后,即与垂直直方图时保持一致。 +```{eval-rst} .. gmtplot:: :language: bash :width: 75% :caption: 水平直方图 gmt histogram eq.dat -JX15c/9c -R0/40/0/600 -Bxaf+l"Depth" -Byaf+l"Counts" -BWSen -A -D -W1p -Gred -T5 -i2 -png hist3 +``` -百分比直方图 ------------- +## 百分比直方图 **histogram** 的 **-Z** 选项可以进一步控制统计图的类型。默认纵轴为统计数目。 **-Z1** 表示绘制百分比直方图。 +```{eval-rst} .. gmtplot:: :language: bash :width: 75% :caption: 添加选项的垂直直方图 gmt histogram eq.dat -JX15c/9c -Bxaf+l"Depth" -Byaf+l"Counts"+u"%" -BWSen -Z1 -W1p -Gred -T5 -i2 -png hist4 +``` 这个命令中,由于纵轴的含义变了,之前的 **-R** 选项就不再合适了,因而我们去除了 **-R** 选项让 GMT 自动确定最佳数据范围。 diff --git a/source/tutorial/inset.rst b/source/tutorial/inset.md similarity index 92% rename from source/tutorial/inset.rst rename to source/tutorial/inset.md index 170d3392fc..bfd60e7bc9 100644 --- a/source/tutorial/inset.rst +++ b/source/tutorial/inset.md @@ -1,11 +1,10 @@ -GMT 图中图模式 -============== +# GMT 图中图模式 在绘制区域地图时,为了更清晰地显示研究区域的地理位置,通常会额外绘制一个更大 区域范围的地图,并在大区域地图中标记出研究区域的位置。这种图称之为 inset map。 中文没有统一的翻译,大家一般称之为图中图、小图、插页图或区位图。 -GMT 中 :doc:`/module/inset` 模块用于管理图中图模式。图中图模式以 **inset begin** +GMT 中 {doc}`/module/inset` 模块用于管理图中图模式。图中图模式以 **inset begin** 开始,并以 **inset end** 结束。 使用 **inset begin** 进入图中图模式,其作用是在纸张上规划出一个矩形区域, @@ -13,8 +12,7 @@ GMT 中 :doc:`/module/inset` 模块用于管理图中图模式。图中图模式 进行操作。当使用 **inset end** 结束图中图模式时,绘图原点会自动恢复到图中图 模式之前的位置,且所有设置参数都将回到之前的状态。 -用矩形框标记研究区域 --------------------- +## 用矩形框标记研究区域 下面的示例中研究区域为日本东京周围的一个小区域。为了展示其地理位置,我们在大图的 左下角的小图中绘制了日本全图,同时在小图中用矩形框出了大图中的研究区域范围。 @@ -28,11 +26,12 @@ GMT 中 :doc:`/module/inset` 模块用于管理图中图模式。图中图模式 同时我们使用 **plot** 模块的 **-Sr+s** 选项在小图中绘制了一个对应于大图区域的 矩形框,该命令需要输入矩形区域的两个对角顶点的经纬度。 +```{eval-rst} .. gmtplot:: /module/inset/inset-ex01.sh :width: 60% +``` -用颜色标记研究区域 ------------------- +## 用颜色标记研究区域 下面的示例中研究区域为澳大利亚。为了展示其地理位置,我们在大图的右上角区域绘制了 全球地图,并用特殊的颜色将澳大利亚区域标记出来。 @@ -41,5 +40,7 @@ GMT 中 :doc:`/module/inset` 模块用于管理图中图模式。图中图模式 1.5 英寸(**+w1.5i**)。同样的,在小图内部我们在需要指定地图宽度的地方使用了 **?** 让 GMT 自动帮我们决定小图的宽度。 +```{eval-rst} .. gmtplot:: /module/inset/inset-ex02.sh :width: 60% +``` diff --git a/source/tutorial/layers/index.rst b/source/tutorial/layers/index.md similarity index 68% rename from source/tutorial/layers/index.rst rename to source/tutorial/layers/index.md index b18e77032b..30c9768073 100644 --- a/source/tutorial/layers/index.rst +++ b/source/tutorial/layers/index.md @@ -1,71 +1,76 @@ -理解图层 -======== +# 理解图层 在前面几节中,我们已经学会了如何使用 GMT 绘制底图、海岸线、线段、符号、文字、 地形起伏等等。这一节我们将把前面学到的内容综合起来,试着去绘制下面这张 地震学经常见到的大圆弧路径图。在这一过程中,我们将试着去理解 GMT 中图层的概念。 +```{eval-rst} .. gmtplot:: layers-5.sh :width: 75% :show-code: false +``` -图件分析与拆解 --------------- +## 图件分析与拆解 上面这张图看上去有些复杂,实际上是由很多部分构成的。将整张图拆解一下可知, 上图由如下几个部分构成: -#. 地形起伏作为底图 -#. 震中位置(五角星) -#. 台站位置(三角形) -#. 射线路径(图中大圆弧) -#. 台站名(文字) +1. 地形起伏作为底图 +2. 震中位置(五角星) +3. 台站位置(三角形) +4. 射线路径(图中大圆弧) +5. 台站名(文字) 这几个部分,在教程的前几节都已经做过介绍,因而只需要将前几节的内容综合起来即可。 -绘制底图 --------- +## 绘制底图 -我们首先使用 :doc:`/module/grdimage` 模块绘制底图,并使用 :doc:`/module/colorbar` +我们首先使用 {doc}`/module/grdimage` 模块绘制底图,并使用 {doc}`/module/colorbar` 模块添加色标: +```{eval-rst} .. gmtplot:: layers-1.sh :width: 75% +``` -绘制震中和台站位置 ------------------- +## 绘制震中和台站位置 -接下来,使用 :doc:`/module/plot` 模块绘制五角星和三角形。 +接下来,使用 {doc}`/module/plot` 模块绘制五角星和三角形。 +```{eval-rst} .. gmtplot:: layers-2.sh :width: 75% +``` -绘制射线路径 ------------- +## 绘制射线路径 -再使用 :doc:`/module/plot` 模块绘制线段。 +再使用 {doc}`/module/plot` 模块绘制线段。 默认情况下,**plot** 会自动用大圆路径连接地球上的两个位置, -因而我们只需要用 ``>`` 分隔多个线段,每个线段给定两个坐标点(即地震位置和台站位置) +因而我们只需要用 `>` 分隔多个线段,每个线段给定两个坐标点(即地震位置和台站位置) 即可。 +```{eval-rst} .. gmtplot:: layers-3.sh :width: 75% +``` -添加台站名 ----------- +## 添加台站名 -最后还需要往图画里添加台站所在地区的名字。添加文字使用 :doc:`/module/text` 模块。 -这里我们使用了 **-F+f9p,1,black+j** 选项,因而输入数据是 4 列:: +最后还需要往图画里添加台站所在地区的名字。添加文字使用 {doc}`/module/text` 模块。 +这里我们使用了 **-F+f9p,1,black+j** 选项,因而输入数据是 4 列: - X Y 对齐方式 TEXT +``` +X Y 对齐方式 TEXT +``` **-Dj0.1c/0.1c** 则是将文本在对齐方式的基础上做进一步的偏移以避免文字覆盖线段或符号。 +```{eval-rst} .. gmtplot:: layers-4.sh :width: 75% +``` -图层的先后顺序 --------------- +## 图层的先后顺序 上面的绘图脚本已经基本绘制出我们最初想要的图件了。细细看会发现,还有一些不完美的 地方:比如黄色五角星和三角形被线段盖住了。 @@ -75,7 +80,9 @@ 对脚本中命令的先后顺序进行微调,如下所示: +```{eval-rst} .. gmtplot:: layers-5.sh :width: 75% +``` 这样我们就通过组合一系列简单的 GMT 命令,得到了一个复杂的 GMT 图件。 diff --git a/source/tutorial/legend.rst b/source/tutorial/legend.md similarity index 64% rename from source/tutorial/legend.rst rename to source/tutorial/legend.md index 348a9512e0..fa662cc198 100644 --- a/source/tutorial/legend.rst +++ b/source/tutorial/legend.md @@ -1,25 +1,24 @@ -添加图例 -======== +# 添加图例 -.. raw:: html +--- - - ----- +```{raw} html + +``` 绘制了线条与符号后,通常还需要添加图例,以解释不同数据的含义。 -GMT 中使用 :doc:`/module/legend` 模块添加图例。 +GMT 中使用 {doc}`/module/legend` 模块添加图例。 -自动图例 --------- +## 自动图例 -在使用 :doc:`/module/plot` 模块绘制线条或符号时,可以额外加上 **-l**\ *label* +在使用 {doc}`/module/plot` 模块绘制线条或符号时,可以额外加上 **-l***label* 选项以指定当前线段或符号的图例标签。 下面的示例中,我们利用前面学到的知识绘制了线段和两种符号,同时使用了 **-l** 选项为线段和符号均添加了标签。在绘图结束时,GMT 会自动根据命令中提供的信息 在右上角绘制了图例。 +```{eval-rst} .. gmtplot:: :width: 50% @@ -38,17 +37,18 @@ GMT 中使用 :doc:`/module/legend` 模块添加图例。 8 5 EOF gmt end show +``` 还可以为 **-l** 选项加上其它子选项以控制图例的位置、大小以及其它显示效果, 在本教程中不再赘述。 -设置图例属性 ------------- +## 设置图例属性 GMT 使用 **legend** 模块添加图例。上面的示例中我们并没有调用 **legend** 模块, 而是 GMT 在绘图结束时自动调用了 **legend** 添加图例。我们也可以显式调用 **legend** 模块,并设置图例的更多属性。 +```{eval-rst} .. gmtplot:: :width: 50% @@ -69,6 +69,7 @@ GMT 使用 **legend** 模块添加图例。上面的示例中我们并没有调 # 设置图例宽的属性,并修改图例里文字的字体 gmt legend -DjBR+o0.1c/0.1c -F+p1p+glightblue --FONT_ANNOT_PRIMARY=12p,1,black gmt end show +``` 这个示例中,我们显式调用了 **legend** 选项,并设置了 **-D** 和 **-F** 选项。 @@ -76,15 +77,14 @@ GMT 使用 **legend** 模块添加图例。上面的示例中我们并没有调 - **+o0.1c/0.1c** 表示将图例在右下角的基础上再加上额外的偏移量 - **-F+p1p+glightblue** 则设置了图例框的轮廓和填充色 -手动设置图例 ------------- +## 手动设置图例 -如果对于自动生成的图例不满意,还可以使用 :doc:`/module/legend` 模块绘制更复杂的图例, -其输入文件有自己的一套规则,详情见 :doc:`/module/legend` 模块的说明文档。 +如果对于自动生成的图例不满意,还可以使用 {doc}`/module/legend` 模块绘制更复杂的图例, +其输入文件有自己的一套规则,详情见 {doc}`/module/legend` 模块的说明文档。 这节只介绍最简单也最常用的图例,即符号和线条的图例。 -针对绘制符号和线条,:doc:`/module/legend` 的输入格式为: +针对绘制符号和线条,{doc}`/module/legend` 的输入格式为: - **S** *dx1* *symbol* *size* *fill* *pen* *dx2* *text* +> **S** *dx1* *symbol* *size* *fill* *pen* *dx2* *text* - **S** 表明这一行用于绘制符号或线段。 - *dx1* 是符号或线段与图例左边框的距离 @@ -97,22 +97,24 @@ GMT 使用 **legend** 模块添加图例。上面的示例中我们并没有调 下面的示例中,我们绘制了四种符号,以及线段、矢量线和断层线。 +```{eval-rst} .. gmtplot:: :width: 70% - gmt begin map - gmt basemap -R0/10/0/8 -JX10c/8c -Baf -BWSen - cat > legend.txt << EOF - # symbols - S 0.25c c 0.3c - 0.25p,blue 0.8c circle - S 0.25c t 0.3c cyan 0.25p 0.8c triangle - S 0.25c i 0.3c blue 0.25p,red 0.8c triangle2 - S 0.25c e 0.3c yellow 0.25p 0.8c ellipse - # lines - S 0.25c - 0.5c - 0.25p 0.8c line - S 0.25c - 0.5c - 0.25p,- 0.8c dashline - S 0.25c v0.1i+a40+e 0.25i magenta 0.25p 0.8c vector - S 0.25c f0.1i+l+t 0.25i blue 0.25p 0.8c fault - EOF - gmt legend legend.txt -DjBR+w2.8c+o0.1c/0.1c -F+p1p+glightblue - gmt end show + gmt begin map + gmt basemap -R0/10/0/8 -JX10c/8c -Baf -BWSen + cat > legend.txt << EOF + # symbols + S 0.25c c 0.3c - 0.25p,blue 0.8c circle + S 0.25c t 0.3c cyan 0.25p 0.8c triangle + S 0.25c i 0.3c blue 0.25p,red 0.8c triangle2 + S 0.25c e 0.3c yellow 0.25p 0.8c ellipse + # lines + S 0.25c - 0.5c - 0.25p 0.8c line + S 0.25c - 0.5c - 0.25p,- 0.8c dashline + S 0.25c v0.1i+a40+e 0.25i magenta 0.25p 0.8c vector + S 0.25c f0.1i+l+t 0.25i blue 0.25p 0.8c fault + EOF + gmt legend legend.txt -DjBR+w2.8c+o0.1c/0.1c -F+p1p+glightblue + gmt end show +``` diff --git a/source/tutorial/lines.rst b/source/tutorial/lines.md similarity index 75% rename from source/tutorial/lines.rst rename to source/tutorial/lines.md index f721ab17eb..98846da618 100644 --- a/source/tutorial/lines.rst +++ b/source/tutorial/lines.md @@ -1,47 +1,52 @@ -绘制线段和多边形 -================ +# 绘制线段和多边形 绘制线条和多边形是日常绘图最常见的需求之一,也是所有绘图软件必备的功能。 -这一节我们将学习如何使用 GMT 的 :doc:`/module/plot` 模块绘制线段和多边形。 +这一节我们将学习如何使用 GMT 的 {doc}`/module/plot` 模块绘制线段和多边形。 -绘制一条线段 ------------- +## 绘制一条线段 要绘制一条线段,就必须提供线段上数据点的信息,即数据的 X 坐标和 Y 坐标。 -:doc:`/module/plot` 会自动将输入数据中相邻的两点连接起来。 +{doc}`/module/plot` 会自动将输入数据中相邻的两点连接起来。 -以下面的数据为例,这个数据中包含了三个坐标点 (2,2)、(8,2) 和 (5,7):: +以下面的数据为例,这个数据中包含了三个坐标点 (2,2)、(8,2) 和 (5,7): - 2 2 - 8 2 - 5 7 - -下面的例子中,我们首先使用 UNIX 下的 ``cat`` 命令将数据写入到文件 -:file:`points.dat` 中,然后使用 **basemap** 模块绘制了一张底图, -并使用 **plot** 模块绘制输入文件 :file:`points.dat` 中的数据。 +``` +2 2 +8 2 +5 7 +``` -.. warning:: +下面的例子中,我们首先使用 UNIX 下的 `cat` 命令将数据写入到文件 +{file}`points.dat` 中,然后使用 **basemap** 模块绘制了一张底图, +并使用 **plot** 模块绘制输入文件 {file}`points.dat` 中的数据。 - 下面的几行代码的作用是将两个 EOF 中间的三行数据保存到文件 :file:`points.dat` 中:: +:::{warning} +下面的几行代码的作用是将两个 EOF 中间的三行数据保存到文件 {file}`points.dat` 中: - cat > points.dat << EOF - 2 2 - 8 2 - 5 7 - EOF +``` +cat > points.dat << EOF +2 2 +8 2 +5 7 +EOF +``` - **需要注意:Windows Batch 不支持 EOF 语法!** - 因而 Batch 用户需要使用:: +**需要注意:Windows Batch 不支持 EOF 语法!** +因而 Batch 用户需要使用: - echo 2 2 > points.dat - echo 8 2 >> points.dat - echo 5 7 >> points.dat +``` +echo 2 2 > points.dat +echo 8 2 >> points.dat +echo 5 7 >> points.dat +``` - 将数据写到文件 :file:`points.dat`。 - 其它示例也有相同的问题,Batch 用户自行修改,不再专门解释。 +将数据写到文件 {file}`points.dat`。 +其它示例也有相同的问题,Batch 用户自行修改,不再专门解释。 +::: 图中,**plot** 模块在绘图时自动将三个点连接起来,绘制出了一条线段。 +```{eval-rst} .. gmtplot:: :width: 50% @@ -55,6 +60,7 @@ gmt basemap -JX10c -R0/10/0/10 -Baf gmt plot points.dat gmt end show +``` 想要修改线段的粗细或颜色?很简单,可以使用 **plot** 模块的 **-W** 选项设置画笔属性。 画笔属性包括三个部分:线宽、颜色以及线型,三者之间用逗号隔开。 @@ -62,6 +68,7 @@ 下面的脚本中,我们给 **plot** 模块添加了 **-W2p,red,-** 选项, 即设置了画笔属性为 **2p** 宽的红色虚线。**p** 是 GMT 中的一个长度单位。 +```{eval-rst} .. gmtplot:: :width: 50% @@ -75,16 +82,17 @@ gmt basemap -JX10c -R0/10/0/10 -Baf gmt plot points.dat -W2p,red,- gmt end show +``` 你可以尝试修改线宽、颜色和线型,并查看绘图效果。几种常见的线型包括 -``-``、``.``、``.-``\ 和 \ ``-.``。 +`-`、`.`、`.-`和 `-.`。 -绘制一个多边形 --------------- +## 绘制一个多边形 **plot** 在绘制线段时默认是不将线段首尾连接起来的, 可以使用 **-L** 选项将线段的首尾连接起来,构成了一个闭合多边形。 +```{eval-rst} .. gmtplot:: :width: 50% @@ -98,9 +106,11 @@ gmt basemap -JX10c -R0/10/0/10 -Baf gmt plot points.dat -W4p,lightblue -L gmt end show +``` 我们还可以使用 **-G** 选项为闭合多边形填充颜色。 +```{eval-rst} .. gmtplot:: :width: 50% @@ -114,10 +124,12 @@ gmt basemap -JX10c -R0/10/0/10 -Baf gmt plot points.dat -W4p,lightblue -Glightred -L gmt end show +``` 这样我们就得到了一个内部为浅红色、轮廓为浅蓝色的多边形了。如果只想要填充颜色而不绘制轮廓, 只需要使用 **-G** 而不使用 **-W** 即可。 +```{eval-rst} .. gmtplot:: :width: 50% @@ -131,73 +143,77 @@ gmt basemap -JX10c -R0/10/0/10 -Baf gmt plot points.dat -Glightred -L gmt end show +``` -绘制多条线段 ------------- +## 绘制多条线段 学会了如何绘制一条线段,下面介绍如何一次性绘制很多条线段。 -可以将所有线段的数据点都保存到一个输入文件中,例如:: - - > - 1 2 - 4 2 - 4 8 - > - 9 2 - 6 2 - 6 8 +可以将所有线段的数据点都保存到一个输入文件中,例如: + +``` +> +1 2 +4 2 +4 8 +> +9 2 +6 2 +6 8 +``` 每个线段都包含了若干个数据点,在第一个数据点之前有一个 **>** 用于标记新的一段数据的开始。 -这种数据称之为\ **多段数据**。 +这种数据称之为**多段数据**。 与绘制一条线段的命令完全相同,由于输入数据中有两段数据,**plot** 模块为我们绘制出了 两条线段。同样的,两条线段均为线宽为 **1p** 的红色实线。 +```{eval-rst} .. gmtplot:: :width: 50% cat > lines.dat << EOF > - 1 2 - 4 2 - 4 8 + 1 2 + 4 2 + 4 8 > - 9 2 - 6 2 - 6 8 + 9 2 + 6 2 + 6 8 EOF gmt begin MultiLines gmt basemap -JX10c -R0/10/0/10 -Baf gmt plot lines.dat -W1p,red gmt end show +``` -绘制多个多边形 --------------- +## 绘制多个多边形 使用相同的输入数据,通过加上 **-L** 可以构成闭合多边形,加上 **-G** 为多边形设置填充色。 +```{eval-rst} .. gmtplot:: :width: 50% cat > lines.dat << EOF > - 1 2 - 4 2 - 4 8 + 1 2 + 4 2 + 4 8 > - 9 2 - 6 2 - 6 8 + 9 2 + 6 2 + 6 8 EOF gmt begin MultiPolygons gmt basemap -JX10c -R0/10/0/10 -Baf gmt plot lines.dat -W1p,red -L -Glightred gmt end show +``` -大圆弧路径 ----------- +## 大圆弧路径 在笛卡尔坐标系下,绘制线段时,任意两点之间会以直线方式连接; 而在地理投影下,任意两点之间则使用大圆弧路径方法会连接。 @@ -208,12 +224,13 @@ 我们加上了 **-A** 选项再次绘制了这两点之间的连线(蓝色,以直线方式连接)。 从中可以看到 **-A** 选项的效果。 +```{eval-rst} .. gmtplot:: :width: 80% cat > twopoints.dat << EOF - 115 30 - 250 30 + 115 30 + 250 30 EOF gmt begin map @@ -221,3 +238,4 @@ gmt plot twopoints.dat -W2p,red gmt plot twopoints.dat -W2p,blue -A gmt end show +``` diff --git a/source/tutorial/multifig.md b/source/tutorial/multifig.md new file mode 100644 index 0000000000..ef26b97846 --- /dev/null +++ b/source/tutorial/multifig.md @@ -0,0 +1,33 @@ +# GMT 多图模式 + +如果你想要在一个脚本中同时绘制多张图,并且想要在多张图之间来回切换,则需要使用 +{doc}`/module/figure` 模块。 + +{doc}`/module/figure` 的用法与 {doc}`/module/begin` 相同,唯一的区别在于, +你可以在 **gmt begin** 和 **gmt end** 中多次使用 **gmt figure** 来创建新图, +或激活已有的图。 + +下面的示例中,我们使用 **figure** 模块在一个脚本中指定了两张图,并不断在 +两张图之间来回切换: + +``` +gmt begin + # Create Fig1 and plot a base map in Fig1 + gmt figure Fig1 png + gmt basemap -R0/10/0/10 -JX10c -Baf + + # Create Fig2 and plot a base map in Fig2 + gmt figure Fig2 png + gmt basemap -R0/5/0/5 -JX10c -Baf + + # Switch back to Fig1 and plot a circle + gmt figure Fig1 + echo 5 5 | gmt plot -Sc1c -W2p + + # Switch back to Fig2 and plot a triangle + gmt figure Fig2 + echo 1 2 | gmt plot -St1c -W1p +gmt end show +``` + +最终会生成两张图,第一张图中在底图中绘制了圆圈,第二张图中则在底图中绘制了三角形。 diff --git a/source/tutorial/multifig.rst b/source/tutorial/multifig.rst deleted file mode 100644 index 1a982a7b78..0000000000 --- a/source/tutorial/multifig.rst +++ /dev/null @@ -1,32 +0,0 @@ -GMT 多图模式 -============ - -如果你想要在一个脚本中同时绘制多张图,并且想要在多张图之间来回切换,则需要使用 -:doc:`/module/figure` 模块。 - -:doc:`/module/figure` 的用法与 :doc:`/module/begin` 相同,唯一的区别在于, -你可以在 **gmt begin** 和 **gmt end** 中多次使用 **gmt figure** 来创建新图, -或激活已有的图。 - -下面的示例中,我们使用 **figure** 模块在一个脚本中指定了两张图,并不断在 -两张图之间来回切换:: - - gmt begin - # Create Fig1 and plot a base map in Fig1 - gmt figure Fig1 png - gmt basemap -R0/10/0/10 -JX10c -Baf - - # Create Fig2 and plot a base map in Fig2 - gmt figure Fig2 png - gmt basemap -R0/5/0/5 -JX10c -Baf - - # Switch back to Fig1 and plot a circle - gmt figure Fig1 - echo 5 5 | gmt plot -Sc1c -W2p - - # Switch back to Fig2 and plot a triangle - gmt figure Fig2 - echo 1 2 | gmt plot -St1c -W1p - gmt end show - -最终会生成两张图,第一张图中在底图中绘制了圆圈,第二张图中则在底图中绘制了三角形。 diff --git a/source/tutorial/oneliner.md b/source/tutorial/oneliner.md new file mode 100644 index 0000000000..c93e3d19e6 --- /dev/null +++ b/source/tutorial/oneliner.md @@ -0,0 +1,33 @@ +# GMT 单行模式 + +在之前的教程中,有很多示例都只需要一个 GMT 命令即可完成绘图。比如: + +``` +gmt begin GlobalMap + gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" +gmt end show +``` + +在这种简单的情况下,每次都需要写 **gmt begin** 和 **gmt end** 未免有些麻烦。 + +针对这种简单情况,GMT 提供了 “单行模式”。即当绘图只需要一个 GMT 命令时, +可省略 **gmt begin** 和 **gmt end**,只需要在绘图命令后加上 +**-***format* *figname* 即可。 + +例如,上面的三行命令可以用单行模式写成一行命令: + +``` +gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" -pdf,png GlobalMap +``` + +命令一下子就简单了很多,也可以直接将命令复制粘贴到终端执行。 + +显然,单行模式只适用于单个命令成图的情况,而大部分实际绘图都需要多个命令才能实现。 + +:::{note} +GMT 官方文档以及本手册中,很多示例都只需使用单个 GMT 命令来展示某个模块的用法或 +某个选项的绘图效果。 + +出于简化代码的考虑,本手册中的很多演示示例都采用了 GMT 单行模式。 +读者应理解其中的差异,并了解如何修改单行模式的命令并应用到自己的实际绘图脚本中。 +::: diff --git a/source/tutorial/oneliner.rst b/source/tutorial/oneliner.rst deleted file mode 100644 index 6612f8eaad..0000000000 --- a/source/tutorial/oneliner.rst +++ /dev/null @@ -1,30 +0,0 @@ -GMT 单行模式 -============ - -在之前的教程中,有很多示例都只需要一个 GMT 命令即可完成绘图。比如:: - - gmt begin GlobalMap - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" - gmt end show - -在这种简单的情况下,每次都需要写 **gmt begin** 和 **gmt end** 未免有些麻烦。 - -针对这种简单情况,GMT 提供了 “单行模式”。即当绘图只需要一个 GMT 命令时, -可省略 **gmt begin** 和 **gmt end**,只需要在绘图命令后加上 -**-**\ *format* *figname* 即可。 - -例如,上面的三行命令可以用单行模式写成一行命令:: - - gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My First Plot" -pdf,png GlobalMap - -命令一下子就简单了很多,也可以直接将命令复制粘贴到终端执行。 - -显然,单行模式只适用于单个命令成图的情况,而大部分实际绘图都需要多个命令才能实现。 - -.. note:: - - GMT 官方文档以及本手册中,很多示例都只需使用单个 GMT 命令来展示某个模块的用法或 - 某个选项的绘图效果。 - - 出于简化代码的考虑,本手册中的很多演示示例都采用了 GMT 单行模式。 - 读者应理解其中的差异,并了解如何修改单行模式的命令并应用到自己的实际绘图脚本中。 diff --git a/source/tutorial/scripting/bash.md b/source/tutorial/scripting/bash.md new file mode 100644 index 0000000000..6243eae64f --- /dev/null +++ b/source/tutorial/scripting/bash.md @@ -0,0 +1,83 @@ +# Bash 编程基础知识 + +## Bash 基础 + +用文本编辑器创建一个后缀名为 **.sh** 的文件,向其中写入 Bash 命令并保存,即得到一个 Bash 脚本。 + +打开终端,在终端中输入 `bash script.sh`,即可执行 Bash 脚本 {file}`script.sh`。 +也可以执行命令 `chmod +x script.sh` 给脚本可执行权限,然后即可在终端输入 +`./script.sh`运行 “可执行” 的脚本。 + +下面的 Bash 脚本展示并解释了 Bash 中常用的语法: + +```bash +#!/usr/bin/env bash +# 脚本的第一行叫 shebang,用来告知系统如何执行该脚本: +# 参见: http://en.wikipedia.org/wiki/Shebang_(Unix) +# 以 # 开头的行是注释行,在脚本执行时会被忽略 + +# echo 命令用于显示后面的字符 +echo Hello world! + +# 声明一个变量 +# 注意:= 两边不能有空格!projection="X10c/10c" +region="0/10/0/10" + +# 在变量名前加上 $ 符号即可引用该变量的值 +echo $projection $region + +# 执行 GMT 命令 +gmt begin map +gmt basemap -J$projection -R$region -Baf + +# 输入数据 +# 有些命令需要读入数据。Bash 中有多种方法可以将数据传递给一个命令: +# 1. 将数据保存到文件中,并在命令中指定数据文件名 +# 下面的命令会读取文件 input.dat 中的数据 +gmt plot input.dat -W1p + +# 2. 通过管道符号 | 将前一个命令的输出作为后一个命令的输入 +# 下面的命令中,echo 命令输出了 5 5,该输出通过管道被传递给了 GMT 命令作为输入 +echo 5 5 | gmt plot -Sc0.5c + +# 3. 使用 heredoc 将两个 EOF 之间的数据传给命令 +# 下面的命令中,<< EOF 表示将接下来到 EOF 为止的内容传递给命令 +gmt plot -Sc0.5c << EOF +1 2 +3 4 +5 6 +EOF + +# 输出数据 +# 很多命令都会输出一些数据或信息。默认情况下,输出会在终端显示。为了将数据保存到文件中,需要使用重定向符号。 +# 常用的重定向符号主要有两个: > 和 >> +# > 表示将数据输出到文件中。若文件不存在,则创建该文件;若文件已存在,则覆盖该文件的原内容; +# >> 表示将数据追加到文件中。若文件不存在,则创建该文件;若文件已存在,则将数据追加到原内容的后面; +echo 1 3 Point1 > tmp.txt +echo 2 5 Point2 >> tmp.txt +echo 4 2 Point3 >> tmp.txt +# 此时文件中有三行内容 + +# 倒引号 +# 倒引号的作用是将一个命令的输出保存到一个变量中,供后面的命令使用 +# 下面将 gmt info 的输出保存到变量 new_region 中,并在接下来的命令中使用了该变量的值 +new_region=`gmt info input.dat -I1/1` +gmt plot input.dat -J$projection $new_region + +# 长命令续行符 +# 当一个命令较长时,可以将命令拆分为多行,每行行末用续行符 \ 表示下一行命令 +# 需要接在当前命令的后面 +gmt coast -A1000 -Dc -ECN -W1/1p \ + -Glightblue -Slightred + +gmt end show + +# rm 命令删除文件 +rm tmp.txt +``` + +## Linux 常用命令 + +Bash 脚本本身功能有限,因而经常需要与 Linux 下的命令结合在一起使用。 + +- [《地震“学”科研入门教程:Linux 常用命令》](https://seismo-learn.org/seismology101/computer/commands/) diff --git a/source/tutorial/scripting/bash.rst b/source/tutorial/scripting/bash.rst deleted file mode 100644 index e6dee6f09f..0000000000 --- a/source/tutorial/scripting/bash.rst +++ /dev/null @@ -1,86 +0,0 @@ -Bash 编程基础知识 -================= - -Bash 基础 ---------- - -用文本编辑器创建一个后缀名为 **.sh** 的文件,向其中写入 Bash 命令并保存,即得到一个 Bash 脚本。 - -打开终端,在终端中输入 ``bash script.sh``\,即可执行 Bash 脚本 :file:`script.sh`。 -也可以执行命令 ``chmod +x script.sh`` 给脚本可执行权限,然后即可在终端输入 -``./script.sh``\ 运行 “可执行” 的脚本。 - -下面的 Bash 脚本展示并解释了 Bash 中常用的语法: - -.. code-block:: bash - - #!/usr/bin/env bash - # 脚本的第一行叫 shebang,用来告知系统如何执行该脚本: - # 参见: http://en.wikipedia.org/wiki/Shebang_(Unix) - # 以 # 开头的行是注释行,在脚本执行时会被忽略 - - # echo 命令用于显示后面的字符 - echo Hello world! - - # 声明一个变量 - # 注意:= 两边不能有空格!projection="X10c/10c" - region="0/10/0/10" - - # 在变量名前加上 $ 符号即可引用该变量的值 - echo $projection $region - - # 执行 GMT 命令 - gmt begin map - gmt basemap -J$projection -R$region -Baf - - # 输入数据 - # 有些命令需要读入数据。Bash 中有多种方法可以将数据传递给一个命令: - # 1. 将数据保存到文件中,并在命令中指定数据文件名 - # 下面的命令会读取文件 input.dat 中的数据 - gmt plot input.dat -W1p - - # 2. 通过管道符号 | 将前一个命令的输出作为后一个命令的输入 - # 下面的命令中,echo 命令输出了 5 5,该输出通过管道被传递给了 GMT 命令作为输入 - echo 5 5 | gmt plot -Sc0.5c - - # 3. 使用 heredoc 将两个 EOF 之间的数据传给命令 - # 下面的命令中,<< EOF 表示将接下来到 EOF 为止的内容传递给命令 - gmt plot -Sc0.5c << EOF - 1 2 - 3 4 - 5 6 - EOF - - # 输出数据 - # 很多命令都会输出一些数据或信息。默认情况下,输出会在终端显示。为了将数据保存到文件中,需要使用重定向符号。 - # 常用的重定向符号主要有两个: > 和 >> - # > 表示将数据输出到文件中。若文件不存在,则创建该文件;若文件已存在,则覆盖该文件的原内容; - # >> 表示将数据追加到文件中。若文件不存在,则创建该文件;若文件已存在,则将数据追加到原内容的后面; - echo 1 3 Point1 > tmp.txt - echo 2 5 Point2 >> tmp.txt - echo 4 2 Point3 >> tmp.txt - # 此时文件中有三行内容 - - # 倒引号 - # 倒引号的作用是将一个命令的输出保存到一个变量中,供后面的命令使用 - # 下面将 gmt info 的输出保存到变量 new_region 中,并在接下来的命令中使用了该变量的值 - new_region=`gmt info input.dat -I1/1` - gmt plot input.dat -J$projection $new_region - - # 长命令续行符 - # 当一个命令较长时,可以将命令拆分为多行,每行行末用续行符 \ 表示下一行命令 - # 需要接在当前命令的后面 - gmt coast -A1000 -Dc -ECN -W1/1p \ - -Glightblue -Slightred - - gmt end show - - # rm 命令删除文件 - rm tmp.txt - -Linux 常用命令 --------------- - -Bash 脚本本身功能有限,因而经常需要与 Linux 下的命令结合在一起使用。 - -- `《地震“学”科研入门教程:Linux 常用命令》 `__ diff --git a/source/tutorial/scripting/batch.md b/source/tutorial/scripting/batch.md new file mode 100644 index 0000000000..fd68ae4307 --- /dev/null +++ b/source/tutorial/scripting/batch.md @@ -0,0 +1,107 @@ +# Batch 编程基础知识 + +## Batch 基础 + +新建一个文本文件,将后缀改为 **.bat**,向文件中写入 Batch 命令并保存,即得到一个 Batch 脚本。 + +双击该 Batch 脚本即可直接运行,也可以打开 CMD 窗口,再输入 Batch 脚本名以运行脚本。 + +下面的 Batch 脚本展示并解释了 Batch 脚本中常用的语法: + +```batch +REM 以 REM 开头的行是注释行,在脚本执行时会被忽略 + +REM echo 命令用于显示后面的字符 +echo Hello world! + +REM 使用 set 命令声明一个变量 +set projection="X10c/10c" +set region="0/10/0/10" + +REM 在变量名前后加上 % 即可引用该变量的值 +echo %projection% %region% + +REM 执行 GMT 命令 +gmt begin map +gmt basemap -J%projection% -R%region% -Baf + +REM 输入数据 +REM 有些命令需要读入数据。Bash 中有多种方法可以将数据传递给一个命令: +REM 1. 将数据保存到文件中,并在命令中指定数据文件名 +REM 下面的命令会读取文件 input.dat 中的数据 +gmt plot input.dat -W1p + +REM 2. 通过管道符号 | 将前一个命令的输出作为后一个命令的输入 +REM 下面的命令中,echo 命令输出了 5 5,该输出通过管道被传递给了 GMT 命令作为输入 +echo 5 5 | gmt plot -Sc0.5c + +REM 输出数据 +REM 很多命令都会输出一些数据或信息。默认情况下,输出会在终端显示。为了将数据保存到文件中,需要使用重定向符号。 +REM 常用的重定向符号主要有两个: > 和 >> +REM > 表示将数据输出到文件中。若文件不存在,则创建该文件;若文件已存在,则覆盖该文件的原内容; +REM >> 表示将数据追加到文件中。若文件不存在,则创建该文件;若文件已存在,则将数据追加到原内容的后面; +echo 1 3 Point1 > tmp.txt +echo 2 5 Point2 >> tmp.txt +echo 4 2 Point3 >> tmp.txt +REM 此时文件中有三行内容 + +REM 将命令的输出保存到变量中 +REM Batch 中可以将命令的输出写到文件中,然后用 set /p var= tmp.dat +set /p new_region= tmp.dat + set /p var= tmp.dat + echo 3 4 >> tmp.dat + echo 5 6 >> tmp.dat + gmt plot tmp.dat + ``` diff --git a/source/tutorial/scripting/batch.rst b/source/tutorial/scripting/batch.rst deleted file mode 100644 index 857b2a7aea..0000000000 --- a/source/tutorial/scripting/batch.rst +++ /dev/null @@ -1,100 +0,0 @@ -Batch 编程基础知识 -================== - -Batch 基础 ----------- - -新建一个文本文件,将后缀改为 **.bat**,向文件中写入 Batch 命令并保存,即得到一个 Batch 脚本。 - -双击该 Batch 脚本即可直接运行,也可以打开 CMD 窗口,再输入 Batch 脚本名以运行脚本。 - -下面的 Batch 脚本展示并解释了 Batch 脚本中常用的语法: - -.. code-block:: batch - - REM 以 REM 开头的行是注释行,在脚本执行时会被忽略 - - REM echo 命令用于显示后面的字符 - echo Hello world! - - REM 使用 set 命令声明一个变量 - set projection="X10c/10c" - set region="0/10/0/10" - - REM 在变量名前后加上 % 即可引用该变量的值 - echo %projection% %region% - - REM 执行 GMT 命令 - gmt begin map - gmt basemap -J%projection% -R%region% -Baf - - REM 输入数据 - REM 有些命令需要读入数据。Bash 中有多种方法可以将数据传递给一个命令: - REM 1. 将数据保存到文件中,并在命令中指定数据文件名 - REM 下面的命令会读取文件 input.dat 中的数据 - gmt plot input.dat -W1p - - REM 2. 通过管道符号 | 将前一个命令的输出作为后一个命令的输入 - REM 下面的命令中,echo 命令输出了 5 5,该输出通过管道被传递给了 GMT 命令作为输入 - echo 5 5 | gmt plot -Sc0.5c - - REM 输出数据 - REM 很多命令都会输出一些数据或信息。默认情况下,输出会在终端显示。为了将数据保存到文件中,需要使用重定向符号。 - REM 常用的重定向符号主要有两个: > 和 >> - REM > 表示将数据输出到文件中。若文件不存在,则创建该文件;若文件已存在,则覆盖该文件的原内容; - REM >> 表示将数据追加到文件中。若文件不存在,则创建该文件;若文件已存在,则将数据追加到原内容的后面; - echo 1 3 Point1 > tmp.txt - echo 2 5 Point2 >> tmp.txt - echo 4 2 Point3 >> tmp.txt - REM 此时文件中有三行内容 - - REM 将命令的输出保存到变量中 - REM Batch 中可以将命令的输出写到文件中,然后用 set /p var= tmp.dat - set /p new_region= tmp.dat - set /p var= tmp.dat - echo 3 4 >> tmp.dat - echo 5 6 >> tmp.dat - gmt plot tmp.dat diff --git a/source/tutorial/scripting/index.rst b/source/tutorial/scripting/index.md similarity index 86% rename from source/tutorial/scripting/index.rst rename to source/tutorial/scripting/index.md index c3c36538f6..7c44a7beb6 100644 --- a/source/tutorial/scripting/index.rst +++ b/source/tutorial/scripting/index.md @@ -1,5 +1,4 @@ -脚本编程 -======== +# 脚本编程 本手册中的所有示例及代码都使用 Bash 脚本实现,要求读者对 Bash 脚本语言有最基本的了解。 Windows 用户若使用 Batch 脚本,则需要同时了解 Bash 和 Batch 的语法,并了解如何将 @@ -7,8 +6,9 @@ Windows 用户若使用 Batch 脚本,则需要同时了解 Bash 和 Batch 的 这一节介绍本手册中或 GMT 使用过程中最常用的 Bash 和 Batch 语法,而不涉及不常用或更复杂的语法。 -.. toctree:: - :maxdepth: 1 +```{toctree} +:maxdepth: 1 - bash - batch +bash +batch +``` diff --git a/source/tutorial/started.rst b/source/tutorial/started.md similarity index 55% rename from source/tutorial/started.rst rename to source/tutorial/started.md index 7f2172a48a..7e848b1a2b 100644 --- a/source/tutorial/started.rst +++ b/source/tutorial/started.md @@ -1,21 +1,21 @@ -入门教程 -======== +# 入门教程 《入门教程》通过一系列简单的示例介绍如何使用 GMT 实现最基本的绘图功能, 如绘制底图、海岸线、线段、符号、文字等。初学者应仔细阅读《入门教程》, 并掌握 GMT 的基本用法。 -.. toctree:: - :maxdepth: 1 +```{toctree} +:maxdepth: 1 - get-started/index - commands - scripting/index - basemap - coastline - lines - symbols - texts - legend - earth-relief - layers/index +get-started/index +commands +scripting/index +basemap +coastline +lines +symbols +texts +legend +earth-relief +layers/index +``` diff --git a/source/tutorial/subplot.rst b/source/tutorial/subplot.md similarity index 67% rename from source/tutorial/subplot.rst rename to source/tutorial/subplot.md index 6a6a23993a..6bab42ab99 100644 --- a/source/tutorial/subplot.rst +++ b/source/tutorial/subplot.md @@ -1,32 +1,33 @@ -GMT 子图模式 -============ +# GMT 子图模式 有些时候,尤其是发表文章时,需要将多张独立的图放在一张图中,并编号 abcd, 一般称这些独立的图为子图。 GMT 中有两种方式可以绘制多子图: -- 常规方式:在绘图时使用 :doc:`/option/XY` 手动移动每个子图的原点 -- 现代方式:使用 :doc:`/module/subplot` 模块提供的子图模式来布局和管理多子图 +- 常规方式:在绘图时使用 {doc}`/option/XY` 手动移动每个子图的原点 +- 现代方式:使用 {doc}`/module/subplot` 模块提供的子图模式来布局和管理多子图 现代方式更加简洁易用,建议使用现代方式。仅当图片非常复杂或不规则时,才推荐 使用常规方式。 -子图布局 --------- +## 子图布局 -:doc:`/module/subplot` 模块提供的子图模式可以非常方便地绘制多子图。 +{doc}`/module/subplot` 模块提供的子图模式可以非常方便地绘制多子图。 **subplot begin** 用于设计子图的布局、尺寸以及其它属性。其将整张画布划分为 -N 行 M 列的规则网格区域,每个网格区域内都可以包含一张独立的子图。例如:: +N 行 M 列的规则网格区域,每个网格区域内都可以包含一张独立的子图。例如: - gmt subplot begin 2x3 -Fs5c/3c +``` +gmt subplot begin 2x3 -Fs5c/3c +``` 定义了一个 2 行 3 列的子图布局,注意中间为小写英文字母 **x**, 不是星号或其他符号。**-Fs5c/3c** 则指定了每个子图区域的宽度为 5 厘米, 高度为 3 厘米。相邻子图之间的间隔则可以用 **-M** 选项控制。 最终得到的子图布局如下图所示: +```{eval-rst} .. gmtplot:: :show-code: false :width: 80% @@ -43,33 +44,38 @@ N 行 M 列的规则网格区域,每个网格区域内都可以包含一张独 done gmt subplot end gmt end show +``` **subplot set** 用于激活指定的子图,接下来的所有绘图命令都将在该子图内进行绘制。 为了指定某个子图,则需要知道每个子图的编号。GMT 中可以通过 **行号,列号** 或者 -**索引号**\ (即第几个子图)的方式来指定子图。 +**索引号**(即第几个子图)的方式来指定子图。 -.. note:: - - 行号、列号和索引号,均从 0 开始起算。因而对于一个 N 行 M 列的子图布局而言, - 行号为 0 到 N-1,列号为 0 到 M-1,索引号为 0 到 N*M-1。 +:::{note} +行号、列号和索引号,均从 0 开始起算。因而对于一个 N 行 M 列的子图布局而言, +行号为 0 到 N-1,列号为 0 到 M-1,索引号为 0 到 N\*M-1。 +::: 上图中同样给出了每个子图的编号,图中红色数字为子图的行列号,而括号中的蓝色数字则 是子图的索引号。因而,你可以使用如下命令中的任意一个来激活第三个子图,接下来的所有 -绘图命令均只在第三个子图内进行:: +绘图命令均只在第三个子图内进行: - gmt subplot set 1,0 +``` +gmt subplot set 1,0 - gmt subplot set 3 +gmt subplot set 3 +``` -最后记得使用 **subplot end** 退出子图模式:: +最后记得使用 **subplot end** 退出子图模式: - gmt subplot end +``` +gmt subplot end +``` -第一张子图 ----------- +## 第一张子图 下面就利用上面学到的知识绘制一张 2 行 2 列的子图。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -88,39 +94,42 @@ N 行 M 列的规则网格区域,每个网格区域内都可以包含一张独 gmt basemap -R0/20/0/20 -JX? -Baf -BWSen gmt subplot end gmt end show +``` 在这个例子中,我们用 **subplot begin** 定义了一个 2 行 2 列(**2x2**)的子图布局, 每个子图区域宽 5 厘米高 3 厘米(**-Fs5c/3c**)。除此之外,我们还使用了一些可选 选项对图的细节进行微调: -- **-A**: 对每个子图进行自动编号 abcd -- **-M0.2c/0.1c**: 调整相邻子图之间的空白距离,X 方向间隔为 0.2 厘米,Y 方向间隔为 0.1 厘米 -- **-T"My Subplot Heading"**: 为整张图加上一个总标题 -- 调整子图编号的大小(:term:`FONT_TAG`)、总标题文字大小(:term:`FONT_HEADING`) - 以及总标题相对于底图的偏移量(:term:`MAP_HEADING_OFFSET`) +- **-A**: 对每个子图进行自动编号 abcd +- **-M0.2c/0.1c**: 调整相邻子图之间的空白距离,X 方向间隔为 0.2 厘米,Y 方向间隔为 0.1 厘米 +- **-T"My Subplot Heading"**: 为整张图加上一个总标题 +- 调整子图编号的大小({term}`FONT_TAG`)、总标题文字大小({term}`FONT_HEADING`) + 以及总标题相对于底图的偏移量({term}`MAP_HEADING_OFFSET`) 在子图模式内,我们使用 **subplot set 0** 的方式依次激活每个子图。在每个子图内绘图时, 我们使用了线性投影方式 **-JX?**。通常我们需要指定图片的宽度或高度,这里我们使用了 **?** 让 GMT 根据子图区域的大小自动帮我们选择最合适的子图宽度。 -.. tip:: +:::{tip} +本示例中使用了如下命令来依次激活四个子图: - 本示例中使用了如下命令来依次激活四个子图:: - - gmt subplot set 0 - gmt subplot set 1 - gmt subplot set 2 - gmt subplot set 3 +``` +gmt subplot set 0 +gmt subplot set 1 +gmt subplot set 2 +gmt subplot set 3 +``` - 实际上,我们可以直接使用 **subplot set** 而不指定子图编号,GMT 会自动为我们 - 激活 “下一个” 子图。 +实际上,我们可以直接使用 **subplot set** 而不指定子图编号,GMT 会自动为我们 +激活 “下一个” 子图。 +::: -共用 X/Y 轴 ------------ +## 共用 X/Y 轴 上面示例中的四张子图,每行的两张子图有相同的 Y 轴范围,每列的两张子图有相同的 X 轴范围。此时可以使用 **-S** 选项设置各子图之间共用 X 或 Y 轴。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -133,15 +142,15 @@ X 轴范围。此时可以使用 **-S** 选项设置各子图之间共用 X 或 gmt basemap -R0/20/0/20 -JX? -c gmt subplot end gmt end show +``` -**-SRl** 表示一行内(**R**\ ow\ )的子图共用 Y 轴,且只在左边(**l**)轴显示标注, -**-SCb** 表示一列内(**C**\ olumn\ )的子图共用 X 轴,且只在底部(**b**)轴显示标注。 +**-SRl** 表示一行内(**R**ow)的子图共用 Y 轴,且只在左边(**l**)轴显示标注, +**-SCb** 表示一列内(**C**olumn)的子图共用 X 轴,且只在底部(**b**)轴显示标注。 当然你也可以不使用 **-S** 选项,而是在每个子图中使用不同的 **-B** 选项分别 为每个子图设置不同的轴属性。 -复杂布局 --------- +## 复杂布局 **subplot** 目前尚不支持嵌套。如果想要使用更复杂的子图布局,可以多次调用 **subplot** 并进行人工的调整。 @@ -149,6 +158,7 @@ X 轴范围。此时可以使用 **-S** 选项设置各子图之间共用 X 或 下面的示例中线绘制了一个一行两列的子图布局,然后在其上方绘制了一个等宽的一行 一列的子图布局。 +```{eval-rst} .. gmtplot:: :width: 75% @@ -165,9 +175,10 @@ X 轴范围。此时可以使用 **-S** 选项设置各子图之间共用 X 或 gmt basemap -R0/10/0/10 -JX? -BWSen -Bxa2f1 -Bya2f1 gmt subplot end gmt end show +``` -.. note:: - - 小括号 :kbd:`()` 在 Bash 中有特殊含义,所以子图标签 **(a)** 两边加了单引号, - 避免 Bash 对小括号进行解释。 - 编写 Batch 脚本的 Windows 用户不可以使用单引号,但是可以使用双引号,或者不使用引号。 +:::{note} +小括号 {kbd}`()` 在 Bash 中有特殊含义,所以子图标签 **(a)** 两边加了单引号, +避免 Bash 对小括号进行解释。 +编写 Batch 脚本的 Windows 用户不可以使用单引号,但是可以使用双引号,或者不使用引号。 +::: diff --git a/source/tutorial/symbols.rst b/source/tutorial/symbols.md similarity index 89% rename from source/tutorial/symbols.rst rename to source/tutorial/symbols.md index f8afaa46f5..dc77782e3c 100644 --- a/source/tutorial/symbols.rst +++ b/source/tutorial/symbols.md @@ -1,22 +1,21 @@ -绘制符号 -======== +# 绘制符号 绘制各种类型的符号也是常见的绘图需求之一。GMT 支持绘制十几种常见的符号类型, 还支持自定义复杂的符号类型,足以满足日常的科研绘图需求。这一节将介绍如何 -使用 :doc:`/module/plot` 模块绘制多样的符号。 +使用 {doc}`/module/plot` 模块绘制多样的符号。 -符号一览 --------- +## 符号一览 **plot** 模块绘制符号需要使用 **-S** 选项。**-S** 选项后面紧跟着符号类型代码, 以及符号大小。GMT 中常见的十几种简单符号及其对应的符号类型代码如下图所示。 -比如 **c** 代表圆(**c**\ ircle),**t** 代表三角形(**t**\ riangle)。 +比如 **c** 代表圆(**c**ircle),**t** 代表三角形(**t**riangle)。 +```{eval-rst} .. gmtplot:: symbols.sh :show-code: false +``` -绘制简单符号 ------------- +## 绘制简单符号 以绘制圆圈为例,通过查询文档或者看上图可知,圆圈对应的符号类型代码为 **c**。 **-Sc0.5c** 则表示绘制直径为 0.5 厘米的圆圈。 @@ -24,6 +23,7 @@ 下面的示例中在 (2,3)、(5,6)、(8,2) 三个点绘制了三个直径为 0.5 厘米的圆圈。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -34,10 +34,12 @@ 8 2 EOF gmt end show +``` 与绘制线段和多边形类似,我们可以使用 **-W** 选项控制符号轮廓的画笔属性, 使用 **-G** 选项为符号设置填充色。下面的命令就绘制了三个黑边红色圆圈。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -48,6 +50,7 @@ 8 2 EOF gmt end show +``` 若想要绘制其它符号,则只需要使用对应的符号类型代码即可。例如,将 **-Sc0.5c** 改成 **-St0.5c** 则会绘制三角形。 @@ -56,8 +59,7 @@ 此时输入数据中除了需要长方形的 X 和 Y 坐标之外,还需要长方形的宽和高,因而输入 数据需要四列。对于这些输入数据稍复杂的符号,可以阅读文档以了解其输入数据的格式。 -大小变化的符号 --------------- +## 大小变化的符号 若想要绘制大小变化的符号,则需要在输入数据中额外加上一列以控制每个符号的大小, 同时,在 **-S** 选项中则不再需要指定符号大小。 @@ -65,6 +67,7 @@ 下面的示例中,**-Sc** 中没有指定圆圈大小,此时输入数据的第三列控制圆圈大小。 由此,我们即得到了大小变化的符号。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -75,9 +78,9 @@ 8 2 0.5 EOF gmt end show +``` -颜色变化的符号 --------------- +## 颜色变化的符号 前面提到,使用 **-G** 选项可以为符号填充颜色,但其只能同时为所有符号指定单一的颜色。 如果想要让符号的颜色根据某个数值的不同而使用不同的颜色,则需要使用 **-C** 选项。 @@ -94,6 +97,7 @@ X 和 Y 坐标的基础上额外加一列 Z 值,用于控制符号的填充色 同时,对于输入数据,我们额外增加一列(通常称这一列为 Z 值),该列的值决定了符号的 填充色。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -105,18 +109,19 @@ X 和 Y 坐标的基础上额外加一列 Z 值,用于控制符号的填充色 8 2 2 EOF gmt end show +``` -绘制不同的符号 --------------- +## 绘制不同的符号 前面说到,**-S** 选项中指定不同的符号类型代码则代表绘制不同的符号,但每次只能 指定一种符号类型代码。如果想要不同的数据使用不同的符号绘制,则可以只指定符号大小 而不指定符号类型代码,并在输入数据的最后一列指定符号类型代码。 下面的示例中,我们使用 **-S0.5c** 指定了符号的大小,但是没有指定符号类型。 -输入数据的最后一列中 **c**、**t**\ 和 **i** 则分别为三个数据指定了各自的 +输入数据的最后一列中 **c**、**t**和 **i** 则分别为三个数据指定了各自的 符号类型。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -128,20 +133,23 @@ X 和 Y 坐标的基础上额外加一列 Z 值,用于控制符号的填充色 8 2 i EOF gmt end show +``` -大小、颜色和符号类型都变化的符号 --------------------------------- +## 大小、颜色和符号类型都变化的符号 前面介绍了如何绘制大小变化或颜色变化或符号类型变化的符号。那么如何实现颜色、大小 以及符号三者都变化的符号呢?可以使用 **-S** 但不指定符号类型以及符号大小,同时 使用 **-C** 选项。 -关键问题在于,此时的数据数据格式是怎样的。根据 GMT 的规定,此时输入数据的格式为:: +关键问题在于,此时的数据数据格式是怎样的。根据 GMT 的规定,此时输入数据的格式为: - X Y Z size symbol +``` +X Y Z size symbol +``` 即第三列控制符号填充色,第四列为符号大小,最后一列为符号类型代码。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -153,3 +161,4 @@ X 和 Y 坐标的基础上额外加一列 Z 值,用于控制符号的填充色 8 2 2 0.5 i EOF gmt end show +``` diff --git a/source/tutorial/texts.rst b/source/tutorial/texts.md similarity index 75% rename from source/tutorial/texts.rst rename to source/tutorial/texts.md index bbbf433e7e..97ea8d6c90 100644 --- a/source/tutorial/texts.rst +++ b/source/tutorial/texts.md @@ -1,19 +1,20 @@ -添加文字 -======== +# 添加文字 -GMT 的 :doc:`/module/text` 模块可以用于添加文字。 +GMT 的 {doc}`/module/text` 模块可以用于添加文字。 -最简单的示例 ------------- +## 最简单的示例 若需要添加文字,则输入数据中必须给出文字的 X 和 Y 坐标以及具体的文字。 -因而,输入数据有三列:: +因而,输入数据有三列: - X Y text +``` +X Y text +``` 下面的示例首先用 **basemap** 模块绘制了一张底图,然后使用 **text** 模块 在底图的不同位置添加了文字。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -25,23 +26,24 @@ GMT 的 :doc:`/module/text` 模块可以用于添加文字。 5 5 GMT TEXT3 EOF gmt end show +``` -文字属性 --------- +## 文字属性 当然,我们可以为文字设置更丰富的属性,比如文字大小、字体、文字颜色以及文字旋转角度等。 这可以通过 **-F** 选项来实现。 -**-F+f**\ *font* 可以设置文字的属性,包括文字大小、字体和颜色,三者之间用逗号分隔。 +**-F+f***font* 可以设置文字的属性,包括文字大小、字体和颜色,三者之间用逗号分隔。 **-F+a** 则可以设置文字的旋转角度。 -.. note:: - - GMT 默认支持 35 种字体,可以使用 ``gmt text -L`` 查看 GMT 支持的字体名及其对应的字体编号。 +:::{note} +GMT 默认支持 35 种字体,可以使用 `gmt text -L` 查看 GMT 支持的字体名及其对应的字体编号。 +::: 下面的示例中,**-F+f16p,1,red+a30** 即表示文字大小为 16p,字体为 1 号字体,颜色为红色, 文字旋转角度为 30 度。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -53,9 +55,9 @@ GMT 的 :doc:`/module/text` 模块可以用于添加文字。 5 5 GMT TEXT3 EOF gmt end show +``` -文本框 ------- +## 文本框 对于每个文本字符串,我们还可以为其加上文本框。 @@ -63,6 +65,7 @@ GMT 的 :doc:`/module/text` 模块可以用于添加文字。 - **-G** 选项控制文本框的填充色 - **-C** 选项控制文字与文本框之间的空白 +```{eval-rst} .. gmtplot:: :width: 60% @@ -74,24 +77,25 @@ GMT 的 :doc:`/module/text` 模块可以用于添加文字。 5 5 GMT TEXT3 EOF gmt end show +``` -对齐方式 --------- +## 对齐方式 对于任意一个文本,我们还可以设置其对齐方式与偏移量。GMT 中文本的默认对齐方式 为居中对齐,即将整个文本的中心放在指定的 X 和 Y 坐标处。当然,用户也可以自行指定 文本的对齐方式。 文本的对齐方式由水平对齐方式和垂直对齐方式共同决定。水平对齐方式有三种: -左对齐(**L**\ eft)、居中对齐(**C**\ enter)和右对齐(**R**\ ight)。 -垂直对齐方式有三种:顶部对齐(**T**\ op)、居中对齐(**M**\ iddle)和 -底部对齐(**B**\ ottom)。三种水平对齐方式和三种垂直对齐方式,构成了文本的 9 种 +左对齐(**L**eft)、居中对齐(**C**enter)和右对齐(**R**ight)。 +垂直对齐方式有三种:顶部对齐(**T**op)、居中对齐(**M**iddle)和 +底部对齐(**B**ottom)。三种水平对齐方式和三种垂直对齐方式,构成了文本的 9 种 对齐方式。 **-F+j** 用于指定文本对齐方式。下面的示例中,**-F+jTL** 表示文本对齐方式 -为 **TL**\ (Top + Left),即表示以左上角方式对齐。从下图中可以看到,三个 +为 **TL**(Top + Left),即表示以左上角方式对齐。从下图中可以看到,三个 文本框的左上角被放在了 (5,1)、(5,3) 和 (5,5) 处。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -103,13 +107,14 @@ GMT 的 :doc:`/module/text` 模块可以用于添加文字。 5 5 GMT TEXT3 EOF gmt end show +``` -文本偏移量 ----------- +## 文本偏移量 使用 **-D** 选项还可以对文本设置额外的偏移量。下面的示例中, **-D0.5c/0.5c** 分别设置了文本在 X 方向和 Y 方向的偏移量。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -121,22 +126,25 @@ GMT 的 :doc:`/module/text` 模块可以用于添加文字。 5 5 GMT TEXT3 EOF gmt end show +``` -变化的文字属性 --------------- +## 变化的文字属性 如果想要不同的文字有不同的文本属性,可以多次调用 **text** 模块,每次设置不同的 文本属性。当然,还有更加灵活的办法,可以一个命令中实现变化的文字属性。 下面的例子中,使用了 **-F+f+a+j** 选项。上面已经介绍到,**+f** 设置文本属性, **+a** 设置文本旋转角度,**+j** 设置文本对齐方式。但我们并没有指定具体的属性 -值,因而需要在输入数据中增加额外的数据列。输入数据的格式由 **+f**、**+a**\ 和 -**+j** 的顺序决定,因而此时输入数据的格式为:: +值,因而需要在输入数据中增加额外的数据列。输入数据的格式由 **+f**、**+a**和 +**+j** 的顺序决定,因而此时输入数据的格式为: - X Y font angle justification text +``` +X Y font angle justification text +``` 下面的示例中,第三列为字体属性,第四列为文本旋转角度,第五列为文本对齐方式。 +```{eval-rst} .. gmtplot:: :width: 60% @@ -148,3 +156,4 @@ GMT 的 :doc:`/module/text` 模块可以用于添加文字。 5 5 18p,2,yellow 180 TL GMT TEXT3 EOF gmt end show +```