2015-03-31 3 views
1

Я рисую линейную диаграмму временного ряда, которая занимает время по оси x, другие соответствующие значения по оси y. Мне нужна помощь в этом. График не отображается со следующим кодом. Он показывает только линии (оси) и метки, но нет графика или значений для осей.Временная диаграмма dc.js линейная диаграмма

data = [{"date": "31-03-2015 11:05:36", "snr": 3.2}, {"date": "31-03-2015 11:05:36", "snr": 4.9},...{"date": "31-03-2015 11:05:36", snr: 5.0}]; 

var parseDate = d3.time.format("%d-%m-%Y %H:%M:%S").parse; 
     data.forEach(function(d) { 
        d.date = parseDate(d.date); 
        }); 

var dimByTime = cf.dimension(function(d) { return d.date;}); 
     var groupForSNR = dimByTime.groupAll(); 
     groupForSNR.all = function() { return 1; }; 

var snrAP = dc.lineChart("#snrAP"); 
     snrAP 
     .dimension(dimByTime) 
     .group(groupForSNR).valueAccessor(function(d) { return d.value.snr; }) 
     .x(d3.time.scale()) 
     .xUnits(d3.time.day); 
dc.renderAll(); 

Я хочу показать snr на оси у и соответствующее time на оси х.

ответ

2

Ну, я сам это исправил. Не может быть оптимальным решением, но оно по-прежнему служит моей цели. Вот код с модификацией ...

var dimByTime = cf.dimension(function(d) { return d3.time.minute(d.date);}); 
     var groupForSNR = dimByTime.group().reduce(
                function reduceAdd(p, v) { return v.snr; }, 
                function reduceRemove(p, v) { return v.snr; }, 
                function reduceInitial() { return 0; }); 
     groupForSNR.dispose(); 

var snrAP = dc.lineChart("#snrAP"); 
     snrAP 
     .dimension(dimByTime) 
     .group(groupForSNR) 
     .x(d3.time.scale().domain([new Date(2015, 02, 21), new Date()])) 
     .xUnits(d3.time.minute) 
     .title(function(d){ return "Time: " + d.data.key.toDateString() + "\nS/N Ratio: " + numFormat(d.data.value); }) 
     .xAxis().ticks(5);