D3.js 如何在D3中检索嵌套数据集的键值

D3.js 如何在D3中检索嵌套数据集的键值,d3.js,obiee,D3.js,Obiee,我正在尝试将D3可视化添加到OBIEE中,我需要完成的第一个图形是多系列线图。数据直接从OBIEE叙述视图中获得,格式如下: var data = [ ]; data.push({category:"Cat1",date:"20130101",suma:9.11}); data.push({category:"Cat2",date:"20130101",suma:2.66}); data.push({category:"Cat3",date:"20130101",suma:18.00}); d

我正在尝试将D3可视化添加到OBIEE中,我需要完成的第一个图形是多系列线图。数据直接从OBIEE叙述视图中获得,格式如下:

var data = [ ];

data.push({category:"Cat1",date:"20130101",suma:9.11});
data.push({category:"Cat2",date:"20130101",suma:2.66});
data.push({category:"Cat3",date:"20130101",suma:18.00});
data.push({category:"Cat4",date:"20130101",suma:32.49});
data.push({category:"Cat5",date:"20130101",suma:37.74});
从2013年到2015年,共有155条类似的线路。为了按类别将它们分开,以便为每个类别指定一条线和一种颜色,我以以下方式嵌套数据:

var dataGroup = d3.nest() 
.key(function(d) {return d.category;}) 
.entries(data);
变量数据组是由5个对象组成的数组,如下所示:

0: Object
key: "Cat1"
values: Array[31]
    0: Object
       category: "Cat1"
       date: "20130101"
       suma: 9.11
       __proto__: Object
   ... 
   1: Object
   key: "Cat2"
   values: Array[31]
       0: Object
       category: "Cat2"
       date: "20130101"
       suma: 2.66
       __proto__: Object
   ... ...
我接下来要做的是为类别分配颜色

var color = d3.scale.category10();
color.domain(d3.keys(dataGroup).filter(function(key) { return key !== "date"; }));
这就是我遇到麻烦的地方。此过滤功能的结果是:

Array[5]
0: "0"
1: "1"
2: "2"
3: "3"
4: "4"
length: 5
__proto__: Array[0]
而不是我认为我需要的是:

Array[5]
0: "Cat1"
1: "Cat2"
2: "Cat3"
3: "Cat4"
4: "Cat5"
length: 5
__proto__: Array[0]
我尝试过几种方法,但没有一种有效。在这一点上,我即将放弃将D3添加到OBIEE,虽然我真的很想实现它,但我正在努力理解这一点,我似乎完全无法做到。也许我应该首先学习Javascript,也许D3理解数据管理所需要的所有思维扭曲对我来说太多了

我真的很感激在这方面的任何帮助。我很抱歉,如果我在提交问题时犯了任何错误,我试图将其格式正确,但这是我第一次在这里发布任何东西

非常感谢并致以最良好的问候, Ana.

键()方法(不是作为嵌套()的一部分使用时)用于标准关联数组,而不是嵌套数据。您应该获取
数据组
,并迭代每个值以提取
类别
属性。您的代码中可能存在其他问题,但请尝试

color.domain(d3.values(dataGroup).map(function(d) {
    return d.category; 
}).filter(function(key) { return key !== "date"; }));

若要开始

No,OP需要
d3.values(dataGroup).map(function(d){return d.category;})
。然后“date”过滤器甚至不需要,因为这个值不显示为类别:)可能是真的,但既然OP一开始就有了过滤器,我想他会认为这是必要的。非常感谢,现在我更好地了解了如何检索数据的键。我现在得到的结果更令人鼓舞。