Я пытаюсь добавить визуализацию 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);
переменная Датагруп затем массив из 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.
Нет, OP нуждается 'd3.values (Датагруп) .map (функция (d) {возвращение d.category;})' , –
Ларс прав. Я обновлю ответ. –
И тогда фильтр «даты» не должен даже быть необходимым, так как это значение не отображается как категория :) –