将记录添加到交叉筛选器dosen't更新dc.js lineChart组

Adding records to crossfilter dosen't update the dc.js lineChart group

本文关键字:更新 dc lineChart js dosen 添加 记录 筛选      更新时间:2023-11-06

我在应用程序中使用dc.js和crossfilter。在我的代码中,我监听数据到来时的事件(例如来自websocket),并将数据添加到我的交叉过滤器实例中,然后调用dc.rerawAll();

我看到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);
}

我应该如何更新分组?

维度和组应自动更新。请参见此示例: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);

您没有提到data是什么,但我认为它是单个对象,而不是数据对象的数组。你需要传递一个数组。如果您只传递一个数据对象,它似乎会像您观察到的那样默默地失败。

instance.add([data]); // `[data]` instead of `data`