---
author: 田冬冬, 朱邓达
date: 2025-05-15
---

```{index} ! colors
```

# 颜色

既然是绘图，丰富的颜色是必须的。GMT中可以通过五种不同的方式来指定颜色，即：

1. 颜色名
2. RGB 值
3. HSV 值
4. CMYK 值
5. 灰度值

## 颜色名

通过颜色名指定颜色是最直观的方式了。常见的颜色如 **white**、
**black**、**red**、**orange**、**yellow**、**green**、
**cyan**、**blue**、**magenta**、**gray** （或**grey**）
和 **brown** 等。
除 **white** 和 **black** 之外，其余的几种常见颜色名还可以加上前缀 **light**
或 **dark**，以表示浅色和深色。比如 **lightblue**、**blue**、**darkblue**
分别表示浅蓝、蓝色和深蓝。

所有的颜色名都是不区分大小写的，所以 **lightblue**、**LIGHTBLUE**
或者 **LightBlue** 都是合法的颜色名。

GMT 支持通过颜色名指定663种颜色。下图中列出了GMT支持的所有颜色名及其对应的RGB值。

(color-list)=

:::{figure} GMT_RGBchart_a4.*
:align: center
:width: 100%
:::

**GMT颜色表下载：**
{download}`A4 PNG 格式 <GMT_RGBchart_a4.png>` |
{download}`A4 PDF 格式 <GMT_RGBchart_a4.pdf>` |
{download}`USLetter PNG 格式 <GMT_RGBchart_letter.png>` |
{download}`USLetter PDF 格式 <GMT_RGBchart_letter.pdf>`

**在以下色标上悬停可显示颜色名称和RGB值，单击可复制到剪贴板。**

```{include} color-picker.html
```


## RGB

即三原色光模型，或又称RGB颜色模型，是一种加色模型，将红（**R**ed）、
绿（**G**reen）、蓝（**B**lue）三原色的色光以不同的比例相加，
以产生多种多样的色光。

GMT中可以通过 *r*/*g*/*b* 的格式来指定RGB颜色，其中 *r*、*g*、*b*
的取值范围都是0到255，三者用斜线 `/` 分开。

RGB颜色示例：

- **0/0/0**：黑色；
- **255/255/255**：白色；
- **255/0/0**：红色；
- **0/255/0**：绿色；
- **0/0/255**：蓝色；

RGB颜色除了可以用上面的表示法之外，还可以用HTML中常用的表示法 **#**_RRGGBB_，
即分别用两位的十六进制数字表示每个颜色通道，0对应的16进制是 **00**，
255对应的16进制是 **FF**。例如 **#000000** 即黑色，**#FF0000** 即红色。
十六进制数用大小写表示均可。

## HSV

通过 *h*-*s*-*v* 格式指定颜色，其中HSV分别代表色相（**H**ue）、
饱和度（**S**aturation）和明度（**V**alue），三者之间用连字号 `-` 分开。

- 色相（**H**）是色彩的基本属性，就是平常所说的颜色名称（如红色、黄色等），
  取值范围为0到360。
- 饱和度（**S**）是指色彩的纯度，越高色彩越纯，低则逐渐变灰，取值范围为0到1。
- 明度（**V**）是色彩的亮度，取值范围为0（dark）到1（light）。

例如 **200-0.1-0.1**。

## CMYK

印刷四分色模式，是彩色印刷时采用的一种套色模式，利用色料的三原色混色原理，
加上黑色油墨，共计四种颜色混合叠加，形成所谓“全彩印刷”。四种标准颜色是：

- **C**yan：青色，又称为天蓝色或是湛蓝
- **M**agenta：品红色，又称为洋红色
- **Y**ellow：黄色
- blac**K**：定位套版色（黑色）

GMT中可以通过 *c*/*m*/*y*/*k*的方式指定CMYK格式的颜色。*c*、*m*、*y*、
*k* 的取值范围均为 0 到 100，用斜线 `/` 分开，例如 **20/30/40/40**。

## 灰色

灰色是常见的一种颜色，而灰色又可以根据灰的不同程度细分为不同的灰色。
指定灰色的办法很简单，用一个数值表示灰度即可，其取值范围为0到255。
例如 0 表示黑色，255 表示白色，128 表示灰色。

除了用灰度表示之外，灰色还可以用前面提到的几种形式表示：

1. 用RGB表示灰度

   灰色本质上就是 *R*=*G*=*B* 的一种颜色。因而 **128/128/128** 代表灰度
   为 128 ，**200/200/200** 代表灰度是 200。

2. 用GMT颜色名表示灰度

   GMT自定义了多个颜色名来表示不同程度的灰色。
   除了前面说过的 **gray**、**lightgray** 和 **darkgray** 之外，
   还有 **gray0**、**gray1** 一直到 **gray100**。
   其中 **gray0** 即黑色，**gray100** 即白色。

## 透明色

每一种颜色，都可以额外指定其透明度。

GMT中可以通过在颜色后加上 **@** 再加上透明度来得到不同程度的透明色。
透明度的取值范围是0到100，0表示不透明，100表示全透明。

例如：**red@25**、**30/25/128@60**。

:::{note}
PS格式不支持透明色。
:::

## 颜色小结

GMT中可以用五种方法指定颜色，分别是：

- 颜色名：**red**
- RGB值：**30/25/128** 或 **#00FA84**
- HSV值：**200-0.1-0.1**
- CMYK值：**0.2/0.3/0.4/0.5**
- 灰度：**30**

## 小练习

下面的命令在底图中心绘制了一个红色圆圈，试着将 `-Gred` 中的 **red** 改为
其它颜色以理解这一节的内容:

```
echo 5 5 | gmt plot -JX10c/10c -R0/10/0/10 -Baf -Sc3c -Gred -pdf colors
```
