✍️ 田冬冬 • 📅 2024-09-09

# -X 和 -Y 选项

-X 和 -Y 选项用于控制绘图原点在X和Y方向的偏移量。

当需要在一张图上绘制多个子图时，通常可以使用GMT提供的 子图模式。 若子图的布局不规则，或对于子图原点有更复杂的需求，则需要使用 -X 和 -Y 选项 移动子图的底图原点的位置。

-X 和 -Y 的用法类似。下面仅以 -X 选项为例介绍其用法。 其语法为：

> -X[a|c|f|r][xshift[u]]

其中 xshift 是新原点相对于当前原点的X方向偏移量，u 为偏移量的单位。

在偏移量之前加上不同的字符表示不同的含义：

- -X2i 或 -Xr2i：在原底图原点的基础上沿X方向偏移2英寸得到新底图原点

- -Xa5c：在原底图原点的基础上沿X方向偏移5厘米得到临时底图坐标， 当前命令执行完成后，底图原点复原到原底图原点

- -Xc：将底图中心放在整张纸的中心

- -Xc3c：将底图中心放在纸张中心，在此基础上沿X方向偏移3厘米

- -Xf4c：在纸张左下角的基础上沿着X方向偏移4厘米得到新底图原点

- -X 不接任何额外参数，则继承前一个GMT命令使用该选项时的参数值

-X 和 -Y 选项的用法介绍起来有些难度，多试试就好。下面举个简单的例子:

    gmt begin test pdf
    gmt basemap -JX5c/2c -R0/5/0/2 -B1
    gmt basemap -B1 -X7c
    gmt basemap -B1 -X-7c -Y4c
    gmt basemap -B1 -X7c
    gmt end show

上图用四个 basemap 命令绘制了四张底图，绘图效果如下：

`Source Code`

-X 和 -Y 移动绘图原点

解释：

1. 第一个命令的绘图原点位于纸张左下角，绘制底图1

2. 第二个将绘图原点右移了7 cm，绘制底图2

3. 为了绘制底图3，第三个命令将底图左移了7 cm，并上移4 cm

4. 第四个命令在底图3的基础上右移7 cm，绘制底图4

实际绘图时会发现一些不方便的地方。比如 -X 和 -Y 的偏移量与前一张底图的 大小息息相关。若修改了前一张底图的大小，则下一张底图的偏移量也需要相应修改。 为解决这一问题，GMT6引入了一种新的语法：

> -X[+|-]w[[+|-|/]xshift[u]]

> -Y[+|-]h[[+|-|/]xshift[u]]

其中 w 和 h 分别表示前一底图的宽度和高度。

看上去语法很复杂，举几个例子：

- -Yh+2c：沿着Y轴上移，上移距离为前一底图高度+2厘米

- -Xw-2c：沿着X轴右移，右移距离为前一底图宽度-2厘米

- -Xw/2：沿着X轴右移，右移距离为前一底图宽度/2

- -Y-h-2c：沿着Y轴下移，下移距离前一底图高度+2厘米

- -X-w+2c：沿着X轴左移，左移距离前一底图宽度-2厘米

因而，上面的示例可以改写为更灵活的版本:

    gmt begin test pdf
    gmt basemap -JX5c/2c -R0/5/0/2 -B1
    gmt basemap -B1 -Xw+2c
    gmt basemap -B1 -X-w-2c -Yh+2c
    gmt basemap -B1 -Xw+2c
    gmt end show