D3.js Array V4

    xiaoxiao2021-03-26  36

    统计 (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)

    >

    转载请注明原文地址: https://ju.6miu.com/read-599994.html

    最新回复(0)