我一直在尝试使用循环来准备数据集以使用 d3 进行可视化,但是从循环中获取数据时遇到了一些问题。
假设我有 2 个数据集,
setX = [1,2 ,3, 4, 5] 和 setY = [10, 20, 30, 40, 50]
我创建 for 循环以从 2 个数据集中获取坐标 x 和 y 的数组。
var point = new Object();
var coordinate = new Array();
for(var i=0; i < setX.length;i++){
point.x = setX[i];
point.y = setY[i];
coordinate.push(point);
}
并从数组中拉回数据以绘制
var d3line = d3.svg.line()
.x(function(d){return d.x;})
.y(function(d){return d.y;})
.interpolate("linear");
但是 d3line(coordinate) 的 x 和 y 数据的值始终是 5 和 50。有没有正确的方法来解决这个问题?
这是代码示例
<div id="path"></div>
<script>
var divElem = d3.select("#path");
canvas = divElem.append("svg:svg")
.attr("width", 200)
.attr("height", 200)
var setX = [1,2 ,3, 4, 5];
var setY = [10, 20, 30, 40, 50];
var point = new Object();
var coordinate = new Array();
for(var i=0; i < setX.length;i++){
point.x = setX[i];
point.y = setY[i];
coordinate.push(point);
}
var d3line = d3.svg.line()
.x(function(d){return d.x;})
.y(function(d){return d.y;})
.interpolate("linear");
canvas.append("svg:path")
.attr("d", d3line(coordinate))
.style("stroke-width", 2)
.style("stroke", "steelblue")
.style("fill", "none");
</script>
您还可以在http://jsfiddle.net/agadoo/JDtqf/上看到我的此代码示例