首页 > 解决方案 > 如何将电子邮件数据集转换为旭日形图的层次结构?

问题描述

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

标签: javascriptd3.jsvisualizationsunburst-diagram

解决方案


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

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

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

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

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


推荐阅读