【发布时间】:2023-03-23 08:17:01
【问题描述】:
在下面的代码中,我希望为变量 arr 赋值。目前我是通过引用点数组的每个索引来手动完成的。有没有办法通过使用 for 循环或类似的东西一步完成。
var svg = d3.select("body")
.append("svg")
.attr("width", 2000)
.attr("height", 2000);
var scren = [1, 2, 3, 1, 4, 5, 6, 4];
var maximum =d3.max(scren);
var points = d3.range(1, maximum).map(function(i) {
return [i * 2000 / (maximum), 350];
});
var arr = [
{d: 'M ' + points[1][0] +' 350 A 10 10 0 1 0 '+ points[0][0]+' 350', stroke: 'green', 'strokewidth': 2, fill: 'none'},
{d: 'M ' + points[2][0] +' 350 A 10 5 0 1 0 ' + points[1][0]+' 350', stroke: 'green', 'strokewidth': 2, fill: 'none'},
// etc..
];
svg.selectAll('path')
.data(arr)
.enter()
.append('path')
.attr('d', function(d) {return d.d;})
.attr('stroke', function(d) {return d.stroke;})
.attr('stroke-width', function(d) {return d.strokewidth;})
.attr('fill', function(d) {return d.fill;});
svg.selectAll("circle")
.data(points)
.enter()
.append("circle")
.attr("cx", function(d) {
return d[0];
})
.attr("cy", function(d) {
return d[1];
})
.attr("r", 5);
【问题讨论】:
标签: javascript arrays d3.js