【发布时间】:2018-04-23 23:27:45
【问题描述】:
我已经完成了关于从dc.js 图表中删除空箱的所有 SO 问题,但除了假组方法之外找不到任何东西
filter_group = function(oldGroup) {
return {
all: oldGroup.all().filter(...)
};
}
newGroup = filter_group(oldGroup);
然后在dc.js 图表中使用newGroup。
这对我来说是在第一次绘制时创建正确的垃圾箱集,但当我将过滤器应用于其他维度时它不会重新过滤。所以我最终得到了正确的初始 bin,但在随后的重绘中,我仍然得到了空的 bin。
我想要实现的是适当的重新过滤和重绘,即根据我的过滤器功能摆脱垃圾箱并重绘排除过滤后的垃圾箱,以便拥有不同数量的垃圾箱。
这是一个fiddle,它说明了我的意思。
我已经设置了数据,以便在第一个图中过滤 a 应该删除第二个图中的 g 条(并且在第二个图中过滤 g 应该删除第一个图中的 a 一个)
但它不会从轴上删除空条,它只是显示没有条的标签。
在第二张图中对g 进行过滤后(我希望a 甚至不在轴上显示):
PS : 我已经标记了 reductio 和 d3.js 以防万一使用这些包有一个优雅的解决方案,即使我宁愿将它保留在 dc.js 中。
【问题讨论】:
-
我刚刚删除了 Javascript 标记,因为当这些问题有该标记时,它们往往会被否决:( 如果你能分享一个你实际尝试做的例子,那将非常有帮助,什么您正在使用的 dc.js 图表等。一般来说,如果您只想过滤掉空组,我会说假组是最好的选择。但这似乎对您不起作用,我们需要查看更多上下文来帮助您解决问题。也就是说,您的虚假群组使用的是
.map而不是.filter,这一事实可能会导致您的问题。 -
这只是伪代码。我实际上在我的实际代码中使用了过滤器。会试着想出一个小提琴
-
谢谢 - 将来,请尝试在您的问题中包含一个真实的工作示例,而不是伪代码。在将问题转换为伪代码时,这种无意的问题(甚至消除实际问题)的引入往往会发生很多:D
-
在问题中添加了适当的小提琴
-
抱歉,这个小提琴没有运行 (
group is not defined),而且里面似乎没有remove_empty_bins。
标签: d3.js dc.js crossfilter reductio