D3 数组模块
可视化或分析数据通常由一个数组来表示,JavaScript 原生支持多种数组操作方法
- 修改数组自身的方法:
array.push(value)
- 追加一个或多个元素array.unshift(value)
- 在数组前添加一个或多个元素array.pop()
- 移除最后一个元素array.shift()
- 移除第一个元素array.reverse()
- 数组元素顺序翻转array.sort([compareFunction])
- 排序array.splice(start, [deleteCount], [item1, item2, ...])
- 添加或者移除
- 数组的存取方法:
array.concat(arg1, arg2...)
- 将数组与数组或值合并array.join([glue])
- 用指定的分隔符将数组元素连接起来转为一个字符串array.slice(begin, [end])
- 提取切片array.indexOf(item, [from])
- 找出指定元素的索引array.lastIndexOf(item, [from])
- 找出指定元素的最后一个索引
- 数组的迭代方法:
array.filter(function(item, index, array))
- 过滤匹配数组中所有符合条件的元素array.forEach(function(item, [index], [array]), [thisArg])
- 对每个元素执行某个方法array.every(function(item, index))
- 是否每个元素都符合给定的条件array.map(function(item, index, array))
- 根据指定的操作对每个元素执行后返回一个新的数组array.some(function(item, index))
- 是否存在符合某个条件的元素array.reduce(function(accumulator, item, index, array), [initial])
- 从左到右执行 reduce 操作并返回一个值array.reduceRight(function(accumulator, item, index, array), [initial])
- 从右到左执行 reduce 操作并返回一个值
基本统计方法
d3.min(iterable[, accessor])
对指定的可迭代对象iterable
进行自然排序并返回最小值,如果可迭代对象为空则返回undefined
。可选的参数accessor
是一个函数,可以用来自定义如何访问数组中的元素,对于元素是对象时,可以返回其中某个属性的值作为排序的目标。提示
与 JavaScript 内置的 Math.min(value1, value2, ...) 不同,这个方法可以忽略
undefined
、null
和NaN
等特殊值,在可视化分析时忽略缺失数据是很有用的提示
对比是以自然排序进行的而非隐式转换为数值再对比,如对字符串
['20', '3']
进行d3.min
操作返回20
, 而对数值[20, 3]
进行d3.min
操作则返回3
d3.max(iterable[, accessor])
返回最大值d3.extent(iterable[, accessor])
使用自然排序返回指定的可迭代对象的最小值和最大值,如果可迭代对象为空则返回[undefined, undefined]
d3.sum(iterable[, accessor])
对指定的数值型的可迭代对象计算其元素的和,如果数组为空或非数值则返回0
d3.mean(iterable[, accessor])
返回平均值d3.median(iterable[, accessor])
对指定的数值型的可迭代对象使用 R-7 方法 返回数组的中位数d3.quantile(iterable, p[, accessor])
返回指定的数值型的可迭代对象的 p-分位数,p
是[0, 1]
之间的小数,如p = 0.25
计算第一个四分位数,p = 0.75
表示第三个四分位数,这个方法也使用 R-7 方法jsvar a = [0, 10, 30]; d3.quantile(a, 0); // 0 d3.quantile(a, 0.5); // 10 d3.quantile(a, 1); // 30 d3.quantile(a, 0.25); // 5 d3.quantile(a, 0.75); // 20 d3.quantile(a, 0.1); // 2
d3.variance(iterable[, accessor])
返回指定的数值型的可迭代对象的 无偏估计方差 unbiased estimator of the population variance,如果数组中包含的元素个数小于 2 则返回undefined
d3.deviation(iterable[, accessor])
返回指定的数值型的可迭代对象的标准差提示
标准差定义为 方差bias-corrected variance() 的平方根