在d3.js中分箱(减少显示的元素数量)

时间:2014-11-25 11:56:56

标签: d3.js range binning

我对d3.js很新,我得到了一个关于分箱的问题。我正在研究一种使用矩阵布局的可视化,以便可视化集合(行)和元素(列)。由于集合的数量非常多,我想使用某种分箱,即我想将输入域中的值映射到某个输出范围,以减少显示的项目数量在屏幕上。

让我们考虑以下基本代码段:

var input = [
  { degree: 1, count: 2070 },
  { degree: 2, count: 1311 },
  { degree: 3, count: 398 },
  { degree: 4, count: 93 },
  { degree: 5, count: 9 }    
];

var desired_bins = 3;

在上面的例子中,我有一个长度为5的数组作为输入。在这种情况下,我的输出所需的长度是3项,由desired_bins = 3。

给出

我想要计算的内容如下:

var output = [
    { range: "1", count: 2070 },
    { range: "2", count: 1311 },
    { range: "3-5", count: 500}    
];

分箱背后的逻辑应如下: 每个出纸槽不应包含多于n / k的值,其中n是输入中的元素总数(2070 + 1311 + ... + 9 = 3881),k是所需输出箱的数量,在这种情况下为3 。 因此每个bin应包含最多1294个元素。如果输入域中的一个项目已经包含超过1294个元素,那么它必须是一个单独的出纸槽,因为它不能被拆分。

我正在研究d3.scales,它可以用于很多事情,但我不确定它们是否适合我的特定用例。

如何使用d3的内置功能解决这个问题?或者我只是需要从头开始实现分箱算法?

0 个答案:

没有答案