知道了。我们包含来自问题中链接的 DataStructures.Tree 项目的这些脚本:base.js、DataStructures.Tree.js。(您可以在 /js/lib/ 和 /js/vendor/ 中找到它们)
<script type="text/javascript" src="base.js"></script>
<script type="text/javascript" src="DataStructures.Tree.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
然后,我们替换这一行,
d3.json("flare.json", functon(error, root) {
..用这些行:
d3.csv("electrical5.csv", function(data){
var tree = DataStructures.Tree.createFromFlatTable(data),
root = tree.toSimpleObject(function(objectToDecorate, originalNode) {
objectToDecorate.size = originalNode.size;
if (objectToDecorate.children && objectToDecorate.children.length == 0) {
delete objectToDecorate.children;
}
return objectToDecorate;
});
//console.log(JSON.stringify(root));
让其他一切保持原样。
取消注释 console.log 行以进行调试;当您加载页面时,它将把 json 代码放在浏览器控制台中。您还可以在网页中创建一个文本区域并在其中输出 json 代码。
document.getElementById("SHOWME").value = JSON.stringify(root);
[在页面底部]
<textarea id="SHOWME"></textarea>
它将是未格式化的 json 代码,因此将其复制粘贴到http://codebeautify.org/jsonviewer应该会为您提供格式良好的 json。
要获得除常规 [id,parentId,name,size] 之外的更多列,我们必须编辑 DataStructures.Tree.js
找到这些行:
simpleChildRepresentation.push(decorateNode({
"name" : node.name,
"children" : children
}, node));
并以与 node.name 行相同的格式插入额外的列。
simpleChildRepresentation.push(decorateNode({
"name" : node.name,
//CUSTOM COLUMNS
"workcode" : node.id,
"parentcode" : node.parentId,
"department" : node.department,
"totalorextract" : node.totalorextract,
"total" : node.total,
"pages" : node.pages,
//CUSTOM COLUMNS DONE
"children" : children
}, node));
您现在可以在任何使用flare.json 的d3.js 可视化中直接可视化自引用的csv 数据。不过,动画有点笨拙。