尝试从“平面”JSON连接D3节点以制作公司层次结构图
Trying to connect D3 Nodes from "flat" JSON to make company heirarchy graph
我正在尝试使用 D3 创建公司层次结构图。使用此示例中的代码:
http://bl.ocks.org/mbostock/2949981
有没有办法从这个 json 创建该图:
links = [
{
"Source": "1",
"Target": "2",
},
{
"Source": "1",
"Target" : "3"
},
{
"Source": "2",
"Target": "4",
},
{
"Source": "2",
"Target": "5",
},
{
"Source" : "3",
"Target" " "6"
}
]
nodes = [
{
"Id": "1",
"Name": "TEST NODE ONE",
"Url": "http://www.google.com"
},
{
"Id": "2",
"Name": "TEST NODE TWO",
"Url": "http://www.yahoo.com"
},
{
"Id": "3",
"Name": "TEST NODE THREE",
"Url": "http://www.stackoverflow.com"
},
{
"Id": "4",
"Name": "TEST NODE FOUR",
"Url": "http://www.reddit.com"
}
{
"Id": "5",
"Name": "TEST NODE FIVE",
"Url": "http://www.stack.com"
}
{
"Id": "6",
"Name": "TEST NODE SIX",
"Url": "http://www.six.com"
}
]
我想使每个节点成为一个矩形,我可以在其中放置来自"节点"json的员工姓名。但是将每个节点与"链接"json中的数据连接起来。随意更改链接 json 以使其对您更有意义。
我还想使连接节点的线笔直并使其垂直,但我主要关心的是通过上面的 json 在页面上显示图形。
感谢您的帮助。
您需要将节点 id 之间的关联links
转换为通过引用在 nodes
中的实际对象之间关联的数组。一个简单的循环是这样做的:
var links = [ { "Source": "1", "Target": "2" }, ... ]
var nodes = [ { "Id": "1", "Name": "TEST NODE ONE", "Url": "http://www.google.com" }, ... ]
var cachedNodesById = {};
var linksBetweenNodeObjs = links.map(funciont(link) {
return {
source: nodeById(link.Source),
target: nodeById(link.Target)
};
});
function nodeById(id) {
// return the node if it's been found before, otherwise loop over the
// array to find it
if(cachedNodesById[id] != null) { return cachedNodesById[id]; }
else {
for(var i=0; i < nodes.length; i++) {
if(nodes[i].Id == id) { return cachedNodesById[id] = nodes[i]; }
}
}
}
相关文章:
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- d3使用链接的节点名称的力图
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 如何使d3.js树布局按字母顺序对节点进行排序
- D3.js:展开树直到节点n
- d3力中的阵列和节点映射
- 如何在d3.js图库中基于nodes id连接边和节点
- D3.js-单击节点后无法设置节点标签
- D3:从不同的图表中选择特定的节点
- 从 d3.js 中的树中选择节点的子节点
- D3 上下文菜单,更改所选节点颜色
- d3.js - 强制布局和节点位置
- 将标签放在 d3.js 中节点的中心
- 正在节点d3.js之间创建链接,当前返回Uncaught TypeError:无法读取属性'weight'
- 如何仅选择具有特定 CSS 类的节点?D3/JS.
- 如何查看使用 d.selected 选择了哪些节点?D3/JS.
- 在连接到节点 d3.js 之前穿过另一点的线
- 如何一次移动所有选定的节点?D3/JS.
- 树映射高亮显示子节点D3