Javascript 更新复合图表上的dc.js图例标签会导致组消失
我正在尝试在dc.js中制作一个实时(每2秒更新一次)复合折线图。我有实际的图表工作的预期,但我有问题的传说。我的设置方法是使用一些初始数据创建图表,如下所示: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){
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中有许多活动部件和交互部件需要跟踪!感谢您的深入诊断。