我正在处理以下数字,这是我的域名:
[-17,-17,-13,-12,-10,-9,-8,-7,-7,-6,-6,-5,-5,-4,-3,-2,-2,-2,-2,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,7,7,7,8,8,8,8,8,9,9,9,10,10,11,11,11,12,14,15,18,19,19,22,36,39,50]
我的范围是一组6种颜色,如下所示:
["rgb(255,232,0)", "rgb(20,162,212)", "rgb(175,94,156)", "rgb(0,177,106)", "rgb(247,148,30)", "rgb(0,82,156)"]
我的色阶设置如下:
var scaleToAssignColor = d3.scale.quantile()
.domain([-17,-17,-13,-12,-10,-9,-8,-7,-7,-6,-6,-5,-5,-4,-3,-2,-2,-2,-2,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,7,7,7,8,8,8,8,8,9,9,9,10,10,11,11,11,12,14,15,18,19,19,22,36,39,50])
.range(["rgb(255,232,0)", "rgb(20,162,212)", "rgb(175,94,156)", "rgb(0,177,106)", "rgb(247,148,30)", "rgb(0,82,156)"]);
当我调用scaleToAssignColor.quantiles时,我得到以下内容:
[0, 1, 2, 2, 6.333333333333343]
这个域的结果不是一组六种颜色,而只是五种颜色。
我理解,因为我的输出范围包含6个离散值,返回的阈值数组将只包含5(6 - 1)个值。我不是只将五种颜色的返回归因于返回的阈值数组(5),而是归因于以下内容:
分位数1包括任何小于但不包括0的数字; 分位数2任何大于,包括0和小于,但不包括1的数字; 分位数3任何大于,包括1和小于2但不包括2的数字; 分位数4任何大于,包括2和小于2但不包括2的数字; 分位数5任何大于,包括2和小于,但不包括6.333的数字;和 分位数6任何大于且包括6.333333333333343的数字。
摩擦是分位数4:因为永远不会有任何大于2,但也不包括2的数字,而且不会包括2,对应于分位数4的颜色永远不会返回。
所有这些都引出了一个问题:因为这个特定的数字域(一组评论的upvotes较少downvotes)会产生奇怪的分位数4(如上所述),这是一个错误还是我误解了某些东西(或者对于这个特定的域和范围使用错误的比例)?我怀疑它是后者。
提前致谢。
哈罗德哈珀答案 0 :(得分:1)
据我了解,其原因主要归结为如何定义分位数量表:
范围的长度(或基数)用于将域拆分为偶数段(在您的示例中,这意味着域被拆分为6个偶数段;域的长度为155,因此每个拆分将发生在155/6,或约26项)
该域有32个'2'实例,并且这些实例在升序数据中的位置意味着第三个和第四个'拆分'最终都是2的值。
答案 1 :(得分:0)
对于子孙后代的评论:
使用threshold scales。这是一个简单的例子:
coffee> d3 = require 'd3'
coffee> color = d3.scale.threshold().domain([5,30,100]).range(["red","orange","green"]);
coffee> color 6
'orange'
coffee> color 3
'red'
coffee> color 33
'green'