这个陈述的含义是什么?
quantize = d3.scale.quantile().domain([0, 15]).range(d3.range(9));
Run Code Online (Sandbox Code Playgroud)
我看到域名是:
0 - 0
1 - 15
范围是0到8和quantize.quantiles
0 - 1.6
1 - 3.3
2 - 4.9
3 - 6.6
4 - 8.3
5 - 9.9
6 -11.6
7 -13.3
Run Code Online (Sandbox Code Playgroud)
如何计算quantze.quantiles的值?我试着打电话quantize(2)但结果却是1.quantile工作怎么样?
Ily*_*din 23
分位数标度的动机是获得代表数据集中值的实际分布的类.因此,有必要在施工期间提供完整的值列表.然后,比例将输入域(由这些值定义)分成间隔(分位数),使得大约相同数量的值落入每个间隔中.
从文档:
为了计算分位数,对输入域进行排序,并将其视为一组离散值.
因此,在指定域时,我们将整个值列表交给比例:
var scale = d3.scale.quantile()
.domain([1, 1, 2, 3, 2, 3, 16])
.range(['blue', 'white', 'red']);
Run Code Online (Sandbox Code Playgroud)
如果我们然后运行:
scale.quantiles()
Run Code Online (Sandbox Code Playgroud)
它将输出[2,3],这意味着我们的值的数量被分成这三个子集,分别由'blue','white'和'red'表示:
[1, 1] [2, 2] [3, 3, 16]
Run Code Online (Sandbox Code Playgroud)
请注意,当您要显示的数据中存在异常值时,应避免使用此比例.在上面的例子中,16是一个落入上分位数的异常值.它被赋予与3相同的类,这可能不是所需的行为:
scale(3) // will output "red"
scale(16) // will output "red"
Run Code Online (Sandbox Code Playgroud)