volumeBar
New in version 1.30.21.
语法
volumeBar(X, interval, [label=’seq’])
参数
X 是数值型向量。
interval 非零的数值,表示一个定值或百分比。
label 为标记分组的方法,有以下三种类型:
‘seq’:默认值,表示按 0, 1, 2, 3… 的顺序标记组号。
‘left’:当前分组第一个元素前所有元素的累加和作为组号。第1个分组的组号为 0。
‘right’:X 从第一个元素开始累加到当前分组中最后一个元素的值作为组号。
详情
对 X 进行累加,并根据指定的阈值进行分组,返回数据所属分组的组号。分组规则为:
依次累加 X 中的元素
若阈值为正数,则累加和大于等于阈值的所有数据划分为一组。
若阈值为负数,则累加和小于等于阈值的所有数据划分为一组。
然后从下一个元素重新开始累加,并分组,以此类推,最后剩下的元素不管累加和是否大于等于阈值,都划为一组。
interval 确定了累加分组的阈值,可以是一个定值也可以是一个百分比:
当 interval ∈ (0, 1) 时, 表示一个百分比,阈值为 sum(X) * interval。注意,系统会将阈值转换为与 X 相同的类型再进行比较。例如,X 是整型,则累加和将与 floor(sum(X) * interval)进行比较。
否则,interval 表示一个定值,即阈值为 interval。
例子
$ X = 1 3 4 2 2 1 1 1 1 6 8
$ volumeBar(X, 4)
[0,0,1,2,2,3,3,3,3,4,5]
$ volumeBar(X, 4, 'left')
[0,0,4,8,8,12,12,12,12,16,22]
$ volumeBar(X, 4, 'right')
[4,4,8,12,12,16,16,16,16,22,30]
$ X = -6 2 -4 -5 -1 3 -2 -1
$ volumeBar(X, -2)
[0,1,1,2,3,3,3,3]
$ volumeBar(X, -2, 'left')
[0,-6,-6,-8,-13,-13,-13,-13]
$ volumeBar(X, -2, 'right')
[-6,-8,-8,-13,-14,-14,-14,-14]
$ sym = `st001`st002`st003`st001`st003`st004
$ time = 2022.01.01 2022.01.01 2022.01.02 2022.01.02 2022.01.03 2022.01.03
$ volume = 190 212 198 211 205 199
$ t = table(sym, time, volume)
$ select *, volumeBar(volume, 600) as tag from t
sym | time | volume | tag |
---|---|---|---|
st001 | 2022.01.01 | 190 | 0 |
st002 | 2022.01.01 | 212 | 0 |
st003 | 2022.01.02 | 198 | 0 |
st001 | 2022.01.02 | 211 | 1 |
st003 | 2022.01.03 | 205 | 1 |
st004 | 2022.01.03 | 199 | 1 |