d3js v5添加曲线内核密度估算器

时间:2018-07-17 13:47:48

标签: javascript d3.js

根据此示例:https://bl.ocks.org/mbostock/4341954,我尝试做同样的事情:显示直方图和核密度估计。 数据,轴,仓和直方图看起来很完美,但是在添加曲线时遇到麻烦。 enter image description here

实际上,变量“ density”的第二个键始终等于零。 我的假设:我应该使用value0而不是所有数据来计算密度。

let density = kde(kernelEpanechnikov(7), x.ticks(100))(data)

我不喜欢这种语法。我该如何解决?

这是我的代码:https://plnkr.co/edit/7mvcmLdn95PU4dSmQqpP?p=preview

1 个答案:

答案 0 :(得分:2)

在此示例中,迈克的数据是一个纯数字数组:

[79,54,74,62,85,55,88,85,51,85,54,84,78,47,83,52,62,84,52,79,51,47,78,69,...

在这里:kde(kernelEpanechnikov(7), x.ticks(100))(data)他将该数组传递给内核密度估计器。

您的数据是一个对象数组,这些对象本身无法用于通过内核密度函数指定密度。但是,如果传递数字数组,则会得到结果,例如:

let density = kde(kernelEpanechnikov(7), x.ticks(100))
                ( data.map(function(d){  return d.value0; }) )