2014-10-05 160 views
2

我对d3非常陌生,觉得它有点压倒性。我有一个包含每个样本y1和y2的数组数组。使用D3绘制波形

waveformData = [[79, 140], [67, 145], [70, 152], ..... ] 

目前我画它像这样:

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"); 
} 

waveform

它的工作原理,但我没有这样做在D3的 '精神'。有人可以解释如何使用D3,因为它是为了这样的事情?

+0

答案考虑到这个类似的问题:http://stackoverflow.com/questions/8689498/drawing-multiple-lines-in-d3-js – Josh 2014-10-05 23:50:25

回答

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"); 
+2

您可能想要使用[面积图](http://bl.ocks.org/mbostock/3883195)。 – 2014-10-06 07:01:19