✍️ 田冬冬 , 周茂 , 邓山泉 , 陈箫翰 • 📅 2026-01-12

# ternary

官方文档:

  ternary

简介:

  绘制三角图解

ternary 从文件或者标准输入中读取 (a, b, c [, z]) 数据，并在三角图中绘制符号。 如果给定符号类型，但未给出符号大小，ternary 会将第四列数据作为符号大小， 符号大小值小于0的将会被跳过。如果没指定符号类型，就必须在数据的最后一列给出符号代码（见下文 `-S` ）。 如果未指定 `-S` ，则改为绘制线条或多边形。

## 语法

gmt ternary [ table ] [ `-B`[p|s]parameters ] [ `-C` cpt ] [ `-G` fill ] [ `-J` X[-]width ] [ `-L` a/b/c ] [ `-M` ] [ `-N` ] [ `-R` amin/amax/bmin/bmax/cmin/cmax ] [ `-S`[symbol][size] ] [ `-U`[stamp] ] [ `-V`[level] ] [ `-W`[pen][attr] ] [ `-X`[a|c|f|r][xshift] ] [ `-Y`[a|c|f|r][yshift] ] [ `-bi` binary ] [ `-di` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-g` gaps ] [ `-h` headers ] [ `-i` flags ] [ `-p` flags ] [ `-qi` flags ] [ `-s` flags ] [ `-t` transp ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

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

## 必须选项

必须使用 `-M` 或者 `-R` 和 `-J`。

## 可选选项

-B

-B[a|b|c]args

  设置三角图的三条边的属性。

  与常规图不同，三角图有三条不同的边。三条边从下面这条边开始， 逆时针旋转，分别称为 a、b、c。 如果所有坐标轴的参数都相同，则只需提供一个不带坐标轴字母的选项。其余用法与标准选项 `-B` 相同。

-C

-C cpt

  指定CPT文件，或者跟上一系列以逗号分隔的颜色以构建一个线性连续CPT： `-C` color1,color2[,color3,...]

  若使用了 `-S` 选项，则符号填充色由第四列数值决定，其它字段向右移动一列 （即若需要指定符号大小，符号大小应置于第5列）。

  现代模式下，若不指定CPT，则使用当前CPT。

-G

-G fill

  指定符号填充色。

  对于多段数据，段头记录中的 `-G` 字符串会覆盖命令行中该选项的值。

-J

-JX width

  指定三角图的宽度。使用负的 width 值表示坐标轴的正方向为顺时针方向 [默认情况下，a, b, c 轴的正方向为逆时针方向]。

-L

-L a/b/c

  设置三个顶点（即组分为 100% 处）的标签 [默认为空]。这些标签放置在距离各自顶点三倍于 MAP_LABEL_OFFSET 设置值的位置。若要跳过其中任何一个，请将该标签指定为 -。

-M

-M

  不绘图。将三角图数据 (a,b,c[,z]) 转换为笛卡尔坐标 (x,y,[,z])，x,y 为在三角图解中的归一化坐标值。 x 的取值范围为0-1，y 的取值范围为0到 \(\frac{\sqrt{3}}{2}\)

  如果一个点在三角图中坐标为 (a, b, c)，则笛卡尔坐标(x, y)为:

  \[ \begin{align}\begin{aligned}x = \frac{(100-a)+b}{2\times100}\\y =\frac{\sqrt{3}}{2\times 100}\times c\end{aligned}\end{align} \]

-N

-N

  不裁剪落在三角图外的符号 [默认只绘制三角图内的符号]

-R

-R amin/amax/bmin/bmax/cmin/cmax

  指定三条边 a、b 和 c 的最大最小值。

-S

-S[symbol][size]

  在三角图中绘制符号。如果不使用本选项，将改为绘制线条（需要 `-W` ）或多边形（需要 `-C` 或 `-G` ）。 如果指定了符号大小 size ，则默认单位为 PROJ_LENGTH_UNIT ，也可以附加 c 、 i 或 p 。 如果不指定符号代码 symbol ，则从输入数据的最后一列读取。这种省略默认设置不能用在读取二进制输入文件的情况。

  注意：如果通过输入文件同时提供大小和符号，则必须使用 PROJ_LENGTH_UNIT 来指示用于符号大小的单位，或者在文件中的大小数值后附加单位。 可以通过 `-i` 选项将这些值转换为合适的符号大小。一般的输入要求为：

  coordinates [ value ] [ parameters ] [ symbol ]

  其中 coordinates 是两列或三列，用于指定点的位置。当使用 `-C` 控制颜色时，需要 value 。当未指定符号大小时，需要 parameters 。当未指定符号代码时，则需要 symbol 。 注意： parameters 可能代表多个 size 列，因为某些符号需要定义多个参数（例如，圆只需要一列，矩形需要两个维度，而椭圆需要一个方向和两个维度）。 当只有一个参数时， parameters 等同于 size。

  具体可用的符号详见 plot 中的 -S 选项。

-U

-U[label][+c][+j just][+o dx/dy]

  在图上绘制GMT时间戳logo。 (参数详细介绍)

-V

-V[level]

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

-W

-W[pen][attr]

  设置符号轮廓的画笔属性。

-X

-Y

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

-Y[a|c|f|r][yshift[u]]

  移动绘图原点。 (参数详细介绍)

-bi

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

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

-di

-di nodata

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

-e

-e[~]"pattern" | -e[~]/regexp/[i]

  筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)

-f

-f[i|o]colinfo

  显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)

-g

-g[a]x|y|d|X|Y|D|[col]z gap[+n|p]

  确定数据或线段的间断。 (参数详细介绍)

-h

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

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

-i

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

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

-qi

-qi[~]rows[+c col][+a|f|s]

  筛选输入的行或数据范围。 (参数详细介绍)

-s

-s[cols][+a|+r]

  设置 NaN 记录的处理方式。 (参数详细介绍)

-:

-:[i|o]

  交换输入或输出数据的前两列。 (参数详细介绍)

-p

-p[x|y|z]azim[/elev[/zlevel]][+w lon0/lat0[/z0]][+v x0/y0]

  设置3D透视视角。 (参数详细介绍)

-t

-t[transp]

  设置图层透明度（百分比）。取值范围为0（不透明）到100（全透明）。 (参数详细介绍)

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 示例

在一个 15 厘米宽的三角图中，在 ternary.txt 文件所列的位置上绘制圆（直径为 0.1 厘米），并使用默认的标注、网格线间距以及指定的标签：

    gmt begin map
    gmt makecpt -Cturbo -T0/80/10
    gmt ternary @ternary.txt -R0/100/0/100/0/100 -JX6i -Sc0.1c -C -LWater/Air/Limestone \
        -Baafg+l"Water component"+u" %" -Bbafg+l"Air component"+u" %" -Bcagf+l"Limestone component"+u" %" \
        -B+givory+t"Example data from MATLAB Central"
    gmt end show

## 相关模块

basemap, plot, plot3d