1

我在 swt 浏览器环境中使用 d3.js。由于 d3.js 不是我绘制树形图的首选,因此我的数据是扁平的,如下所示:

var datatable = [
   {name:'Global',    parent: 'null',  value:      0, color: 0},
   {name:'America',   parent:'Global', value:      0, color: 0},
   {name:'Europe',    parent:'Global', value:      0, color: 0},
   {name:'Asia',      parent:'Global', value:      0, color: 0},
   {name:'Australia', parent:'Global', value:      0, color:  0},
   {name:'France',    parent:'Europe', value:      11, color:  }
];

有些人会认识到这是在谷歌图表中用于“填充”图表的修改数据表。在 d3 中,我需要将层次结构传递给我的树形图函数,这将我引向 d3.nest 函数:

var root =  d3.nest()
.key(function(d) { return d.name; })
.entries(datatable);

这是朝着正确方向迈出的一大步,并给了我这样的信息:

[
           {
           "key": "Global",
           "values": [
                {
                   "color": "0",
                   "name": "America",
                   "parent": "Global",
                   "value": "0",
                 },
             {
                   "color": "0",
                   "name": "Europe",
                   "parent": "Global",
                   "value": "0",
                 },  
              ]
          },
          { 
          "key": "Europe",
          "values": [
               {
                    "color": "0",
                    "name": "France",
                    "parent": "Europe",
                    "value": "11",
                },
            {
                    "color": "0",
                    "name": "Germany",
                    "parent": "Europe",
                    "value": "15",
                 },      
         ]
    }
    ]

但我想要的是这样的,将它传递给树图布局:

[
           {
              "key": "Global",
              "values": [
                 {
                    "key": "Europe",
                    "values": [
                     {
                         "color": "0",
                         "name": "France",
                         "parent": "Europe",
                         "value": "11",
                     },
           ]
        }
       ]
   }
   ]

那么知道如何解决这个问题吗?我还没有找到一种方法来调用nest().key 函数以使结果令人满意。我也在寻找一种方法来为两个以上的层更动态地创建层次结构。任何想法?

我将非常感谢任何提示,并提前感谢您。

4

0 回答 0