✍️ 周茂 , 田冬冬 , 陈箫翰 , Liming Li , 何星辰 • 📅 2026-02-12

# makecpt

官方文档:

  makecpt

简介:

  制作 CPT 文件

makecpt 是一个帮助制作 CPT 文件的模块。在经典模式中，CPT 文件的内容会输出到屏幕标准输出中。 而在现代模式中，该命令不会生成显式的 CPT 文件，而是隐式地将其自动设置为后续命令的默认 CPT 文件。 因此无法使用经典的 `gmt makecpt xxx > cpt` 方式生成 CPT 文件。如果需要在现代模式中生成 CPT 文件， 则可以使用 `-H` 选项： `gmt makecpt xxx -H > cpt` 。 关于经典模式和现代模式的语法区别，建议阅读 经典模式 → 现代模式 章节。

该命令基于主 CPT 创建用户所需的 CPT，获得的 CPT 可以是离散或连续的，颜色也可相对 主 CPT 反转。如果需使用 GMT 之外的 CPT 作为主 CPT，可在 cpt-city 中查询。

`-T` 选项所指定的 z 值范围以外的数值，分别使用 3 种颜色来表示，分别为：

> - 背景色 (B，background color), 表示低于最小 z 值时所对应的颜色

> - 前景色 (F，foreground color), 表示高于最大 z 值时所对应的颜色

> - 以及 NaN 值颜色 (N)，表示 z 值被定义为 NaN 时对应的颜色，即 z 值未定义的情况

默认情况下，这三种颜色会沿用 `-C` 选项所指定的主 CPT 文件的设置，但也可以使用 `-D` 、 `-M` 以及 `-N` 选项修改。或者使用 set 命令对 COLOR_BACKGROUND、 COLOR_FOREGROUND 与 COLOR_NAN 进行自定义修改。需注意，选项总会覆盖 自定义参数值。

颜色模式 (RGB, HSV, CMYK) 会沿用 `-C` 选项所指定的主 CPT 文件的设置。 或者使用 set 命令对 COLOR_MODEL 进行自定义修改。

## 语法

gmt makecpt [ table ] [ `-A` transparency[+a] ] [ `-C` cpt ] [ `-D`[i|o] ] [ `-E`[nlevels] ] [ `-F`[R|c|g|h|r|x][+c[label]][+k keys] ] [ `-G` zlo/zhi ] [ `-H` ] [ `-I`[c][z] ] [ `-M` ] [ `-N` ] [ `-Q` ] [ `-S` mode ] [ `-T`[min/max/inc[+b|i|l|n]|file|list] ] [ `-V`[level] ] [ `-W`[w] ] [ `-Z` ] [ `-bi` binary ] [ `-di` nodata[+c col] ] [ `-h` headers ] [ `-i` flags ] [ --PAR=value ]

## 输入数据

table

  一个或多个ASCII或二进制表数据。若不提供表数据，则会从标准输入中读取。

> 注意： 输入数据只能和 `-E` 或 `-S` 选项一起配合使用。不使用这些选项时，不需要指定输入数据。

## 可选选项

-A

-A transparency[+a]

  设置透明度，transparency 的取值范围是 0 到 100。 加上 +a 则将该透明度同时应用于前景色、背景色和 NaN 颜色 [默认不透明, 即 transparency 为 0]。

-C

