我试图将d3.js中boxplot中的y.domain的最大值设置为所有数据的90%分位数。
我的代码位于http://bl.ocks.org/cgdnorth/7218544。
我想更改y.domain([min,max]);
使其最大值等于所有数据的90,而不是最大值。
感谢您的帮助。
答案 0 :(得分:2)
D3有一个d3.quantile函数,它接受一个排序的数字数组和一个分位数说明符,并返回与该分位数对应的数组中的值。所以在你的情况下你会使用:
var ninetieth = d3.quantile(numbers, 0.9);
答案 1 :(得分: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)];