d3.geom.voronoi() 没有 return enaugh 多边形
d3.geom.voronoi() does not return enaugh polygons
这里是My fiddle
我在图表上绘制了一个初始点(对象)数组,然后我想为鼠标事件创建一个 voronoi 叠加层。
我的点对象的形式:(Fiddle行:4-12)
point {
id: 'id',
x: xCoordinate,
y: yCoordinate
}
还有我的 voronoi 代码:(Fiddle 行:95-112)
var voronoi = d3.geom.voronoi()
.x(function(d) {return x(d.x); })
.y(function(d) {return y(d.y); })
.clipExtent([[0,0],[w,h]]);
//Create the Voronoi grid
graph.selectAll("path")
.data(voronoi(points))
.enter().append("path")
.attr("d",function(d){return "M" + d.join("L") + "Z";})
.datum(function(d, i) { return d.point; })
.attr("class", function(d,i) { return "voronoi " + d.id; })
.style("stroke", "#000")
.style("fill", "#2074A0")
.style("opacity", ".3")
.style("pointer-events", "all")
.on("mouseover", function(d){document.getElementById('legend').innerHTML = d.id})
.on("mouseout", function(d){document.getElementById('legend').innerHTML = ''});
问题是 var voronoi = d3.geom.voronoi()...
returns numberOfPoints-4 多边形。无论点数如何,前 4 个多边形都会丢失。如果点数为 4 或更少,则不返回任何多边形。
这是错误还是我的代码有错误?
发现问题。问题在于 select 使用 graph.selectAll("path")
处理所有路径,而不仅仅是在 data(voronoi(points))
之后附加的路径
我向附加路径添加了一个 class 属性,然后 select 仅 class 的所有路径。
这里是My fiddle
我在图表上绘制了一个初始点(对象)数组,然后我想为鼠标事件创建一个 voronoi 叠加层。
我的点对象的形式:(Fiddle行:4-12)
point {
id: 'id',
x: xCoordinate,
y: yCoordinate
}
还有我的 voronoi 代码:(Fiddle 行:95-112)
var voronoi = d3.geom.voronoi()
.x(function(d) {return x(d.x); })
.y(function(d) {return y(d.y); })
.clipExtent([[0,0],[w,h]]);
//Create the Voronoi grid
graph.selectAll("path")
.data(voronoi(points))
.enter().append("path")
.attr("d",function(d){return "M" + d.join("L") + "Z";})
.datum(function(d, i) { return d.point; })
.attr("class", function(d,i) { return "voronoi " + d.id; })
.style("stroke", "#000")
.style("fill", "#2074A0")
.style("opacity", ".3")
.style("pointer-events", "all")
.on("mouseover", function(d){document.getElementById('legend').innerHTML = d.id})
.on("mouseout", function(d){document.getElementById('legend').innerHTML = ''});
问题是 var voronoi = d3.geom.voronoi()...
returns numberOfPoints-4 多边形。无论点数如何,前 4 个多边形都会丢失。如果点数为 4 或更少,则不返回任何多边形。
这是错误还是我的代码有错误?
发现问题。问题在于 select 使用 graph.selectAll("path")
处理所有路径,而不仅仅是在 data(voronoi(points))
我向附加路径添加了一个 class 属性,然后 select 仅 class 的所有路径。