javascript – 在D3中绘制多边形数据的正确格式

前端之家收集整理的这篇文章主要介绍了javascript – 在D3中绘制多边形数据的正确格式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试了这种不同的方式,但似乎没有任何工作.这是我目前拥有的
var vis = d3.select("#chart").append("svg")
         .attr("width",1000)
         .attr("height",667),scaleX = d3.scale.linear()
        .domain([-30,30])
        .range([0,600]),scaleY = d3.scale.linear()
        .domain([0,50])
        .range([500,0]),poly = [{"x":0,"y":25},{"x":8.5,"y":23.4},{"x":13.0,"y":21.0},{"x":19.0,"y":15.5}];

vis.selectAll("polygon")
    .data(poly)
    .enter()
    .append("polygon")
    .attr("points",function(d) { 
        return [scaleX(d.x),scaleY(d.y)].join(",")})
    .attr("stroke","black")
    .attr("stroke-width",2);

我假设这里的问题在于我将点数据定义为单个点对象的数组,或者与我如何编写.attr(“points”,…)的函数有关

我一直在网路上看到一个教程或如何绘制一个简单的多边形的例子,但我似乎找不到.

解决方法

多边形看起来像:< polygon points =“200,10 250,190 160,210”/>

所以,你的完整的poly数组应该会产生一个长的字符串,它将创建一个多边形.因为我们在谈论一个多边形,所以数据连接也应该是只有一个元素的数组.这就是为什么下面的代码显示:data([poly])如果你想要两个相同的多边形,你会将其更改为数据([poly,poly]).

目标是使用4个对象从数组中创建一个字符串.我用这个地图和另一个加入:

poly = [{"x":0.0,"y":25.0},"y":15.5}];

vis.selectAll("polygon")
    .data([poly])
  .enter().append("polygon")
    .attr("points",function(d) { 
        return d.map(function(d) {
            return [scaleX(d.x),");
        }).join(" ");
    })
    .attr("stroke",2);

见工作小提琴:http://jsfiddle.net/4xXQT/

猜你在找的JavaScript相关文章