如何在不渲染的情况下清除堆叠图表
How to clear stacked chart without render
我有 barChart
筹码很少:
chart
.dimension(dim)
.group(group1, element1)
.groupBars(true)
.stack(group2, element2)
.stack(group3, element3)
稍后我将新维度和组添加到当前图表:
chart
.dimension(newDim)
.group(newGroup1, newElement1)
.groupBars(true)
.stack(newGroup2, newElement2)
chart.redraw();
然后得到一些奇怪的东西:
看起来图表上有来自之前堆栈的绿色条。如果我使用 chart.render()
而不是 chart.redraw()
一切正常,但是 redraw()
看起来好多了。我该如何解决这个问题?
更新:
我想我需要从图表中删除旧维度 and/or 组,但我该怎么做?
这只是一个猜测,因为您没有提供代码。
正如我在上面评论的那样,我认为这是您正在使用的分组条的实施中的一个错误。
但实际上,我认为这是 dc.js 核心中的一个错误:它不期望堆栈数量在没有渲染的情况下发生变化。我找到了对错误 here 的引用。 (最初有很多东西只能用于渲染,不能用于重绘,我们正在慢慢修补它们。)
在替换堆栈时试试这个:
for(var i = nstacks; i < 20; ++i)
chart.selectAll('g.stack._' + i + ' rect').remove()
其中 nstacks
是新图表中的堆栈数。它会移除任何多余的堆栈,并且现有的堆栈应该仍然可以正常过渡。
我有 barChart
筹码很少:
chart
.dimension(dim)
.group(group1, element1)
.groupBars(true)
.stack(group2, element2)
.stack(group3, element3)
稍后我将新维度和组添加到当前图表:
chart
.dimension(newDim)
.group(newGroup1, newElement1)
.groupBars(true)
.stack(newGroup2, newElement2)
chart.redraw();
然后得到一些奇怪的东西:
看起来图表上有来自之前堆栈的绿色条。如果我使用 chart.render()
而不是 chart.redraw()
一切正常,但是 redraw()
看起来好多了。我该如何解决这个问题?
更新:
我想我需要从图表中删除旧维度 and/or 组,但我该怎么做?
这只是一个猜测,因为您没有提供代码。
正如我在上面评论的那样,我认为这是您正在使用的分组条的实施中的一个错误。
但实际上,我认为这是 dc.js 核心中的一个错误:它不期望堆栈数量在没有渲染的情况下发生变化。我找到了对错误 here 的引用。 (最初有很多东西只能用于渲染,不能用于重绘,我们正在慢慢修补它们。)
在替换堆栈时试试这个:
for(var i = nstacks; i < 20; ++i)
chart.selectAll('g.stack._' + i + ' rect').remove()
其中 nstacks
是新图表中的堆栈数。它会移除任何多余的堆栈,并且现有的堆栈应该仍然可以正常过渡。