我想从cmb文件中的一组点使用http://mbostock.github.com/d3/ex/voronoi.html绘制voronoi图.
我修改了代码:
var w = 1200,
h = 800;
d3.text("ReMeRi_4_2_2_0.csv", function(datasetText) {
var vertices = d3.csv.parseRows(datasetText);
var svg = d3.select("#chart")
.append("svg")
.attr("width", w)
.attr("height", h)
.attr("class", "BuPu");
svg.selectAll("path")
.data(d3.geom.voronoi(vertices))
.enter().append("path")
.attr("class", function(d, i) { return i ? "q" + (i % 9) + "-9" : null; })
.attr("d", function(d) { return "M" + d.join("L") + "Z"; })
svg.selectAll("circle")
.data(vertices.slice(1))
.enter().append("circle")
.attr("transform", function(d) { return "translate(" + d + ")"; })
.attr("r", 2)
text1 = svg.append("svg:text")
.text("control")
.attr("x", 150)
.attr("y", 200)
.style("stroke", "orange")
.style("stroke-width", 0)
.style("font-size", "80%")
.style("fill", "orange");
});
Run Code Online (Sandbox Code Playgroud)
这些点被正确绘制但是细分的多边形不是.
我试图添加标题行和csv.parse()函数没有成功.一开始我认为解决方案是迭代数组解析浮动,但我无法做到.如果这就是为什么要正确绘制点的原因?
csv文件如下所示:
0.0,0.0
116.78032769067718,0.0
193.02842412648215,78.92418723196411
323.01058809711515,54.15210221124609
378.8576448450217,202.5192012545716
...
Run Code Online (Sandbox Code Playgroud)
正如您所建议的,我认为这是数字被解析为字符串而不是数字的问题。即使这不是破坏它的原因,修复它也是很好的。这是一种方法(可能是一种更惯用的方法,不知道):
var vertices = d3.csv.parseRows(
datasetText,
function(pt) { return [parseFloat(pt[0]), parseFloat(pt[1])]; })
);
Run Code Online (Sandbox Code Playgroud)
这可能会解决你的问题。