d3.js - 画了一条直线,但它是弯曲的 d3

标签 d3.js svg

我试着用这条直线:

enter.append('line')
   .attr('class', 'lineClass')
   .style("stroke", "blue")
   .style("stroke-width", "1.5px;")
   .attr('x1', function(d) { return 500; })
   .attr('y1', function(d) { return 50; })
   .attr('x2', function(d) { return 800; })
   .attr('y2', function(d) { return 40; });

行属性将是带有数据的实际函数。看我的图,为什么线是歪的?如果代码没有问题,您是否知道可能导致此问题的原因? enter image description here

最佳答案

原因是您在数据集的相同 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; });

工作示例 here

现在弯曲会消失,因为你在 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; });

工作示例 here

所以简而言之,你不应该一遍又一遍地画同一条线......

希望这对您有所帮助!

关于d3.js - 画了一条直线,但它是弯曲的 d3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235243/

相关文章:

javascript - d3.js x3dom : How to freeze camera position and get an axis?

javascript - 具有多个键的嵌套运算符的 D3.js 汇总

google-chrome - SVG 不会显示

Angular 2 : how to add/change css style in svg?

d3.js - Pie 不是 Ember D3 饼图中的函数

javascript - 如何从d3中的json请求数据?

javascript - 添加滚动条以查看 SVG d3.js 的全部内容

html - 如何创建带虚线边框的圆形 svg 进度条

javascript - SVG 圆圈在 d3 中堆积

HTML5 Canvas - 放大一个点