我正在尝试将 d3.js 中箱线图中 y.domain 的最大值设置为所有数据的 90% 分位数。
我的代码位于http://bl.ocks.org/cgdnorth/7218544。
我想更改y.domain([min,max]);
为最大值等于所有数据的第 90 个而不是最大值。
谢谢你的帮助。
我正在尝试将 d3.js 中箱线图中 y.domain 的最大值设置为所有数据的 90% 分位数。
我的代码位于http://bl.ocks.org/cgdnorth/7218544。
我想更改y.domain([min,max]);
为最大值等于所有数据的第 90 个而不是最大值。
谢谢你的帮助。
D3 有一个d3.quantile函数,它接受一个排序的数字数组和一个分位数说明符,并从数组中返回与该分位数对应的值。因此,在您的情况下,您将使用:
var ninetieth = d3.quantile(numbers, 0.9);
您可以通过对所有值的数组进行排序然后对其进行索引来获得它,例如
var values = [];
data.forEach(function(d) { values = values.concat(e); });
values.sort(d3.ascending);
var max = values[Math.round((values.length-1)*0.9)];