我想将D3可视化添加到OBIEE中,我需要完成的第一个图是多系列线图。数据被直接从OBIEE叙述视图以这种格式获得:如何在D3中检索嵌套数据集的键值
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});
有155线,如那些,对于不同的日期范围从2013至2015年为了按类别将它们分开,所以然后我可以分配一条线和颜色每种类别,我窝在这样的数据:
var dataGroup = d3.nest()
.key(function(d) {return d.category;})
.entries(data);
变量dataGroup时是那么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对于理解数据管理对于我来说太需要了解所需要的所有思维弯曲。
我真的很感谢这方面的帮助。如果我在提交问题时犯了错误,我很抱歉,我试图正确格式化,但这是我第一次在这里发布任何内容。
非常感谢你和最好的问候, 安娜。
没有,OP需要'd3.values(dataGroup时).MAP(函数(d){回报d.category;})' 。 –
拉斯是对的。我会更新答案。 –
然后“日期”过滤器甚至不必要,因为这个值不会显示为一个类别:) –