我想复制Mike Bostock的可折叠树图形(http://bl.ocks.org/mbostock/4339083)。
我已经使用d3.js中的nest函数加载了CSV。现在,数据看起来是这样的:
[
{
"key": "Bayer HealthCare",
"values": [
{
"key": "Animal Health",
"values": [
{
"key": "Companion Animal",
"values": [
{
"brand": "Drontal",
"product": "Companion Animal",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
},
{
"brand": "Profender",
"product": "Companion Animal",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
},
{
"brand": "Rompun",
"product": "Companion Animal",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
}
]
},
{
"key": "Companion Animal - Food Animal Product",
"values": [
{
"brand": "Baytril",
"product": "Companion Animal - Food Animal Product",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
}
]
},
{
"key": "Companion animals",
"values": [
{
"brand": "Advantage",
"product": "Companion animals",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
},
{
"brand": "Advantix",
"product": "Companion animals",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
},
{
"brand": "Advocate",
"product": "Companion animals",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
}
]
},
{
"key": "Food Animal Product",
"values": [
{
"brand": "Baycox",
"product": "Food Animal Product",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
},
{
"brand": "Catosal",
"product": "Food Animal Product",
"subgroup": "Bayer HealthCare",
"division": "Animal Health"
}
]
}
]
}
.....(完整的数据和我到目前为止所做的工作可以在这里获得:http://jsfiddle.net/L3phF/9/)
不幸的是,我不知道如何将数据转换为像这样的"FLARE JSON“格式的https://gist.github.com/mbostock/1093025。如果我是对的,我必须将"key“重命名为"name",将"values”重命名为"children“,并且必须在最低级别的每个对象前面插入""name:"”。
感谢大家的帮助!
发布于 2014-04-01 09:57:13
这会将"key“重命名为"name”,并将"values“重命名为"children":
var renameKeys=function(obj){
/*Recursively renames "key" keys to "name" and
renames "values" keys to "children" */
obj.name=obj.key;
delete obj['key'];
if(obj.values){
obj.children=obj.values;
delete obj.values;
obj.children.forEach(renameKeys);
}
return obj;
};您还需要为JSON提供一个“根”节点,以便使用您链接到的可折叠树可视化。这应该可以做到:
var nest = d3.nest()
.key(function(d) { return d.subgroup; })
.key(function(d) { return d.division; })
.key(function(d) { return d.product; })
.entries(parsed);
/*The visualization requires there to be a root node*/
var flareData={key:'root',values:[]};
flareData.values=nest;
renameKeys(flareData);这里有一个获取您想要的JSON的JSFiddle:http://jsfiddle.net/X2fxC/3/
这是一个包含可视化结果的JSFiddle:
使用展开的树可视化绘制时,您的数据如下所示:

https://stackoverflow.com/questions/17088677
复制相似问题