0

我正在尝试将 d3.js 中箱线图中 y.domain 的最大值设置为所有数据的 90% 分位数。

我的代码位于http://bl.ocks.org/cgdnorth/7218544

我想更改y.domain([min,max]);为最大值等于所有数据的第 90 个而不是最大值。

谢谢你的帮助。

4

2 回答 2

2

D3 有一个d3.quantile函数,它接受一个排序的数字数组和一个分位数说明符,并从数组中返回与该分位数对应的值。因此,在您的情况下,您将使用:

var ninetieth = d3.quantile(numbers, 0.9);
于 2013-10-29T18:25:51.880 回答
0

您可以通过对所有值的数组进行排序然后对其进行索引来获得它,例如

var values = [];
data.forEach(function(d) { values = values.concat(e); });
values.sort(d3.ascending);
var max = values[Math.round((values.length-1)*0.9)];
于 2013-10-29T18:22:58.240 回答