D3.js Array V4

统计 (Statistics)

d3.min(array[,accessor]):获取数组中最小值

var array1 = [10,20,30,2,4,15];
var array2 = ["10","20","30","2","4","15"];
var array3 = [{name:20},{name:10},{name:3}];
var min1 = d3.min(array1)//2 --数值时获取数值最小值
var min2 = d3.min(array2)//"10"--字符串时获取字符串首字符最小值
var min3 = d3.min(array3)//{name:20}--对象时获取内存地址最小值
//使用访问器(accessor):
d3.min(array3,function (d) {
    return d.name;
})

d3.max(array[,accessor]):获取数组中最大值

d3.extent(array[,accessor]):获取数组范围【min,max】
d3.sum(array[,accessor]):获取数组和;含空值的数组会忽略空值;
d3.mean(array[,accessor]):获取数组平均值
d3.median(array[,accessor]):获取数组中位数
d3.quantile(array[,accessor]):获取数组分位数

分位数:简单理解分成多份。很容易误解为等分,但实际是根据数组划分;

//知道分位数就不用看了
var array = [0,20,30,40,50,100];//这里先理解为0-100分成5份;
var quantile1 = d3.quantile(array,0);//0
var quantile2 = d3.quantile(array,0.2);//20
var quantile3 = d3.quantile(array,0.4);//30
var quantile4 = d3.quantile(array,0.6);//40
var quantile5 = d3.quantile(array,0.8);//50
var quantile6 = d3.quantile(array,1);//100
//但是0.7和0.9 又是从实际对应数组中去中值
var quantile7 = d3.quantile(array,0.7)//45  40-50
var quantile7 = d3.quantile(array,0.9)//75  50-100

d3.variance(array[,accessor]):获取数组方差
d3.deviation(array[,accessor]):获取数组标准差

查询(Search)

d3.scan(array[,comparator]):通过比价器来获取最值的索引;默认升序即查询最小值索引;

//未指定比较器
//查询最小值索引
d3.scan(array3,function (a,b) {
    return a.name - b.name;
})
//查询最大值索引
d3.scan(array3,function (a,b) {
    return b.name - a.name;
})

//========
//指定比较器
//升序查询最小值
d3.scan(array3,function (a,b) {
    return d3.ascending(a.name,b.name);
})
//降序查询最大值
d3.scan(array3,function (a,b) {
    return d3.descending(a.name,b.name);
})

d3.bisectLeft(array,x[,lo[hi]]): || d3.bisect(array,x[,lo[hi]]): || d3.bisectRight(array,x[,lo[hi]]):

以下说明可能错误
当array无序or倒序:失效or返回大姨妈值
当x是数组中的元素时:

bisectLeft:返回索引;x应插入其左侧
bisect:返回索引;x应插入其右侧默认执行bisectRight
bisectRight:返回索引;x应插入其右侧

当x不是是数组中的元素时:

全部默认为bisectLeft;

以下待补充

d3.bisector(accessor)
d3.bisector(comparator)
bisector.left(array,x[,lo[,hi]])
bisector.right(array,x[,lo[,hi]])
d3.ascending(a,b)
d3.descending(a,b)

转换:返回新数组

d3.merge:合并数组,官方提起了类似于内置的array.concat方法;区别在于对于二维数组更方便;(array of arrays….坑爹的翻译:数组数组)

要多敲,多敲就会发现一些细节

1.合并数组

//官网例子就不复述了,下面举个特例说明强调数组的原因
var arrayofarrays = [1,2,[11,22,33]];
//若是想得到【12112233】;
var s = arrayofarrays;//简化一下
d3.merge(d3.merge([d3.merge([[s[0]],[s[1]]]),s[2]]));
//前面的元素是数字;需要[s[0]]转换;
//再看concat
[s[0]].concat([s[1]]).concat(s[2]);
//同样需要转换一下

2.为什么比concat方便

var s= [[1,2],[11,22,33]];
d3.merge(s)
s[0].concat(s[1])

d3.pairs(array):拆解数组配对;

var array = [1,[11,22],3,4,5];
var s = d3.pairs(array);//[[1,[11,22]],[[11,22],3],[3,4],[4,5]];

d3.permute(array,indexes):置换

指定索引(indexes)提取数组中的元素构成新的数组;
indexes可空缺可重复;
array也可以是对象;indexes即为键名

d3.shuffle(array[,lo[,hi]]):打乱数组,可设定指定索引;

var array = [0,1,2,3,4,5,6,7,8];
var shuffle = d3.shuffle(array,2,9);//[0,1,6,2,5,4,3,8,7];

d3.ticks(start,stop,count):

获取【start,stop】分割count+ 1份的个点

d3.tickStep(start,stop,count):

获取步长

d3.range([start,]stop[,step]):

默认start= 0;step = 1;

d3.range(10,20,0.9);
//[10, 10.9, 11.8, 12.7, 13.6, 14.5, 15.4, 16.3, 17.2, 18.1, 19, 19.9]

d3.transpose(matrix):转置二维数组

d3.zip(arrays):生成二维数组

直方图(Histograms)

>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值