如何在d3上按名称嵌套我的数据?

时间:2017-08-16 18:36:00

标签: d3.js nested

我无法弄清楚如何按名称嵌套我的数据。

我的数据如下:

 var data = [
            [[{name: "Bonpoint"}], [
                {axis: "Coton", value: 1},
                {axis: "Laine", value: 0.8},
                {axis: "Cachemire", value: 0.6},
                {axis: "Soie", value: 0.20},
                {axis: "Angora", value: 0.20},
                {axis: "Autres", value: 0.20},
                {axis: "Nylon", value: 0},
                {axis: "Acrylique", value: 0},
                {axis: "Viscose", value: 0},
                {axis: "Polyuréthane", value: 0},
                {axis: "Polyester", value: 0.20}]],

            [[{name: "Petit Bateau"}], [
                {axis: "Coton", value: 1},
                {axis: "Laine", value: 0.40},
                {axis: "Cachemire", value: 0},
                {axis: "Soie", value: 0},
                {axis: "Angora", value: 0},
                {axis: "Autres", value: 0},
                {axis: "Nylon", value: 0},
                {axis: "Acrylique", value: 0},
                {axis: "Viscose", value: 0},
                {axis: "Polyuréthane", value: 0},
                {axis: "Polyester", value: 0.20}]],

                ...etc

我尝试了这行代码:

var names = d3.nest()
              .key(function (d) {return d[0].map(function (o) {return o.name})})
              .entries(data);

但是当我输入console.log(names)时,我得到的只是一个数组对象,而不是直接的名字。您是否知道我如何直接访问name中的data

谢谢。

1 个答案:

答案 0 :(得分:2)

尝试使用object()(或map())代替entries()

var names = d3.nest()
          .key(function (d) {return d[0].map(function (o) {return o.name})})
          .object(data);

console.log(names.keys())
// =>  ["Bonpoint", "Petit Bateau"]

 console.log(names.Bonpoint)
 // => [[{name: "Bonpoint"}], Array]