用D3绘制波形

Ash*_*ury 1 javascript svg d3.js

我是d3的新手,觉得有点不知所措。我有一个数组,每个样本包含y1和y2。

waveformData = [[79, 140], [67, 145], [70, 152], ..... ]
Run Code Online (Sandbox Code Playgroud)

目前,我正在绘制它,如下所示:

waveformData.forEach(function(data,i){
    svg.append("line")
        .attr('y1', data[0])
        .attr('y2', data[1])
        .attr('x1', i +0.5)
        .attr('x2', i +0.5)
        .attr("stroke-width", 1)
        .attr("stroke", "green");
}
Run Code Online (Sandbox Code Playgroud)

波形图

它可以工作,但是我并没有在d3的“精神”中做到这一点。有人可以解释如何将d3用于此类用途吗?

Tej*_*tha 5

D3方式为:

svg.selectAll('line')
  .data(waveformData)
.enter().append('line')
  .attr('y1', function(d) { return d[0]; })
  .attr('y2', function(d) { return d[1]; })
  .attr('x1', function(d, i) { return i +0.5; })
  .attr('x2', function(d, i) { return i +0.5; })
  .attr("stroke-width", 1)
  .attr("stroke", "green");
Run Code Online (Sandbox Code Playgroud)

  • 您可能要使用[面积图](http://bl.ocks.org/mbostock/3883195)。 (2认同)