如何将电子邮件数据集转换为森伯斯特图的层次结构?

问题描述

数据集是这样的json文件 [{from: x,to: y},{from: x,to: z}] 等等。

    partitioned_data = d3.partition().size([2*Math.PI,100]);
    root_node = d3.hierarchy(data).sum(d => d.size);
    partitioned_data(root_node); 

这是我目前所拥有的

我把它作为根节点:

root node

... 而 root_node.children 仍未定义。我正在使用一个示例数据集,它只是 99->77,77->112 and 112->82。我希望它给出 root_node = 99root_node.children[0] = 77 等的层次结构。

解决方法

无法将电子邮件数据转换为分层数据是有原因的:

您的数据代表一个链接的非层次图,其中每个节点都可以链接到其他节点。

d3.hierarchy 需要数据,其中每个节点只能有一个父节点并且不允许循环。如果您通过 fromId 标识父项,通过 toId 标识子项,并且您的数据如下所示:

[
  {fromId: 1,toId: 2},{fromId: 2,toId: 3},{fromId: 3,toId: 1},]

...您有一个链接循环并且无法从该数据创建层次结构