1
我正在尝试创建<g>
元素foreach数据点,并在基于当前数据点的每个<g>
元素中添加一对不同的<text>
元素。我已经试过类似:d3.js嵌套选择
var g = vis.selectAll("g").data(dd,function(d){ return d.data.name+d.x+d.y+d.s; });
var gs = g.enter().append("g");
g.exit().remove();
var t = gs.selectAll("text").data(function(d) { console.log(d); return d; });
t.enter().append("text").attr("x",function(d){ return d.x+d.s/2; })
.attr("y",function(d){ return d.y+d.s/4; })
.attr("font-family","Verdana")
.attr("font-size","9")
.attr("text-anchor","middle")
.text(function(d){ return d.data.name; });
t.attr("x",function(d){ return d.x+d.s/2; })
.attr("y",function(d){ return d.y+d.s/4; })
.attr("font-family","Verdana")
.attr("font-size","9")
.attr("text-anchor","middle")
.text(function(d){ return d.data.name; });
t.exit().remove();
但我得到的是一组空<g>
元素。我做了什么明显错误?
嗯,我简化了一下我的问题。我想为每个组添加一堆东西(几个文本元素,一个矩形等)。我已经使用扁平结构实现了它,我手动放置每个元素,但这会使转换不同步。我认为嵌套结构是有意义的,因为我基本上希望每个数据点都由一组项目表示。你对这类问题有什么建议? – user1167650
这听起来不像嵌套选择会很有用 - 它们绝对无助于您的不同步转场。您可以尝试为转换设置自定义参数,甚至根据您要执行的操作编写自定义转换。请参阅[文档](https://github.com/mbostock/d3/wiki/Transitions)。 –
暂且不论嵌套东西,如何可以附加多个元素,其中元件通过数据点的一些阵列创建的元件(即,元件进入/退出/更新等做内部元件进入) –
user1167650