我想在circle
元素中创建g
。我可以创建组并将元素转换得很好。但是,我还没弄清楚如何在g
元素中创建圆圈。
使用此代码,我获得了元素g
和圈子,但圈子位于g
之外:
var data = [
{"x": 10, "y": 10},
{"x": 20, "y": 20},
{"x": 30, "y": 30},
];
var svg = d3.select('svg');
var t = d3.transition().duration(750);
var group = svg
.selectAll(".groups")
.data(data) // JOIN
group.exit() // EXIT
.remove();
var groups = group.enter() // ENTER
.append("g")
.attr('class', 'groups')
.merge(group)
.attr('transform', function(d) { return 'translate(' + d.x + ',' + d.y + ')'; });
var circles = svg.selectAll('.circles')
.data(data)
.style("fill", "blue");
circles.exit()
.style("fill", "brown")
.transition(t)
.style("fill-opacity", 1e-6)
.remove();
circles.enter()
.append('circle')
.attr('r', 2.5)
.attr('class', 'circles')
.style("fill", "green")
.merge(circles)
.attr("r", (d) => d.y/5)
.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; })
我该如何解决? 以下是代码段:https://plnkr.co/edit/pnoSGSEv7pDo28HxRifd
答案 0 :(得分:0)
您需要通过选择组而不是svg:
来附加到组 var circles = groups.selectAll('.circles')
.data(data)
.style("fill", "blue");