D3.js Json d3访问每个对象
如何使用d3访问最里面的子名称 我试着做: .text(函数(d){返回d.children?null:d.name;})D3.js Json d3访问每个对象,d3.js,D3.js,如何使用d3访问最里面的子名称 我试着做: .text(函数(d){返回d.children?null:d.name;}) 但它不起作用 当我这样做的时候 .text(函数(d){返回d.name}) 它只显示外部循环-->Don,David的名称 { "name": "Max", "value": 107, "children": [ { "name": "Don", "value": 60, "children" [ {"name": "CC", "va
但它不起作用 当我这样做的时候 .text(函数(d){返回d.name})
它只显示外部循环-->Don,David的名称
{
"name": "Max",
"value": 107,
"children": [
{
"name": "Don",
"value": 60,
"children" [
{"name": "CC", "value": 25},
{"name": "Jim", "value": 35}
]
},
{
"name": "David",
"value": 47,
"children": [
{"name": "Jeff", "value": 32},
{"name": "Buffy", "value": 15}
]
}
]
}
我以前有过数据↓ ↓
d3.json('flare.json', function (data) {
var canvas = d3.select('p1')
.append('svg')
.attr('width', 800)
.attr('height', 800)
var color = d3.scale.category20c();
var data1 = data.children;
canvas.selectAll('text')
.data(data1)
.enter()
.append('text')
.attr('x', function (d) { return 2; })
.attr('y', function (d, i) { return i * 15; })
.attr('fill', 'black')
.style('font-size', '12px')
.text(function (d) { return d.children ? null: d.name; })
当数据采用这种单一嵌套格式时,我的代码工作得很好,但当我对其进行双重嵌套时,它就不再工作了为此需要一个递归函数--
这将返回一个嵌套列表,其中包含没有子元素的元素的名称。您可以发布其余的代码吗?嘿,这是可行的,但我尝试将.text附加到形状上。如何获取数据,使其一个接一个地出现,而不是一大堆用逗号分隔的名称,这些名称以嵌套列表的形式返回。也许你正在打印结果,它会自动连接条目?是的,我正在打印结果,但我希望它们按照属性打印,右边2个像素,每增加一个iOk向下15个像素,因此,您可以将从
getNames
获得的数组传递到data
,然后以通常的方式添加元素。
{
"name": "Don",
"value": 75,
"children" [
{"name": "CC", "value": 25},
{"name": "Jim", "value": 35}
]
}
function getNames(d) {
return d.children ? d.children.map(getNames) : d.name;
}