我在我的应用程序中使用dc.js和crossfilter。 在我的代码中,我在数据来临时监听事件(例如来自websocket)并将数据添加到我的crossfilter实例,然后我调用dc.redrawAll();
我已经看到dc lineChart不会更新它的分组值。
var instance = crossfilter();
function onData(data) {
instance.add(data);
// -- code to update the x/y axis domains
dc.redrawAll();
}
function drawLineChart() {
var dimension = instance.dimension(function(){ .. });
// => WHEN DATA IS ADDED (onData)
// THE GROUPING DOSEN'T UPDATE
var grouping = dimension.group().reduceCount();
// initializing the line chart
var lineChart = dc.lineChart() ....;
lineChart.dimension(dimension).group(grouping);
}
如何更新分组?
答案 0 :(得分:5)
尺寸和组应自动更新。请参阅此示例:http://jsfiddle.net/yHmkc/1/
添加数据并在1秒后更新图表
setTimeout(function () {
cf.add([{
"key": "KEY-6",
"state": "MD",
"topics": ["Science"],
"date": new Date("10/09/2012")
}]);
dc.redrawAll();
}, 1000);
答案 1 :(得分:0)
你没有提到data
是什么,但我认为它是一个单一的对象,而不是一组数据对象。你需要传递一个数组。如果你只传递一个数据对象,它就会像你观察到的那样无声地失败。
instance.add([data]); // `[data]` instead of `data`