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

ternary

官方文档:

ternary

简介:

绘制三角图解

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

语法

gmt ternary [ table ] [ -B[p|s]parameters ] [ -Ccpt ] [ -Gfill ] [ -JX[-]width ] [ -La/b/c ] [ -M ] [ -N ] [ -Ramin/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] ] [ -bibinary ] [ -dinodata[+ccol] ] [ -eregexp ] [ -fflags ] [ -ggaps ] [ -hheaders ] [ -iflags ] [ -pflags ] [ -qiflags ] [ -sflags ] [ -ttransp ] [ -:[i|o] ] [ --PAR=value ]

输入数据

table

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

必须选项

必须使用 -M 或者 -R-J

可选选项

-B
-B[a|b|c]args

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

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

-C
-Ccpt

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

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

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

-G
-Gfill

指定符号填充色。

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

-J
-JXwidth

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

-L
-La/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
-Ramin/amax/bmin/bmax/cmin/cmax

指定三条边 abc 的最大最小值。

-S
-S[symbol][size]

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

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

coordinates [ value ] [ parameters ] [ symbol ]

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

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

-U
-U[label][+c][+jjust][+odx/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
-dinodata

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

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

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

-f
-f[i|o]colinfo

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

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

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

-h
-h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]

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

-i
-icols[+l][+sscale][+ooffset][,...][,t[word]]

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

-qi
-qi[~]rows[+ccol][+a|f|s]

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

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

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

-:
-:[i|o]

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

-p
-p[x|y|z]azim[/elev[/zlevel]][+wlon0/lat0[/z0]][+vx0/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
../../_images/8309d98caa43045f0b181d6e86d6ee94.png

相关模块

basemap, plot, plot3d