---
author: 田冬冬, 姚家园, 朱邓达, 陈箫翰, 何星辰
date: 2026-01-08
---

# -R 选项

**-R** 选项用于指定要绘制的数据范围或地图区域。该选项的参数可以用多种方式指定，
同时支持六种不同类型的数据坐标。

## -R 选项的多种方式

可以用以下多种方式指定数据范围。

### 通用方式

1. **-R***xmin*/*xmax*/*ymin*/*ymax*

   通过给定 X 方向和 Y 方向的最大最小值来指定数据范围。这是最常用的方式，适用于笛卡尔坐标系以及经纬线为直线的地图投影。
   例如 **-R0/360/-90/90**。

2. **-R**_xlleft_/*ylleft*/*xuright*/_yuright_**+r**

   通过给定矩形区域的左下角坐标 (*xlleft*, *ylleft*) 和右上角坐标 (*xuright*, *yuright*) 来指定数据范围。
   该方式适用于笛卡尔坐标系，以及由于地图投影导致经纬线不是直线的地理区域。使用这种形式可以保证输出的区域是矩形。

3. **-R**_gridfile_

   直接从 2D 网格文件 *gridfile* 中提取范围信息。
   对于某些模块，该方式不仅会从网格中读取范围信息，
   还会读入网格间隔和网格配准信息（见 {doc}`/option/nodereg`）。

4. **-Ra**[**uto**] 或 **-Re**[**xact**]

   在现代模式下，绘图模块可以根据输入数据自动确定区域。
   **-Re**（默认值）指定确切的数据范围，**-Ra** 则会稍微向外扩展到合适的增量倍数。

5. **-R**_anchor_*x0*/*y0*/*nx*/*ny*

   常用于创建网格。由参考点 *anchor*（见 {doc}`/basis/anchor`）、其坐标 *x0/y0*、点数 *nx/ny* 以及网格间隔（通常由 **-I** 指定）共同决定范围。

### 地理/地图专用方式

6. **-Rg** 或 **-Rd**

   指定全球范围。**-Rg** 表示 0/360/-90/90，**-Rd** 表示 -180/180/-90/90。

7. **-R***xmin*/*xmax*/*ymin*/*ymax*\ **+u**_unit_

   在投影后的单位（如 UTM 米）下指定区域。*xmin/xmax/ymin/ymax* 为投影坐标，
   *unit* 为距离单位（见 {doc}`/basis/unit`）。GMT 会根据 {doc}`/option/J` 设定的投影方式反算出地理范围。
   对于中心为 (0,0) 的区域，可简写为 **-R**_halfwidth_[/*halfheight*]**+u**_unit_。

8. **-R**_code1_,*code2*,*…*\[**+e**|**r**|**R**\[*incs*\]\]

   通过国家或地区代码（如 `CN`、`US.TX`）间接指定区域，详情见 {doc}`/dataset/dcw/index` 一节。
   可用 **+e**|**r**|**R** 修饰符对范围进行扩展或取整。


```{eval-rst}
.. gmtplot:: R.sh
    :show-code: false

    **-R** 选项指定数据范围。

    (左) 指定每个维度的极值；(右) 指定左下角和右上角的坐标。
```

## 支持六种坐标

GMT 支持绘制多种类型的坐标轴，如地理坐标轴（即经纬度轴）、时间轴（绝对时间轴和相对时间轴）
以及笛卡尔轴等，具体请参考 {doc}`/option/B`。不同的坐标轴需要的数据类型也不同，主要分为以下四大类：

1. {ref}`地理坐标 <geographic_coordinates>`
2. {ref}`绝对时间坐标 <absolute_time_coordinates>`
3. {ref}`相对时间坐标 <relative_time_coordinates>`
4. {ref}`一般浮点坐标 <float_coordinates>`

以上四种数据类型都可以用在 **-R** 选项中，用来指定数据范围。
{doc}`/basis/io-format`中已经详细介绍过这四种数据类型，本节不再赘述，
但会简要介绍 **-R** 选项中指定地理坐标数据范围的一些特殊方式。

除了以上四种方式，**-R** 选项还支持使用以下两种方式来指定数据范围：

1. 投影后坐标
2. 弧度坐标

### 地理坐标

对于常用的地图范围，GMT 提供了两个简化写法：

- **-Rg** 等效于 **-R0/360/-90/90**
- **-Rd** 等效于 **-R-180/180/-90/90**

GMT 对于地理投影和线性投影的默认设置有很大区别。有些时候数据是地理坐标，
但是因为某些原因不能选择地理投影，只能选择线性投影（**-JX** 或 **-Jx**），
此时可以通过如下几种方式表明当前数据是地理坐标下的数据，而不是简单的笛卡尔坐标：

1. 使用 **-Rg** 而不是 **0/360/-90/90**
2. 使用 **-Rd** 而不是 **-180/180/-90/90**
3. 使用 **-Rg***xmin/xmax/ymin/ymax* 表明是某个有限范围的地理区域
4. 在范围后加后缀 **W|E|S|N** 或更通用的 **D|G**，如 **-R0/360G/-90/90N**
5. 使用 **-fg** 选项表明输入数据是地理坐标，见 {doc}`/option/f`

:::{note}
推荐使用 **-fg** 这种方式来指定输入数据的类型。
:::

### 投影后坐标

地理坐标可以通过选择投影方式投影成笛卡尔坐标，通过在区域范围后加上 **+u***unit*
来表明这是一个经过投影的地理坐标。

例如 **-R-200/200/-300/300+uk** 表示位于投影中心 **(0,0)** 处的一个 **400km x 600km**
的矩形区域，也可简写为 **-R200/300+uk**。
这些坐标在GMT内部会被转换成区域左下角和右上角的地理坐标。
当你想要用投影单位指定区域时用这种方式会比较方便（例如UTM meters）。

### 弧度坐标

对于以弧度为单位的数据而言，通常会需要指定数据范围是 $\pi$ 的倍数或分数，
此时可以使用 \[**+**|**-**\]\[*s*\]**pi**\[*f*\] 形式，
其中 *s* 和 *f* 可以是任意整数或浮点数，
*s* 表示 **scale** 即倍数，*f* 表示 **fraction** 即分数。

例如 **-2pi/2pi3/0/1** 表示X轴的数据范围是 $-2\pi$ 到 $2/3\pi$，
即相当于-360度到120度。

当使用这种形式时，程序只在 $\pi$ 相关的值处进行标注，即 n 倍的 $\pi$，
$1.5\pi$ 以及 3/4，2/3，1/2，1/3，1/4倍的 $\pi$。
