Javascript 更新复合图表上的dc.js图例标签会导致组消失

Javascript 更新复合图表上的dc.js图例标签会导致组消失,javascript,charts,legend,linechart,dc.js,Javascript,Charts,Legend,Linechart,Dc.js,我正在尝试在dc.js中制作一个实时(每2秒更新一次)复合折线图。我有实际的图表工作的预期,但我有问题的传说。我的设置方法是使用一些初始数据创建图表,如下所示: var cf = crossfilter(data); var minutes = cf.dimension(function(d){return d.negMinutes}); var goodGroup = minutes.group().reduceSum(function(d){

我正在尝试在dc.js中制作一个实时(每2秒更新一次)复合折线图。我有实际的图表工作的预期,但我有问题的传说。我的设置方法是使用一些初始数据创建图表,如下所示:

        var cf = crossfilter(data);
        var minutes = cf.dimension(function(d){return d.negMinutes});
        var goodGroup = minutes.group().reduceSum(function(d){
            return d.numStreamsGood;
        });
        var fairGroup = minutes.group().reduceSum(function(d){
            return d.numStreamsFair;
        });
        var poorGroup = minutes.group().reduceSum(function(d){
            return d.numStreamsPoor;
        });

        streamChart = dc.compositeChart("#stream-chart");

        streamChart.dimension(minutes).x(d3.scale.linear().domain([-60, 0]))
            .width((window.innerWidth - 130) * 0.95)
            .height((window.innerHeight - 158) * 0.6)
            .transitionDuration(0)
            .xAxisLabel("Minutes Ago")
            .yAxisLabel("Number of Streams")
            .renderHorizontalGridLines(true)
            .renderVerticalGridLines(true)
            .elasticY(true)
            .legend(dc.legend().x(60).y(10).itemHeight(13).gap(5))
            .renderlet(function(chart){
                chart.selectAll("g.x text")
                    .text(function(d){
                        return -1 * d;
                    });
            });

        streamChart.compose([
            dc.lineChart(streamChart)
                .group(goodGroup, "Good")
                .colors(['#248221']),
            dc.lineChart(streamChart)
                .group(fairGroup, "Fair")
                .colors(['#FF7A00']),
            dc.lineChart(streamChart)
                .group(poorGroup, "Poor")
                .colors(['#DE2B1E'])
        ]);

        streamChart.render();
然后,每隔两秒钟,我更新数据数组,用更新的数据重新创建组,然后像这样重新绘制图表:

        streamChart.children()[0].group(goodGroup);
        streamChart.children()[1].group(fairGroup);
        streamChart.children()[2].group(poorGroup);

        streamChart.redraw();
问题在于,我在更新时调用.group时没有提供名称,因此图例中的名称仅为0。当我尝试向group函数添加name参数时,图例会正确更新,但会导致一些奇怪的问题

首先,我指定名称的组从图表中消失(例如,如果我使用(goodGroup,“Good”),则基于goodGroup组的折线图从compositeChart中消失)

第二,图例中与该组关联的颜色变为黑色(例如,使用goodGroup的图表有绿色线条。更新组后,它在图例中显示为黑色)

最后,将鼠标悬停在受影响的组上会高亮显示其余的组(例如,仅更新goodGroup,然后将鼠标悬停在其图例标签上会同时高亮显示fairGroup和poorGroup图表)

如果这听起来让人困惑,对不起。以下是我所说内容的一些截图:


它不允许我发布两个以上的链接,所以这里有另一个截图:不是说这不应该起作用,bou在这里真的扩展了dc.js的范围。您是否尝试过使用删除和添加来更新现有的交叉过滤器,而不是替换它?是的,它也有同样的问题。然而,我做了更多的探索,发现问题并不是因为更新,而是因为颜色的分配。当我禁用更新功能时,颜色仍然为黑色,并且没有绘制线条。但是,当我将每个折线图的.colors更改为.ordinallcolors时,即使使用了更新和图例名称,一切都很正常。听起来您现在已经非常了解这个bug了。事实上,传说是相当新的,我并不感到非常惊讶。请把你找到的任何资料,包括这一页链接起来好吗?在dc中有许多活动部件和交互部件需要跟踪!感谢您的深入诊断。