histogram
- 官方文档:
- 简介:
统计并绘制直方图
histogram 模块读取文件 [或标准输入] 并检查第一列数据(或由 -i 指定的列),根据提供的直方间隔计算直方图参数。
利用这些参数、缩放比例以及可选的范围参数绘制直方图。此外,还可以指定绘制累积直方图。
语法
gmt histogram
[ table ]
-Jx|Xparameters
-T[min/max/]inc[+n|i] |-Tfile|list
[ -A ]
[ -B[p|s]parameters ]
[ -Ccpt[+b] ]
[ -D[+b][+ffont][+ooff][+r] ]
[ -Ewidth[+ooffset] ]
[ -F ]
[ -Gfill ]
[ -I[o|O] ]
[ -Ll|h|b ]
[ -N[mode][+ppen] ]
[ -Qr ]
[ -Rregion ]
[ -S ]
[ -U[stamp] ]
[ -V[level] ]
[ -Wpen ]
[ -X[a|c|f|r][xshift] ]
[ -Y[a|c|f|r][yshift] ]
[ -Z[type][+w] ]
[ -bibinary ]
[ -dinodata[+ccol] ]
[ -eregexp ]
[ -fflags ]
[ -hheaders ]
[ -iflags ]
[ -lflags ]
[ -oflags ]
[ -pflags ]
[ -qiflags ]
[ -sflags ]
[ -ttransp ]
[ -wflags ]
[ --PAR=value ]
输入数据
- table
一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。
必须选项
- -J
- -Jx|Xparameters
xscale[/yscale] 表示线性比例尺,或者使用 -JX 指定 width[/height] 宽度/高度。 详细说明请参考 -JX: Linear, logarithmic, power, and time 。
- -T
可选选项
- -A
- -A
水平绘制直方图,即从 x = 0 开始。不使用本选项默认是从 y = 0 开始垂直绘制。绘图尺寸保持不变,但两个坐标轴会发生对调。
- -B
- -Bparameters
设置底图边框和轴属性。 (参数详细介绍)
- -C
- -Ccpt[+b]
指定 CPT 文件,将每个直方的中点坐标作为 Z 值查询 CPT 中的颜色,颜色随 X 轴(数值区间)变化。 附加 +b 改为使用每个直方的频数或百分比作为 Z 值进行查询,颜色将随 Y 轴(频数或百分比)变化。 如果
-Z涉及百分比,附加 +b 则使用计算出的百分比进行查询。
- -D
- -D[+b][+ffont][+ooff][+r]
为每个直方添加标注,其内容是每个直方的统计数目:
+b :将标注放在直方的底部(默认为顶部)
+ffont :设置标注的字体
+ooffset :修改标注与直方的距离(默认值为6p)
+r :将标注从水平方向旋转为垂直方向
- -E
- -Ewidth[+ooffset]
设置新的直方宽度 width 覆盖
-T中的设置,也可以附加 +o 将所有直方平移一个 offset 偏移量。 width 既可以是数据单位表示的备选宽度,也可以附加有效的绘图尺寸单位( c|i|p )来指定固定尺寸。 与 width 一样,偏移量 offset 也可以附加单位。
- -F
- -F
将每个直方的中点对准
-T选项创建的一维数组的每个值。 不使用本选项默认使用每个直方的左边界进行对齐。假设
-T设置的范围是0到100,间隔为10。 默认情况下,会将0到10作为第一个直方,10到20作为第二个直方,以此类推。 若使用本选项,则第一个直方以0为中心,即-5到5是第一个直方,5到15是第二个直方,以此类推。
- -G
- -Gfill
设置直方的填充色(默认无填充)。
- -I
- -I[o|O]
输出计算结果不绘图。
-I 输出 xmin xmax ymin ymax,即数据的最小值、最大值和统计数量的最小值、最大值。
-Io 输出各个直方的 x, y 数据的 ASCII 表,不包括 y = 0 的数据。
-IO 输出包括 y = 0 的所有数据。
注意:可以使用
-o选项选择部分数据输出。
- -L
- -Ll|h|b
设置超过统计范围的数据的处理方式。
-Ll 小于第一个直方的统计范围的数据算入第一个直方
-Lh 大于最后一个直方的统计范围的数据算入最后一个直方
-Lb 小于第一个直方的统计范围的数据算入第一个直方, 并且大于最后一个直方的统计范围的数据算入最后一个直方
- -N
- -N[mode][+ppen]
绘制等效的正态分布曲线,可附加画笔属性 [默认为 0.25p,black]。 mode 用于设定正态分布的中心位置和比例尺:
mode = 0:平均值和标准差 (默认)
mode = 1:中位数和 L1 比例尺 (1.4826 * 中值绝对偏差; MAD)
mode = 2:LMS (最小二乘中位数) 众数和比例尺
该选项可以使用多次以绘制多条曲线。 注意:如果使用了
-w选项,则仅 mode = 0 可用,此时将计算圆形冯·米塞斯分布(von Mises distribution)的参数。
- -Q
- -Qr
绘制累计直方图, r 绘制反向的累计直方图。不能和
-w一起使用。
- -R
- -Rxmin/xmax/ymin/ymax[+r][+uunit]
指定数据范围。 (参数详细介绍)
- -S
- -S
绘制阶梯状直方图,并且不包含直方内部的线条。
- -U
- -U[label][+c][+jjust][+odx/dy]
在图上绘制GMT时间戳logo。 (参数详细介绍)
- -V
- -V[level]
设置 verbose 等级 [w]。 (参数详细介绍)
- -W
- -Wpen
设置直方边框(或阶梯状曲线)的画笔属性 [默认不绘制]。
- -X
- -Y
-X[a|c|f|r][xshift[u]]
- -Y[a|c|f|r][yshift[u]]
移动绘图原点。 (参数详细介绍)
- -Z
- -Z[type][+w]
选择直方图的种类:
type = 0:频数 counts(默认值)
type = 1:百分比 frequency_percent
type = 2:log (1.0 + count)
type = 3:log (1.0 + frequency_percent)
type = 4:\(\log_{10}\) (1.0 + count)
type = 5:\(\log_{10}\) (1.0 + frequency_percent)
若要使用数据第二列而不是 counts 频数作为权重,可以加上 +w 。
- -bi
- -bi[ncols][type][w][+l|b]
控制二进制文件的输入格式。 (参数详细介绍)
- -di
- -dinodata
将输入数据某些特定值当作NaN。 (参数详细介绍)
- -e
- -e[~]“pattern” | -e[~]/regexp/[i]
筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)
- -f
- -f[i|o]colinfo
显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)
- -h
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]
在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)
- -i
- -icols[+l][+sscale][+ooffset][,…][,t[word]]
对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -l
- -l[label][+Dpen][+Ggap][+Hheader][+L[code/]txt][+Ncols][+Ssize[/height]][+V[pen]][+ffont][+gfill][+jjust][+ooff][+ppen][+sscale][+wwidth]
为当前绘制的符号或线段增加一个自动图例记录。 (参数详细介绍)
图例符号是一个宽高比为 3:2 的矩形。使用 +Swidth[/height] 可自定义宽度高度。
- -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]
将输入坐标转换为循环坐标。 (参数详细介绍)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
生成一维数组
下面将展示如何使用 math 生成一维数组(其中大部分操作也可通过 linux 中的 seq 命令方便地实现)
不使用任何子选项
以 0.1 为步长,生成 3.1 到 4.2 等等间隔序列
gmt math -o0 -T3.1/4.2/0.1 T =
3.1
3.2
...
4.2
+a 选项
该选项不对生成的数列进行运算操作,而是将该数列以列的形式追加到输出表数据,类似 linux 中的 paste 命令。
+b 选项
以 3 和 20 分别为起点和终点,创建一个 2 的整数幂的列表,将生成 的整数幂以 1 为步长取值 -T3/20/1+b
gmt math -o0 -T3/20/1+b T =
4
8
16
+l 选项
以 7 和 135 分别为起点和终点,先创建一个 10 的整数幂的列表,当 inc 为 1 时,输出该列表;当 inc 为 2 时,同时输出该列表中每个元素的 1,2,5 倍值(不包括超出原始数据范围的部分); 当 inc 为 3 时,同时输出 该列表中每个元素的 1,2,…,9 倍值(同样不包括超出原始数据范围的部分)。 -T7/135/2+l 将会生成如下数列
gmt math -o0 -T7/135/2+l T =
10
20
50
100
inc 为负整数时,将实现如下效果
gmt math -o0 -T1e-4/1e4/-2+l T =
0.0001
0.01
1
100
10000
+i 选项
该选项将以 1 作为默认步长,第三个数字做为每步长中的数字个数 length。假设需要在 1 分钟内每 24 秒生成一帧
gmt math -o0 -T0/60/24+i T =
0
0.0416666666667
0.0833333333333
0.125
0.166666666667
...
60
+n 选项
生成固定长度的数列。以 3.44 和 7.82 为 起点和终点,生成长度为 5 的等间隔序列
gmt math -o0 -T3.44/7.82/5+n T =
3.44
4.535
5.63
6.725
7.82
-T 后直接加文件或逗号分隔的数列
-T 后可以直接加文件,文件中即为要生成的列表;另外,可以直接使用逗号分隔, 将列表附加到 -T 选项后,如下为 Fibonacci 数列前 6 项
gmt math -o0 -T0,1,1,2,3,5 T =
0
1
1
2
3
5
注 : 如果数列只包含一个值,必须在其后加逗号以表明仍是一个数列
+u 选项
如果文件或者逗号分隔的数列中有重复数字或未排序,可以使用 +u 选项去重并排序。
+t 选项
生成绝对时间序列。在 inc 后分别添加 y ,o ,d ,h , m 和 s 表示时间步长的单位为年,月,日,时,分,秒。在其后附加 +t 选项, 可以进一步强调生成时间序列,也可以不加
gmt math -o0 -T2020-03-01T/2020-03-07T/1d T =
2020-03-01T00:00:00
2020-03-02T00:00:00
2020-03-03T00:00:00
2020-03-04T00:00:00
2020-03-05T00:00:00
2020-03-06T00:00:00
2020-03-07T00:00:00
生成距离序列
如果输入文件中包含两列以上的数据,可以使用前两列计算距离,并生成等距序列。 在 inc 后分别添加 d,m,s,e,f,M,n 和 u 表示距离步长的单位为度,分,秒,米,英尺,公里,英里,海里,英尺。如果 为笛卡尔坐标,使用 c 作为距离步长单位。
+e 选项
如果只给定 inc 而从数据中获取最大值和最小值,则 (max - min)/inc 可能 不是整数,GMT 讲会自动对 inc 进行一定的调整。如果不想调整 inc ,则可以 使用 +e 选项,GMT 会固定最小值,适当调整最大值。
示例
用包含海底深度的远程数据文件 @v3206_06.txt 绘制直方图,并使用 250 米的间距、使直方居中并绘制轮廓:
gmt histogram @v3206_06.txt -F -T250 -W0.25p -B -pdf plot
如果了解数据的分布情况,可以显式指定范围和比例尺。 例如,用文件 errors.xy 中的 y 值(第 2 列)绘制直方图,使用 1 米的间距,绘制范围为 -10 到 +10 米, x 轴比例尺为 0.75 cm/m,y 轴比例尺为 0.01 cm/计数,每隔 2 米和 100 个计数进行标注,并使用黑色直方:
gmt begin plot
gmt histogram errors.xy -T1 -R-10/10/0/0 -Jx0.75c/0.01c -Bx2+lError -By100+lCounts -Gblack -i1
gmt end show
由于未指定 y 轴范围, histogram 将以 100 的整数倍为增量自动计算 ymax。
访问 绘制直方图 以查看更多示例。