基数插值曲线下的面积

时间:2018-10-01 22:46:13

标签: javascript html d3.js svg

我想计算曲线下蓝色区域的面积。该曲线是使用D3的line()从红色数据点进行基数插值制成的。

enter image description here

我试图以线性插值(沿黑线)的方式来计算面积,但它不是确切的数字。

请在这里帮助我。预先谢谢你!

2 个答案:

答案 0 :(得分:1)

如果要计算所有梯形部分面积的总和,可以使用以下公式:

Area = ((sum of all y values)- 0.5*((first y value)+(last y value)) * (delta x)

或者,JavaSript代码:

A = (y.reduce((s,v)=>s+v)-.5*(y[0]+y[y.length-1]))*deltax

答案 1 :(得分:1)

我基于出色的答案https://stackoverflow.com/a/10045537/4505826解决了这个问题。 请记住,路径必须是封闭路径,这意味着它必须以Z结尾。

运行代码时,浏览器会不断通知这些错误:

  • path.getPointAtLength()不是函数
  • path.getTotalLength()不是函数
  • 未捕获的TypeError:无法读取未定义的属性'createElementNS'

::::解决方案:如下调整上述代码::::

path.getPointAtLength(d)   ->    path.node().getPointAtLength(d)

path.getTotalLength(d)   ->    path.node().getTotalLength(d)

然后替换

var doc = path.ownerDocument;
var poly = doc.createElementNS('http://www.w3.org/2000/svg','polygon');

作者

var poly = document.createElementNS('http://www.w3.org/2000/svg','polygon');

从这个答案https://stackoverflow.com/a/25611318/4505826开始。