【问题标题】:D3 treemap json data formatD3树图json数据格式
【发布时间】:2013-08-19 20:14:47
【问题描述】:

我是 d3js 的新手。我浏览了几个树形图可视化示例,发现数据具有相同的层次结构:

{
 "name": "flare",
  "children": [
      ...
   ]
      ...
}

但是如果我有一组具有相同属性但没有嵌套的对象呢:

[
  { 
   "CourseID": "15.010B",
   "Subject": "15.01",
   "Section": "B",
   "Department": "Managerial Economics",
   "Professor": "Doyle",
      ...
  },
  { 
   "CourseID": "15.010B",
   "Subject": "15.01",
   "Section": "B",
      ...
  },
      ...
]

我应该自己让它分层吗?你能为我提供这种数据格式的可视化树图示例吗?提前致谢。

【问题讨论】:

    标签: d3.js treemap


    【解决方案1】:

    d3 内置的nest 功能可以轻松为您创建此类分层数据,例如:

    var nest = d3.nest()
        .key(function(d) { return d.Department; })
        .key(function(d) { return d.Subject; })
        .key(function(d) { return d.Section; })
        .entries(_dataset_name_);
    

    将创建一个适当的分层数据集。

    【讨论】:

    • 谢谢,但是如果您的 JSON 中没有“children”属性,您将不会得到任何分层包装,对吗?问题是,我希望 d3.layout.treemap(data) 函数为我在每个对象中创建 x,y,dx,dy 属性,以便为每个对象绘制一个矩形。
    • “children”属性只是默认值。您可以通过github.com/mbostock/d3/wiki/Treemap-Layout#wiki-children 设置自定义访问器函数,为孩子指定您喜欢的任何属性。
    • 谢谢你,斯科特。所以有必要拥有作为孩子的特定属性,在这种情况下,d3 将为我计算 x,y,dx,dy 属性,对吗?
    【解决方案2】:

    将 JSON 格式化为分层结构可能很乏味。我使用了Google Refine,它允许我导入 CSV、JSON 或 Excel 文件并将它们“优化”成我选择的 JSON 结构。设置似乎有点痛苦,但一旦完成,您将拥有一个工具,用于将数据处理成您选择的结构。

    【讨论】:

      猜你喜欢
      • 2015-08-28
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多