javascript - 如何在不渲染的情况下清除堆叠图表

标签 javascript d3.js dc.js crossfilter

我有 barChart,堆栈很少:

chart
    .dimension(dim)
    .group(group1, element1)
    .groupBars(true)
    .stack(group2, element2)
    .stack(group3, element3)

stacked bar chart

稍后我将新维度和组添加到当前图表:

chart
    .dimension(newDim)
    .group(newGroup1, newElement1)
    .groupBars(true)
    .stack(newGroup2, newElement2)

chart.redraw();

然后得到一些奇怪的东西:

enter image description here

看起来图表上有来自之前堆栈的绿色条。如果我使用 chart.render() 而不是 chart.redraw() 一切正常,但是 redraw() 看起来好多了。我该如何解决这个问题?

更新:

我想我需要从图表中删除旧的维度和/或组,但我该怎么做呢?

最佳答案

这只是一个猜测,因为您还没有提供代码。

正如我在上面评论的那样,我认为这是您正在使用的分组条的实现中的错误。

但实际上,我认为这是 dc.js 核心中的一个错误:它不期望堆栈数量在没有渲染的情况下发生变化。我找到了对错误的引用 here . (最初有很多东西只能用于渲染,不能重绘,我们正在慢慢修补它们。)

更换堆栈时试试这个:

for(var i = nstacks; i < 20; ++i) 
    chart.selectAll('g.stack._' + i + ' rect').remove()

其中 nstacks 是新图表中的堆栈数。它将移除任何多余的堆栈,并且现有的堆栈应该仍然可以正常过渡。

关于javascript - 如何在不渲染的情况下清除堆叠图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44715869/

相关文章:

javascript - 处理隐藏元素

Javascript Ckeditor 获取鼠标点击位置

javascript - 单选按钮检查不区分大小写的匹配

D3.js:连接选择?

javascript - 在 dc.js 图表中显示前 n 个结果

javascript - 显示前一天的 Google Apps 脚本

javascript - D3.js数据更新 "remembers"旧数据

javascript - 您如何编写从数组返回值的函数?

javascript - dc.js 图表使用带有单击事件的新组函数重绘

javascript - 没有对行进行分组的 dc 数据表