---
author: 朱邓达, 田冬冬
date: 2025-06-08
---

```{index} ! fill
```

# 填充

用画笔绘制了圆形或多边形之后，还可以为其填充颜色。在GMT模块的语法介绍中，一般用
*fill* 表示需要指定填充属性，读者在见到 *fill* 时应自动联想到本节介绍的内容。

填充 *fill* 有两种方式/形式：填充颜色和填充图案。

最常见的情况是使用 **plot** 模块绘制一个多边形区域或一个符号，然后使用
**-G***fill* 选项为其填充颜色。为了方便描述，这一节以 **-G***fill* 为例。

## 填充颜色

给多边形或符号填充颜色很简单，直接用 **-G***color* 即可。
颜色在 {doc}`color` 一节已经介绍过了。比如 **-Gred** 表示填充色为红色，
**-G230/200/0** 表示填充色为 **230/200/0**。

## 填充图案

除了可以填充颜色之外，还可以使用填充图案（pattern）。
比如地质图里经常会给不同区域填充不同的图案以区分不同的地质结构。其语法为：
**-GP**|**p***pattern*\[**+b***color*\]\[**+f***color*\]\[**+r***dpi*\]

*pattern* 有两种取法：

- 取1到90内的整数，表示使用GMT提供的{ref}`GMT预定义填充图案 <GMT_patterns>`
- 取文件名，表示使用一个1、8或24位Sun光栅文件作为位图图案

**+r***dpi* 设置了用于填充的位图图案的分辨率。*dpi* 越大，则填充区域内位图
重复的次数越多。*dpi* 的默认值为1200。

若使用 **-GP** 而不是 **-Gp**，则图案会发生位反转，即白色区域变成黑色，黑色区域
变成白色（仅对1位位图或GMT预定义位图图案有效）。

对于GMT预定义的图案以及用户自定义的1位位图来说，可以用 **+b***color* 和 **+f***color*
分别设置图案的前景色和背景色，以分别替换默认的黑色和白色像素点。
若只给 **+b** 和 **+f** 而不指定颜色，则视为前景色或背景色为透明。

:::{note}
1. 使用的光栅图片必须小于146x146像素；
   若要使用更大的图像，需要使用 {doc}`/module/image` 模块
2. 默认只能使用Sun光栅文件。若GMT在编译时链接了GDAL，则也可以使用其它格式的
   图片作为填充图案
3. 图案填充是通过使用多边形做路径裁剪实现的。复杂的
   裁剪路径会需要更多的内存，因而可能导致某些PS解释器由于内存不足而退出。
   在这种情况下，建议使用灰度填充区域
:::

## 小练习

下面使用 {doc}`/module/plot` 模块在底图中心绘制了一个直径为4厘米的圆，并填充颜色:

```
echo 5 5 | gmt plot -JX10c/10c -R0/10/0/10 -Baf -Sc4c -Gfill -pdf test
```

请尝试将命令中的 **-G***fill* 中的 *fill* 修改为以下不同的值并查看效果以
理解这一节的内容：

- **-G128**
- **-G127/255/0**
- **-G#00ff00**
- **-G25-0.86-0.82**
- **-GDarkOliveGreen1**
- **-Gp7+r300**
- **-Gp12+r300**
- **-Gp7+r1000**
- **-GP7+r1000**
- **-Gp7+bred+r300**
- **-Gp7+bred+f-+r300**

(gmt_patterns)=

## 附录: GMT预定义填充图案

下图列出了GMT中预定义的90种位图图案（右键查看大图并放大才能看到差异），所有图案
都是使用默认的黑白色在 *dpi*=300的环境下生成的。每张小图中左半部分使用
**-Gp** 绘制，右半部分使用 **-GP** 绘制。

:::{figure} GMT_patterns.*
:align: center
:width: 80%

GMT内置位图图案
:::

**下载：**
{download}`PDF 格式 <GMT_patterns.pdf>` |
{download}`PNG 格式 <GMT_patterns.png>`
