javascript - 获取计算的直方图 bin 阈值

标签 javascript d3.js

我已正确应用 d3 (v 4.0) 直方图函数对数据数组进行分箱。我的代码如下所示:

var bins = d3.histogram()
     .domain([data_points_min, data_points_max])
     .thresholds(8)
     (data_points);

是否有检索 bin 阈值的函数?我想我可以遍历数组并确定每个 bin 中的最大值,但这会很乏味。我猜一定有一个函数,包括一个产生“令人赏心悦目”的 bin 阈值而不是一些可怕的十进制数的函数。

伪代码应该是这样的:

var bin_thresholds = bin.thresholds();

最佳答案

没有返回每个 bin 的下限和上限的方法(据我所知)。有一种方法可以返回 bin 的数量...

d3.thresholdSturges(values);

...这显然不是您想要的,特别是因为您已经设置了垃圾箱的数量。

但是,您不需要“遍历数组并确定每个 bin 中的最大值”。直方图生成器生成两个属性:

  • x0 - the lower bound of the bin (inclusive).
  • x1 - the upper bound of the bin (exclusive, except for the last bin).

因此,您可以遍历结果以仅获取这些属性。例如:

var data = d3.range(1000).map(() => Math.random() * 20);
var bins = d3.histogram()
  .thresholds(8)(data)

bins.forEach(function(d, i) {
  console.log("Array number " + i + " --> Lower limit: " + d.x0 + " Upper limit:" + d.x1)
})
<script src="https://d3js.org/d3.v5.min.js"></script>

PS:您不需要设置,因为您只是传递数组的最小值和最大值,这是默认域:

If domain is specified, sets the domain accessor to the specified function or array and returns this histogram generator. If domain is not specified, returns the current domain accessor, which defaults to extent. (emphasis mine)

关于javascript - 获取计算的直方图 bin 阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50720956/

相关文章:

javascript - 安排风 sails 升降机

javascript - React Native 中基于 API 的布局

javascript - 这是不是递归

javascript - 如何在JSP中实现机场自动完成功能?

javascript - 窗口未使用peer.js定义

javascript - 从热图中隐藏列

javascript - 为什么 D3 拖动不起作用?

javascript - d3.js 树 - 为指定的子节点设置深度?

javascript - jQuery 请求和 d3.js 之间的范围问题

javascript - D3 X轴缩放