首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3.scale.quantile是如何工作的?

d3.scale.quantile是如何工作的?
EN

Stack Overflow用户
提问于 2012-05-14 08:38:25
回答 2查看 21.4K关注 0票数 17

这句话的意思是什么?

代码语言:javascript
复制
quantize = d3.scale.quantile().domain([0, 15]).range(d3.range(9));

我看到域名是:

0-0 1- 15

范围从0到8,quantize.quantiles

代码语言:javascript
复制
0 - 1.6
1 - 3.3
2 - 4.9
3 - 6.6
4 - 8.3
5 - 9.9
6 -11.6
7 -13.3

如何计算quantize.quantiles的值?我试着打电话给quantize(2),但结果是1quantile是如何工作的?

EN

回答 2

Stack Overflow用户

发布于 2013-07-09 16:52:45

分位数标度的动机是获取代表数据集中值实际分布的类。因此,有必要在施工期间为其提供完整的值列表。然后,标度将输入域(由这些值定义)分割为间隔(分位数),使大约相同数量的值落入每个间隔中。

从文件中:

为了计算分位数,对输入域进行排序,并将其视为离散值的总体。

因此,在指定域时,我们提交了值的整个列表:

代码语言:javascript
复制
var scale = d3.scale.quantile()
  .domain([1, 1, 2, 3, 2, 3, 16])
  .range(['blue', 'white', 'red']);

如果我们接着跑:

代码语言:javascript
复制
scale.quantiles()

它将输出2,3,这意味着我们的值被分割成这三个子集,分别由“蓝色”、“白色”和“红色”表示:

代码语言:javascript
复制
[1, 1] [2, 2] [3, 3, 16]

请注意,当要显示的数据中存在异常值时,应避免此比例。在上面的例子中,16是一个掉进上分位数的离群值。它被分配给与3相同的类,这可能不是期望的行为:

代码语言:javascript
复制
scale(3)   // will output "red"
scale(16)  // will output "red"
票数 26
EN

Stack Overflow用户

发布于 2012-05-26 02:47:16

我建议阅读分位数尺度文件,特别是在quantize.quantiles()上阅读

但是基本上,d3看到这个标度的输出范围中有9个值,所以它根据2个值数据集创建了9个分位数: 0,15。

这导致您在问题中显示的quantize.quantiles()值: 1.6、3.3、..13.3,这些表示分位数的界限--任何小于1.6的内容都将映射到输出范围的第一个元素(在本例中为零)。小于3.3且大于1.6的任何内容都将映射到输出范围(一个)的第二个元素。因此,量化(2)=1,如预期。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10579944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档