-C[[section/]master_cpt[+h[hinge]][+u|U unit]|local.cpt|color\(_1\),color\(_2\)[,color\(_3\),...]]

  指定主 CPT 名称，CPT 文件或用逗号分割的多个颜色， 以创建一个 CPT。如果不指定参数，则在现代模式下使用当前 CPT（如果可用）。 支持以下多种输入：

  1. 主 CPT 名称，例如 earth （详见 内置CPT ）， 可使用 CPT 名称 master 或包括相对路径的 section/master 来指定（内置 CPT 不可添加 .cpt 扩展名）。

  2. 自定义 CPT 文件 cpt ，例如 local.cpt 。

  3. 自动从多个颜色 color\(_1\),color\(_2\)[,color\(_3\),...] 中创建线性连续的 CPT，其中 z 值从 0 开始， 每添加一种颜色 z 值加 1。在这种情况下， color\(_i\) 可以是 r/g/b (e.g. 255/100/75)， h-s-v (e.g. 180-0.8-1)， c/m/y/k (e.g. 80/50/40/30)，HTML十六进制 (e.g. #aabbcc) 或 颜色名称。逗号之间不能有空格。

  支持以下选项：

  - +h - 对于有软铰链 (soft hinge) 的主 CPT，可指定 hinge 值启用铰链， 而对于有硬铰链 (harde hinge) 的 CPT，可以修改铰链位置 hinge ，但不能禁用。

  - +u - 对于任何其他主 CPT，可以通过指定其原始单位 unit 将其 z 值单位转换为米。

  - +U - 与 +u 类似，但是将 z 值单位从米转换为指定单位 unit 。

  注意 - 对于 +u|U，必须从 e|f|k|M|n|u 中选择一种单位。

-D

-D[i|o]

  不使用参数的 -D 等效于 -Do ，作用是将背景色和前景色分别设置为输出生成的 CPT 文件中最小值和最大值对应的颜色。 -Di 则为使用 `-C` 指定的主 CPT 文件中最小值和最大值对应的颜色。 不设置本项时，GMT 默认使用主 CPT 文件规定的背景色与前景色，或是采用配置参数 COLOR_BACKGROUND、COLOR_FOREGROUND 的设置。

-E

-E[nlevels]

  读取输入数据 table，最后一列为数据的 z 值范围。本选项会生成输出一个适用于该数据文件的 CPT 文件， 数据的 z 值范围会被划分为 nlevels 个等间距颜色区间。如果不给定 nlevels 参数，则默认其等于主 CPT 中的层级数。 本选项根据数据文件自动确定最大最小值，可以替代需要手动设置参数的 `-T` 选项。

  使用 `-i` 选项可选择其他列决定数据 z 值范围，二进制文件则需同时使用 `-bi` 。

-F

-F[R|r|h|c|x][+c[label]][+k keys]

  - -FR ，输出的 CPT 以 r/g/b 灰度值，或名称指定颜色[默认]；

  - -Fr ，输出的 CPT 以 r/g/b 方式指定颜色；

  - -Fh ，输出的 CPT 以 h-s-v 方式指定颜色；

  - -Fc ，输出的 CPT 以 c/m/y/k 方式指定颜色；

  附加 +c 以分类格式输出离散型 CPT。如果追加 label ，则在绘制 CPT 时，每个 分类均创建标签。标签的格式可以是逗号分隔的列表（中间可通过不指定名称来跳过类别）， 也可以通过 start[-] 来指定以 start 为首，依次递增的标签。追加 - 则表示 标签的范围为 start 到 start+1。注意，存在以下特殊情况：

  - 如果使用 +cM 且类别数为 12，则 GMT 会自动创建月份名称列表

  - 如果使用 +cD 且类别数为 7，则创建一周内每天名称列表

  上述两种情况，标签的格式受 FORMAT_TIME_PRIMARY_MAP，GMT_LANGUAGE 和 TIME_WEEK_START 参数影响。

  附加 +k keys 选项表示使用字符而不是数字设置分类 CPT 的键值。keys 可以是 一个文件，其中包含键值列表；keys 也可以是单个字符，例如：D，则键值列表为 D、E、F...。 如果是逗号分隔的键值列表，则应使用 `-T` 选项，而不是该选项。

-G

-G zlo/zhi

  截断主 CPT 文件，将主 CPT 的最小和最大 z 值分别限制为 zlo 与 zhi。上述两值 若设置为 NaN，则仍旧使用原本的最值。截断的操作发生在重采样之前。译注：该选项 通常用于地形、深度等具有实际意义的 CPT。

-H

-H

  仅限现代模式。 默认情况下是将 CPT 保存为隐藏的当前 CPT，加上该选项会显式地将 CPT 写入标准输出。 在写制作动画的脚本时，需要传递显式命名的 CPT 文件，因此需要使用本功能。 建议阅读 经典模式 → 现代模式 。

-I

-I[c][z]

  - -Ic [默认]：反转颜色的顺序，同时也会交换前景色和背景色以及 COLOR_FOREGROUND 和 COLOR_BACKGROUND 参数设置的前景色和背景色。详细用法和说明见 制作CPT 。

  - -Iz ：反转 CPT 的 z 值正负号（不包括前景色、背景色）。该操作发生于 `-G` 和 `-T` 选项之前，因此使用上述两选项时，需先考虑 -Iz 操作后的 z 值的实际范围。

-M

-M

  使用配置参数 COLOR_FOREGROUND 、 COLOR_BACKGROUND 和 COLOR_NAN 覆盖主 CPT 中的前景色、背景色和 NaN 值的颜色。 如果和 `-D` 同时使用，则 `-D` 中的前景色和背景色设置优先， 本选项只会让 COLOR_NAN 有效。

-N

-N

  不在生成的 CPT 中写入前景色，背景色和 NaN 值的颜色[默认写入]。

-Q

-Q

  对于 `-T` 选项给出的 z 值线性一维数组，首先计算它的对数值 \(\log_{10}(z)\)。 每个颜色区间根据 z 值的对数值分配颜色，但颜色区间仍用 z 值表示。

-S

-S mode

  读取输入数据 table，最后一列为数据的 z 值，自动确定适合 `-T` 选项的范围。 可以选择的模式有：

  - -Sr ：使用数据的最小/最大值作为范围

  - -S inc[+d] ：将数据的最小/最大值进行取整，让新范围可以是 inc 的整数倍。附加 +d 生成离散 CPT。

  - -Sa scl ：以平均值为对称中心，±scl * sigma 的对称范围

  - -Sm scl ：以中位数为对称中心，±scl * L1_scale 的对称范围

  - -Sp scl ：以众数为对称中心（即 LMS；最小二乘中位数），±scl * LMS_scale 的对称范围

  - -Sq low/high ：从低分位数到高分位数（百分比格式）的范围

  使用 `-i` 选项可选择其他列决定数据 z 值范围，二进制文件则需同时使用 `-bi` 。

-T

-T min/max/inc[+b|i|l|n]

-T file|list

  定义要生成的 CPT 文件的 z 值范围 min/max 及颜色区间间隔 inc。 如果不使用本选项，则原样使用主 CPT 中的现有范围和间隔。 附加 +n 则将 inc 解释为颜色区间的数目而不是间隔。其他附加选项的含义详见 生成一维数组 。

  也可以读取一个文件 file，文件第一列代表的一维数组定义了每个颜色区间的边界。 或者直接给出一个以逗号分隔的一维数组 list。 若要设置带有字符串键的分类 CPT， list 则为以逗号分隔的字符串列表。

-V

-V[level]

  设置 verbose 等级 [w]。 (参数详细介绍)

-W

-W[w]

  不插值主 CPT ，而是从 CPT 的开头开始选取输出颜色，直到所有区间的颜色都被分配完。 这在与分类 CPT 同时使用时非常有用。使用 -Ww 可生成一个无限重复范围的循环（周期性） CPT。

-Z

-Z

  生成连续 CPT 文件。默认生成不连续 CPT 文件，即每个 Z 值切片内为同一颜色。

-bi

-bi[ncols][type][w][+l|b]

  控制二进制文件的输入格式。 (参数详细介绍)

-di

-di nodata

  将输入数据某些特定值当作NaN。 (参数详细介绍)

-h

-h[i|o][n][+c][+d][+m segheader][+r remark][+t title]

  在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)

