✍️ 田冬冬 , 陈箫翰  •  📅 2026-01-11

rose

官方文档:

rose

简介:

绘制极坐标直方图(玫瑰图、扇形图、风向玫瑰图)

rose 从输入数据中读取 (长度, 方位角) 格式的数据,并绘制风向玫瑰图。如果输入数据仅包含方位角数值,需要使用 -i0。 如果使用 -A 选项可以绘制极坐标直方图(扇形图或玫瑰图)。可以选择全圆和半圆绘图。风向玫瑰图的轮廓颜色与 MAP_DEFAULT_PEN 相同。

语法

gmt rose [ table ] [ -Asector_width[+r] ] [ -B[p|s]parameters ] [ -Ccpt ] [ -D ] [ -Em|[+w]mode_file ] [ -F ] [ -Gfill ] [ -I ] [ -JXdiameter ] [ -L[wlabel,elabel,slabel,nlabel] ] [ -Mparameters ] [ -Nmode[+ppen] ] [ -Qalpha ] [ -Rr0/r1/az0/az1 ] [ -S[+a] ] [ -T ] [ -U[stamp] ] [ -V[level] ] [ -W[v]pen ] [ -X[a|c|f|r][xshift] ] [ -Y[a|c|f|r][yshift] ] [ -Zu|scale ] [ -bibinary ] [ -dinodata[+ccol] ] [ -eregexp ] [ -hheaders ] [ -iflags ] [ -oflags ] [ -pflags ] [ -qiflags ] [ -sflags ] [ -ttransp ] [ -wflags ] [ -:[i|o] ] [ --PAR=value ]

输入数据

table

输入文件,数据格式为:

length  azimuth

此时绘制的是风向玫瑰图。若输入文件中只有 azimuth 数据,则需要使用 -i 选项指定包含方位角的单列。 此时所有长度都将被设置为 1(使用 -Zu 可以将实际长度也设置为 1)。 如果使用 -A 选项可以绘制极坐标直方图(扇形图或玫瑰图)。

可选选项

-A
-Asector_width[+r]

指定扇形图和玫瑰图的扇区宽度,单位为度

  • 默认扇页宽度为 0,即绘制风向玫瑰图

  • 若扇页宽度不为 0,则表示绘制扇形图

  • 若扇页宽度不为 0 且使用了 +r,则表示绘制玫瑰图

-B
-Bparameters

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

此模块中,X 表示径向距离,Y 表示方位角。Y 轴的标签是图片的标题,比例尺长度由径向网格间隔决定。

默认情况下,如果选择绘制比例尺,则在右下角绘制。 MAP_TICK_PEN_PRIMARY 控制比例尺画笔属性, FONT_ANNOT_PRIMARY 控制标注字体。

-C
-Ccpt

提供一个 CPT 文件。每个扇区的 r 值将用于查找对应的扇区颜色。该选项不能与玫瑰图同时使用。 在现代模式下,如果未给定参数则选择当前的 CPT。

-D
-D

对扇页对偏移,使得其位于每个间隔的中间,即第一个扇页的中心在 0 度处

-E
-Em|[+w]mode_file

绘制 mode_file 文件中给出的主方向向量。指定 -Em 计算并绘制平均方向。使用 -M 控制向量属性。 若要保存计算出的平均方向和其他统计数据,使用 [m]+wmode_file。保存在单条记录中的八个项目分别是:

mean_az  mean_r  mean_resultant  max_r  scaled_mean_r  length_sum  n  sign@alpha

其中最后一项为 0 或 1,取决于平均合向量在通过 -Q 设置的置信水平下是否显著。

-F
-F

不绘制比例尺。

-G
-Gfill

绘制扇页的填充色

-I
-I

不绘制图形,只计算 -R 选项所需要的参数。以下统计信息会输出到标准输出:

n  mean_az  mean_r  mean_resultant_length  max_bin_sum  scaled_mean  linear_length_sum

使用 -o 选项可以选择只输出其中几列。

-J
-JXdiameter

设置玫瑰图的直径。本模块只能使用这种投影方式。如果不设置,直径默认为7.5cm。

-L
-L[wlabel,elabel,slabel,nlabel]

指定0、90、180、270度处的标签。

  • 对于全圆绘图,默认值为 WEST,EAST,SOUTH,NORTH

  • 对于半圆绘图,默认值为 90W,90E,-,0 ,其中 - 表示不显示标签

  • 使用不带参数的 -L 禁用所有四个标签

-M
-Mparameters

-E 选项一起使用修改矢量的属性 parameters ,具体属性设置见 矢量/箭头 一节。 如果要绘制向量头,请附加向量头 size [默认值为 0,即只绘制一条直线]。 如果不使用 -E 且当前绘图模式为绘制风向玫瑰图,则单独使用 -M 将为所有单个方向添加向量头。

