【问题标题】:How do I convert an email dataset into a hierarchy for a sunburst diagram?如何将电子邮件数据集转换为旭日形图的层次结构?
【发布时间】:2021-07-22 14:19:14
【问题描述】:

数据集是这样的 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 = 99root_node.children[0] = 77 等层次结构。

【问题讨论】:

  • 请提供更多信息;目前的结果是什么?它与您的预期有何不同?
  • @ChrisG 我添加了更多细节
  • 您传递给d3.hierarchy 的数据格式不正确...您能否提供数据示例而不是屏幕截图?
  • @MichaelRovinsky 我已经添加了我正在使用的示例数据
  • 不要破坏您的问题。这对努力利用自己的空闲时间回答问题的志愿者不公平,对本网站的未来用户也不公平。

标签: javascript d3.js visualization sunburst-diagram


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 那么有没有办法可以将数据表示为旭日形图?
  • 我不确定 sunburst 是一种符合您数据的可视化。我想您应该改用链接图。这是一个例子:bl.ocks.org/mbostock/950642
  • 有没有办法将它表示为一个旭日形图案,其中所有的基数都是 fromIds,连接数都是 toIds?
  • @RobinMackenzie Directed chord 就是一个很好的例子!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多