2014-08-22 3 views
1

Это мой первый вопрос в Stackoverflow, и я немного нервничаю, но это уже несколько секунд подслушивает меня, и я не могу сортировать исправить или обходной путь. Я думаю, что этот вопрос связан с этой однойdc.js линейная диаграмма, разбивающая и понижающая до 0 на значениях «нуль» в размере

dc/d3 line chart crashing down to 0 on the y axis after filtering

, но я пошел в немного более подробно, имеют jsfiddle, чтобы показать проблему, и я не уверен, что предлагаемые решения на поставленный выше вопрос будет решать мой проблема.

Я черчение линейной диаграммы на измерении я фильтруюсь при уменьшении для удаления значений я не хочу, чтобы включить в сюжете (см этого jsfiddle http://jsfiddle.net/hldawe/62tuq30o/

var facts = crossfilter(datajson); 


var testlineChart = dc.lineChart('#testlinechart'); 

var expectedDim = facts.dimension(function (d) { 
    return d.expected; 
}); 

var observedGroup = expectedDim.group().reduce(

function reduceAdd(p, v) { 
    if (v.expected % v.expected === 0 && v.indicator_code === "MH998") { 
     p += +v.observed; 
    } 
    return p; 
}, 

function reduceRemove(p, v) { 
    if (v.expected % v.expected === 0 && v.indicator_code === "MH998") { 
     p -= -v.observed; 
} 
return p; 
}, 

function reduceInitial() { 
return 0; 
}); 

testlineChart.width(500) 
.height(220) 
.dimension(expectedDim) 
.group(observedGroup) 
.brushOn(true) 
.x(d3.scale.linear().domain([0, 50])) 
.xAxis(); 

dc.renderAll(); 

Несмотря на это удаление при сокращении, то линейная диаграмма по-прежнему заканчивается до нуля по тем значениям, которые были удалены! Я бы просто хотел сплошную линию, и я думаю, что так должно быть с помощью группировки, которую я сделал? Спасибо заранее!

+1

Привет, вы пробовали 'lineChart.defined'? https://github.com/dc-js/dc.js/blob/master/web/docs/api-latest.md#definedvalue – Gordon

+0

Привет, Гордон, большое спасибо за вашу помощь. Использование .defined Мне удалось избавиться от нулей, но теперь есть перерывы в строке. Это улучшение, но я хотел бы присоединиться к линии. – heather

+0

Извините, что добавил, что вот мой обновленный jsfiddlehttp: //jsfiddle.net/hldawe/62tuq30o/ – heather

ответ

1

Итак, это мне кажется, что вы хотите, чтобы ожидаемая группа ожидаемого измерения (а также наблюдаемая группа наблюдаемых измерение). Тогда вы можете «отфильтровать» в 0s, прежде чем они построены с использованием этого бита кода из FAQ я указал в другом ответе:

var expectedGroup2 = { 
    all:function() { 
    return expectedGroup.all().filter(function(d) { 
     return d.value != 0; 
    }) 
    } 
}; 

Сделайте это где-то перед созданием линии диаграммы и использовать expectedGroup2 вместо от expectedGroup. Идея состоит в том, что это живой объект, который отображает пустые ячейки из группы по мере их чтения. (Он полностью отличается от фильтра в смысле crossfilter.)

+0

Привет, Гордон, это здорово, что он сейчас так благодарит вас за вашу помощь и за то, что у меня были проблемы с noobie. dc.js и crossfilter отличные: o) – heather

+0

Рад помочь! Этот метод немного сложный и, вероятно, принадлежит в вспомогательной библиотеке. – Gordon

Смежные вопросы