我正在使用以下一组数字,它们是我的域:
[-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 的数字;分位数 4 任何大于并包括 2 且小于但不包括 2 的数字;分位数 5 任何大于并包括 2 且小于但不包括 6.333 的数字;和分位数 6 任何大于并包括 6.333333333333343 的数字。
问题是 Quantile 4:因为永远不会有任何数字大于(包括)2,但也小于 AND 不包括 2,所以永远不会返回对应于 Quantile 4 的颜色。
所有这些都引出了一个问题:由于这个特定的数字域(一组评论的赞成票列表减少了反对票)导致奇怪的分位数 4(如上),这是一个错误还是我误解了某些东西(或使用这个特定领域和范围的比例错误)?我怀疑是后者。
提前致谢。
哈罗德哈珀