-i

-i cols[+l][+s scale][+o offset][,...][,t[word]]

  对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-^ 或 -

  显示简短的帮助信息，包括模块简介和基本语法信息（Windows下只能使用 -）

-+ 或 +

  显示帮助信息，包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

  显示完整的帮助信息，包括模块简介、基本语法以及所有选项的说明

--PAR=value

  临时修改GMT参数的值，可重复多次使用。参数列表见 配置参数

## 关于透明

PostScript 语言最初并不支持透明度。 然而，Adobe 增加了一个扩展，允许开发者使用 PostScript 语言模型对某些形式的透明度进行编码， 但这只有在将 PostScript 转换为 PDF（以及通过 PDF 转换为任何栅格图像格式）时才能实现。

GMT 使用了这种模型，但存在一些限制：透明度只能基于单个对象或图层进行控制。 这意味着颜色规范（例如 CPT 文件中定义的或通过命令行选项给出的颜色）仅适用于矢量图形项（即文本、线条、多边形填充） 或整个图层（其中可能包括 PostScript 图像等项）。这种限制排除了在此类图像中实现像素级透明度控制的任何机制。 请注意，多边形和线条将遵循任何特定的对象透明度，但如果没有设置对象透明度，则这些项将继承通过 -t 设置的图层透明度（如果有）。

