✍️ 周茂 • 📅 2026-01-16

# wiggle

官方文档:

  wiggle

简介:

  绘制沿轨 z = f(x,y) 异常

从文件或者标准输入中读取 (x,y,z)，在沿轨方向绘制 z 值。 连续的 (x,y) 坐标对定义了沿轨距离轴，z 轴垂直于距离轴，形成右手坐标系。 用户可以设置首选的正异常绘制方向。如果正法向位于首选方向周围 ±90 度窗口之外，则为该方向增加 180 度。 正异常或者负异常都可以带有阴影。

## 语法

gmt wiggle [ table ] `-J` parameters `-R` west/east/south/north[+r][+u unit] `-Z` scale [ `-A`[azimuth] ] [ `-B`[p|s]parameters ] [ `-C` center ] [ `-D` refpoint ] [ `-F` panel ] [ `-G` fill[+n][+p] ] [ `-I` fix_az ] [ `-T` pen ] [ `-U`[stamp] ] [ `-V`[level] ] [ `-W` pen ] [ `-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 ] [ `-t` transp ] [ `-w` flags ] [ `-:`[i|o] ]

## 输入数据

table

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

## 必须选项

-J

-J projection

  设置地图投影方式。 (参数详细介绍)

-R

-R xmin/xmax/ymin/ymax[+r][+u unit]

  指定数据范围。 (参数详细介绍)

-Z

-Z scale

  以数据坐标单位或距离单位指定异常值的缩放因子（即比例尺）。 追加 c，i 或者 p 表明距离单位分别为 cm，inch 或 point。如果不指定单位，使用 PROJ_LENGTH_UNIT 默认的单位。

## 可选选项

-A

-A[azimuth]

  设置绘制正异常值的方位角，正异常将被“吸引”到该方向。 即：如果轨迹的正法线的方位角在 azimuth ± 90 度的范围内，则沿其正法线方向绘制正异常值。 如果正法线的方位角在该范围外，则沿负法线的方向绘制正异常值。[默认为 `-A`0]

-B

-B parameters

  设置底图边框和轴属性。 (参数详细介绍)

-C

-C center

  绘图前从数据中减去 center，默认值为 0

-D

-D[g|j|J|n|x]refpoint+w length[+j justify][+a l|r][+o dx[/dy]][+l[label]]

  使用四种坐标系统定义比例尺的参考点，详细用法见 修饰物

  - g lon/lat 指定数据坐标为参考点

  - j code 或者 J code 通过 2 个字母的对齐方式码指定锚点作为参考点

  - n xn/yn 指定归一化坐标系（即 0-1）为参考点

  - x x/y 指定绘图坐标 为参考点， 追加 cm, inch, 或者 point 用来指定单位

  - +w length 指定比例尺的长度，单位和数据（z 坐标）的单位一致

  - +j justify 指定比例尺的锚点 [默认为 ML]

  - +al 将比例尺标签放在比例尺左边 [默认为比例尺右边]

  - +l[label] 指定将 z 坐标的单位用于比例尺标签 [默认无单位]。

  比例尺标签的文字属性由 FONT_ANNOT_PRIMARY 控制。 比例尺的刻度属性由 MAP_TICK_PEN_PRIMARY 控制。

备注

-Dj 或者 -DJ 选项将会影响锚点的位置， 详见修饰物锚点 。

-F

-F[+c clearances][+g fill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]

  绘制比例尺的背景面板， 详见修饰物-背景面板

  - +g fill 指定面板填充颜色 [默认不填充]

  - +p pen 绘制面板边框。pen 为边框的画笔属性，若不指定 pen， 则默认使用 MAP_DEFAULT_PEN

  - +r[radius] 绘制圆角边框，radius 为圆角的半径

  - +i[[gap/]pen] 在边框内部绘制一个内边框，gap 为内外边框空白距离 [默认为 2p]， pen 为内边框的画笔属性 [默认使用 MAP_DEFAULT_PEN]

  - +c clearance 设置修饰物与面板之间的空白距离。 默认情况下面板的大小由修饰物的大小决定，使用该子选项可以为面板增加额外的尺寸。 clearance 的具体设置包括下面 3 种情况：

    - gap 为四个方向增加相同的空白距离

    - xgap/ygap 分别为 X 方向和 Y 方向指定不同的空白距离

    - lgap/rgap/bgap/tgap 分别为四个方向指定不同的空白距离

  - +s[[dx/dy/][shade]] 设置面板背景阴影。dx/dy 为阴影区相对于面板的偏移量， shade 为阴影区颜色 [默认为 4p/-4p/gray50]

-G

-G fill[+n][+p]

  设置异常值下的阴影填充的颜色和样式。 [默认不填充]

  - 追加 +p 子选项为填充正异常区域 [默认]。

  - 追加 +n 子选项为填充负异常区域。

  - 追加 +n+p 为使用相同的方式填充正异常和负异常区域。

  注：如果需要设置正异常和负异常使用不同的填充方式，需要重复使用 `-G` 选项。

-I

-I fix_az

  绘制异常值时使用固定方位角（见 `-A` 选项）。 使用该选项时，轨迹法线的方位角将被 fixed_az 覆盖。

-T

-T pen

  绘制轨迹 [默认不绘制]。可以附加画笔属性 [默认值为： width = 0.25p，color = black，style = solid]。

-U

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

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

-V

-V[level]

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

-W

-W pen

  设置异常值轮廓画笔属性 [默认没有轮廓]

-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]]

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

-p

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

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

-qi

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

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

-t

-t[transp]

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

-w

-wy|a|w|d|h|m|s|c period[/phase][+c col]

  将输入坐标转换为循环坐标。 (参数详细介绍)

-:

-:[i|o]

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

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 示例

下面的示例展示了如何使用 wiggle 模块绘图。示例使用 math 生成数据：

    gmt begin wiggle_exam
    gmt math -T-8/6/0.01 -N3/0 -C2 T 3 DIV 2 POW NEG EXP T PI 2 MUL MUL COS MUL 50 MUL = > temp.dat
    gmt wiggle temp.dat -R-10/10/-3/3 -JM6i -B -Z100i -DjRM+w100+lnT -Tfaint -Gred+p -W1p -BWSne
    gmt end show

考虑另外一个示例：使用 `track.xym` 文件绘制沿轨磁异常，移去均值（32000 nTesla）， 比例尺设置为图上 1 cm 代表实际 500 nTesla。 使用 15 cm 宽的立体等角投影，设置刻度间隔为 5 度， 正异常阴影为红色，轨迹线宽度为 0.25p，颜色为蓝色:

    gmt wiggle track.xym -R-20/10/-80/-60 -JS0/90/15c -Z500 -B5 \
    -C32000 -Gred -T0.25p,blue -DjRM+w1000+lnT -V -pdf track_xym

上述示例中，正异常绘制方向为北方向，使用 `-D` 选项设置比例尺长度为 1000 nT 。 如果要设置绘制正异常的方位角为固定的 45 度，可使用 `-I` 选项:

    gmt wiggle track.xym -R-20/10/-80/-60 -JS0/90/15c -Z1000 -B5 \
    -C32000 -Gred -I45 -T0.25p,blue -DjRM+w1000+lnT -V -pdf track_xym

除测线数据外，wiggle 模块也常用于绘制卫星沿轨观测序列， 如 GMT 官方示例 。 该示例使用 Geosat 卫星观测的沿轨海面高梯度数据来揭示海底构造和海岭：

## Bugs

某些情况下，(x,y) 坐标的有效数字位数不足，导致局部方位角变化较大，异常摆动也较大。 使用下面命令可以查看是否存在这种情况:

    gmt mapproject -Af yourdata.xyz

如果存在上述情况，可以使用 filter1d 对数据滤波:

    awk '{ print NR, $0 }' yourdata.xyz \
    | gmt filter1d -Fb5 -N4 --FORMAT_FLOAT_OUT=%.12g > smoothed.xyz

上述命令使用了 5 个点的 boxcar 滤波，然后可以使用处理后的数据绘图。

## 相关模块

filter1d, basemap, split