1

我正在使用以下一组数字,它们是我的域:

[-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(如上),这是一个错误还是我误解了某些东西(或使用这个特定领域和范围的比例错误)?我怀疑是后者。

提前致谢。

哈罗德哈珀

4

2 回答 2

1

据我了解,其原因基本上归结为分位数比例的定义方式:

范围的长度(或基数)用于将域拆分为偶数段(在您的示例中,这意味着域被拆分为 6 个偶数段;域的长度为 155,因此每个拆分将发生在 155 /6,或约 26 项)

该域有 32 个“2”实例,这些在升序数据中的位置意味着第三个和第四个“拆分”最终的值为 2。

于 2013-08-22T03:27:49.180 回答
0

将其从评论中删除,以供后代使用:

使用阈值尺度。这是一个简单的例子:

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'
于 2014-02-21T11:16:52.347 回答