Причина в том, что вы снова и снова рисуете одну и ту же линию на одном и том же x1/x2/y1/y2 для набора данных.
Это сделает вашу линию кривой:
var svg = d3.select('svg');
var dataSet = [10,20,30,20,30,20,30,20,30,20,30,20,30,20,30,20,30];//many data 17 times you will draw line.
var myLine = svg.selectAll('line')
.data(dataSet)
.enter()
.append('line')
.style("stroke", "blue")
.attr('x1', function(d) { return 100; })
.attr('y1', function(d) { return 200; })
.attr('x2', function(d) { return 300; })
.attr('y2', function(d) { return 40; });
Рабочий пример здесь
Теперь кривизна исчезнет, потому что вы делаете одну линию на x1/x2/y1/y2.
var svg = d3.select('svg');
var dataSet = [10];//you will draw line ones
var myLine = svg.selectAll('line')
.data(dataSet)
.enter()
.append('line')
.style("stroke", "blue")
.attr('x1', function(d) { return 100; })
.attr('y1', function(d) { return 200; })
.attr('x2', function(d) { return 300; })
.attr('y2', function(d) { return 40; });
Рабочий пример здесь
Короче говоря, вы не должны рисовать одну и ту же линию снова и снова...
Надеюсь это поможет!
12.12.2015