从dc.js图表​​

时间:2018-04-23 23:27:45

标签: d3.js dc.js crossfilter reductio

我已经完成了从dc.js图表中移除空箱的所有SO问题,但除了假组方法之外找不到任何其他内容

filter_group = function(oldGroup) {
    return {
        all: oldGroup.all().filter(...)
    };
}
newGroup = filter_group(oldGroup);

然后在newGroup图表中使用dc.js

这对我来说是在第一次绘制时创建正确的一组箱子,但是当我将过滤器应用到其他维度时它不会重新过滤。所以我最终得到了正确的初始箱,但在随后的重绘中,我仍然最终得到了空箱。

我想要实现的是正确的重新过滤和重绘,即根据我的过滤功能去除垃圾箱并重新绘制,不包括已过滤的垃圾箱,因此具有不同数量的垃圾箱。

这是一个显示我的意思的fiddle。 我已设置数据,以便第一个图表中a的过滤应删除第二个中的g栏(并在第二个g上过滤应删除a第一张图中的一个) 但它不会从轴上移除空条,它只显示没有条形的标签。

起点: enter image description here

在第二个图表中对g进行过滤后(我希望a甚至不显示在轴上): enter image description here

PS:我已经标记了reductiod3.js,以防有使用这些软件包的优雅解决方案,即使我将其保留在dc.js内。

1 个答案:

答案 0 :(得分:0)

X比例的域确定显示哪些条。

您正在手动设置图表上的域名:

.x(d3.scale.ordinal().domain(filter_group(group).all().map(function(d) {return(d.key);}).unshift("")))

我确定你正在解决其他一些问题,但如果删除它,并指定

.elasticX(true)

相反,那么你不需要on("filtered",...,而且当它们的值为零时,图表将删除垃圾箱。

Fork of your fiddle.