-N
-Nmode[+ppen]

绘制等效的圆周正态分布,即 von Mises 分布。附加 +p 设置画笔属性 pen [默认 0.25p, 黑色]。 mode 用于选择所使用的中心位置和刻度:

  • 0 = 平均值和标准差

  • 1 = 中位数和 L1 刻度(1.4826 * 中位数绝对偏差;MAD)

  • 2 = LMS(最小平方中位数)众数和刻度

注意:目前仅支持 mode == 0。

-Q
-Q[alpha]

设置用于确定平均合向量是否显著(即用于均匀性检验的 Rayleigh 检验)的置信水平 [默认 0.05]。 注意:临界值是近似计算的 [Berens, 2009],且要求至少有 10 个点。临界合向量至少在 3 位有效数字内是准确的。对于更小的数据集,应该查阅精确的统计表。

-R
-Rr0/r1/az0/az1

指定绘图的半径和方位角范围。

  • r0 取 0

  • r1 取最大长度

  • 方位角范围取 -90/900/180 进行半圆绘图

  • 方位角范围取 0/360 进行全圆绘图

-S
-S[+a]

使用最大值对输入半径(如果使用了 -A 则为各组计数)进行归一化,使得所有半径(或计数)范围在 0 到 1 之间。 使用 +a 进一步对玫瑰图进行面积归一化(即在绘图前取 \(\sqrt{r}\))[默认不进行归一化]。

-T
-T

指定输入数据为两个方向的方位向数据(即无法区分 azimuthazimuth + 180 ),而非单方向的 0-360 度方向数据。 每条数据会被统计两次:第一次统计为 azimuth ,第二次统计为 azimuth + 180 。 如果提供的数据范围确定是 -90/90 或 0/180,则不要使用此选项。

-U
-U[label][+c][+jjust][+odx/dy]

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

-V
-V[level]

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

-W
-Wpen

设置扇区边框的画笔属性,默认不绘制边框。 使用 -Wvpen 可用于设置绘制矢量时所需的画笔属性,此时需要设置 -E 选项。默认情况下矢量画笔属性和边框画笔属性相同。

-X
-Y

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

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

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

-Z
-Zu|scale

将数据半径乘以 scale 。例如,使用 -Z0.001 将数据从米 (m) 转换为千米 (km)。 若不考虑半径,使用 -Zu 将它们全部设为 1 [默认不进行比例缩放]。

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

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

-di
-dinodata

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

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

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

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

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

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

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

-o
-ocols[,...][,t[word]]

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

-p
-p[x|y|z]azim[/elev[/zlevel]][+wlon0/lat0[/z0]][+vx0/y0]

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

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

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

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

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

-t
-t[transp]

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

-w
-wy|a|w|d|h|m|s|cperiod[/phase][+ccol]

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

-:
-:[i|o]

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

使用 -: 表示输入数据为 azimuth radus 而不是 radius azimuth

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

示例

绘制远程数据文件 @azimuth_lengths.txt(数据为 azimuth length,单位是米)的半圆玫瑰图,使用 5 度的条柱扇区宽度,圆直径为 10 cm,并使用浅蓝色阴影填充:

gmt rose @azimuth_lengths.txt -: -A5 -JX10c -F -L -Glightblue -R0/1/0/180 -Bxaf+l"Fault length" -Byg30 -S -pdf half_rose

在直径为 10 cm 的圆上绘制文件 lines.az_r 中数据的全圆风向玫瑰图,网格半径延伸至 500 单位(步长为 100),扇区间隔为 45 度,使用实线画笔(宽度为 0.5 磅),并在横向 [默认] 方位下带有时间戳和命令行信息:

gmt rose lines.az_r -R0/500/0/360 -JX10c -Bxg100 -Byg45 -B+t"Windrose diagram" -W0.5p -U+c -pdf rose

重新绘制上述图表,但这次为每个方向添加橙色向量头(标称头大小为 0.5 cm,但对于长度小于 1 cm 的向量其头部大小将线性减小)并保存图表,请使用:

gmt rose lines.az_r -R0/500/0/360 -JX10c -Bxg100 -Byg45 -B+t"Windrose diagram" -M0.5c+e+gorange+n1c -W0.5p -U+c -pdf rose

Bugs

极坐标直方图没有默认的径向比例尺和网格设置。用户必须先使用 -I ,以查找分箱数据集中的最大长度。

参考文献

Berens, P., 2009, CircStat: A MATLAB Toolbox for Circular Statistics, J. Stat. Software, 31(10), 1-21.

相关模块

histogram