更改dc.js折线图中的数据组并重绘它

我从本地数据库输入的时间序列数据创建了一个初始dc.js堆积区线图。 所有计算都由数据库服务器处理,数据按时间间隔(几分钟到几个小时)抓取。 所使用的交叉过滤器维度是日期(以毫秒时期为单位给出),并且包括两个组在一个图表上绘制在一起。 这两个组的值在所选的时间间隔内取平均值,同样由db服务器完成,我非常希望避免将整个数据集加载到脚本中。

初始图表呈现和工作得很好,但在我的chart.on('zoomed',function(c,f){..})我再次解析数据库以获得一组新的,更准确的数据。

放大图表会从较小的时间间隔中选择数据,并缩小从较大的时间间隔中选择数据。

我知道需要从交叉过滤器中删除旧数据,并且需要添加新数据,来自此线程。 但是,当我将它实现到我的chart.on('zoomed',函数(c,f){..})时 ,在第一次缩放之后它返回一个TypeError:组未定义

我不明白这个错误来自哪里, chart.group(..)是在页面第一次加载时定义的。 这是我的功能,

    .on('zoomed', function(chart, filter) {
        var nextLower = stackedLine.x().domain()[0];
        var nextUpper = stackedLine.x().domain()[1];
        $.getJSON('/_try_db', {
            lower : Date.parse(nextLower),
            upper : Date.parse(nextUpper)
            }, function(data) {
            stackedLine.expireCache()
                .stack()
                .x(d3.time.scale().domain([Date.parse(nextLower), Date.parse(nextUpper)]))
            ;
            var new_arr = [];
            $.each(data.result, function() {
            new_arr.push({
                "timestamp" : ($.parseJSON(this)).timestamp,
                "running" : ($.parseJSON(this)).running,
                "waiting" : ($.parseJSON(this)).waiting
                });
            });

            dd.filter(null);
            ndx.remove();
            ndx.add(new_arr);

            dc.redrawAll();
        });

我在离开后第二天再次回到它,我发现了它。 我曾经在某处读过没有任何参数的chart.stack()会删除原始组顶部的所有堆栈组。 我认为我必须做这样的事情,因为如果我没有,那么额外的堆栈将被添加到顶部,这是我不想要的。 但是,这被证明是错误的 ,如果你调用chart.stack()不带任何参数,返回该堆叠组,但是,如果无所不有接受它试图加入一个新的小组,堆栈中的返回, 未定义组

我只是删除stackedLine.stack()和我的图表更新正确的数据。 我还删除了stackedLine.x(...),因为再次设置域不会让图表放大不止一次,这首先会破坏使用('缩放')的目的。

链接地址: http://www.djcxy.com/p/5599.html

上一篇: Changing the data group in a dc.js line chart and redrawing it

下一篇: dc.js: stacked area chart using reduceCount method