## 颜色铰链

某些 GMT 动态 CPT 是两个独立的 CPT 合成的，合成位置称为铰链值。铰链两侧 的颜色通常会有较大的变化，用于两个不同的方面（例如，陆地和海洋的高程和深度）。 一般情况下，颜色的动态变化不受铰链的影响，将整个颜色范围拉伸得到最终的 CPT。 但激活铰链值时，CPT 铰链两侧的部分将分别拉伸到所需的范围。铰链分为硬铰链和软 铰链，铰链必须通过在 CPT 后追加 +h[hinge] 激活。如果设定的拉伸范围 不包括铰链值，则只在 CPT 中选取与范围相关的一半重新采样颜色。

## 离散 CPT 和连续 CPT

所有的 CPT 都可以拉伸，但只建议使用连续 CPT 在 `-T` 指定的新节点上采样，如果 使用离散 CPT 采样，则会警告，但仍可使用。GMT 这样做的原因是防止重采样 原始 CPT 导致混叠。

## 示例

以 polar CPT 为主 CPT，创建一个范围为 -200 到 200，间距为 25 的离散 CPT

    gmt makecpt -Cpolar -T-200/200/25 > colors.cpt

使用默认的 turbo CPT 为主 CPT，创建一个范围为 -2 到 6 的等距 CPT

    gmt makecpt -T-2/6 > colors.cpt

在 gebco 的基础上，创建一个适用于 v3206_06.txt 数据文件的 CPT，颜色区间 个数为 24 个

    gmt makecpt -Cgebco @v3206_06.txt -E24 > my_depths.cpt

创建一个震源深度 CPT 文件，红色表示深度为 0-100 km，绿色表示 100-300 km， 蓝色表示 300-1000 km

    gmt makecpt -Cred,green,blue -T0,80,300,1000 -N > seis.cpt

创建一个连续 CPT，从 3-10 变化时，颜色从白色过度到蓝色

    gmt makecpt -Cwhite,blue -T3/10 > cold.cpt

创建一个 0-500 范围的循环 CPT，如果值范围超过 500 或小于 0，则使用循环 后的值，而不是 NaN 对应的颜色

    gmt makecpt -Cjet -T0/500 -Ww > wrapped.cpt

创建一个拥有三个类别的分类 CPT，并指定类别名

    gmt makecpt -Ccubhelix -T0/2/1 -F+cClouds,Trees,Water > cat.cpt

创建一个拥有 10 个类别的分类 CPT，类别名从 A、B、C 等开始编号

    gmt makecpt -Cjet -T0/10/1 -F+cA

使用字符串键值创建一个分类 CPT

    gmt makecpt -Ccategorical -Twood,water,gold

## 相关模块

grd2cpt