我想將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;})' 。 –
拉斯是對的。我會更新答案。 –
然後「日期」過濾器甚至不必要,因爲這個值不會顯示爲一個類別:) –