You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用D3创建等频(深度)分箱?

D3实现等频(深度)分箱

D3并非仅支持等宽分箱,完全可以实现等频分箱(每个分箱包含近似数量的观测值,阈值宽度不等),核心思路是利用分位数来指定分箱阈值。

实现示例

针对你提供的数据集,我们可以通过以下代码生成等频分箱:

const arr = [0, 0, 1, 10, 100, 102, 200, 253, 10000];
// 计算分位数作为分箱阈值,这里分成3个等频分箱
const quantiles = d3.quantile(arr, [0, 1/3, 2/3, 1]);
// 创建分箱生成器并传入自定义阈值
const binGen = d3.bin().thresholds(quantiles);
const bins = binGen(arr);

输出结果

生成的分箱如下:

[
  [0, 0, 1],
  [10, 100, 102],
  [200, 253, 10000]
]

对应的分箱阈值为:

[0, 10, 200, 10000]

原理说明

  • d3.quantile()函数会根据数据的分布,计算出对应分位点的数值,确保每个分位点之间的观测数量近似相等。
  • 将这些分位数传入d3.bin().thresholds(),就能覆盖默认的等宽阈值逻辑,生成等频分箱。
  • 若需要更多分箱,只需调整分位数数组即可,比如分成4个等频分箱,可使用[0, 0.25, 0.5, 0.75, 1]作为分位数参数。

内容的提问来源于stack exchange,提问作者Pierre Delecto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:12:13