从 dc.js 图中删除空组
Remove empty groups from dc.js graph
我已经完成了所有关于从 dc.js
图中删除空箱的 SO 问题,但除了假组方法之外找不到任何东西
filter_group = function(oldGroup) {
return {
all: oldGroup.all().filter(...)
};
}
newGroup = filter_group(oldGroup);
然后在 dc.js
图中使用 newGroup
。
这对我来说是在第一次绘制时创建正确的 bin 集,但当我将过滤器应用于其他维度时它不会重新过滤。所以我最终得到了正确的初始箱,但在随后的重绘中我仍然得到空箱。
我想要实现的是适当的重新过滤和重绘,即根据我的过滤功能去除垃圾箱并重新绘制,排除过滤后的垃圾箱,从而具有不同数量的垃圾箱。
这里有一个 fiddle 说明了我的意思。
我已经设置了数据,以便在第一张图中过滤 a
应该删除第二张图中的 g
条(并且在第二张图中过滤 g
应该删除 a
第一张图中的一个)
但它不会从轴上删除空条,它只显示没有条的标签。
起点:
在第二张图中过滤 g
后(我希望 a
甚至不显示在轴上):
PS :我已经标记了 reductio
和 d3.js
以防有使用这些包的优雅解决方案,即使我宁愿将其保留在 dc.js
内。
X 刻度的域决定了显示哪些条。
您正在手动设置图表上的域:
.x(d3.scale.ordinal().domain(filter_group(group).all().map(function(d) {return(d.key);}).unshift("")))
我确定您正在用它解决其他一些问题,但是如果您删除它并指定
.elasticX(true)
相反,那么您就不需要 on("filtered",...
并且当它们的值为零时图表将删除分箱。
我已经完成了所有关于从 dc.js
图中删除空箱的 SO 问题,但除了假组方法之外找不到任何东西
filter_group = function(oldGroup) {
return {
all: oldGroup.all().filter(...)
};
}
newGroup = filter_group(oldGroup);
然后在 dc.js
图中使用 newGroup
。
这对我来说是在第一次绘制时创建正确的 bin 集,但当我将过滤器应用于其他维度时它不会重新过滤。所以我最终得到了正确的初始箱,但在随后的重绘中我仍然得到空箱。
我想要实现的是适当的重新过滤和重绘,即根据我的过滤功能去除垃圾箱并重新绘制,排除过滤后的垃圾箱,从而具有不同数量的垃圾箱。
这里有一个 fiddle 说明了我的意思。
我已经设置了数据,以便在第一张图中过滤 a
应该删除第二张图中的 g
条(并且在第二张图中过滤 g
应该删除 a
第一张图中的一个)
但它不会从轴上删除空条,它只显示没有条的标签。
起点:
在第二张图中过滤 g
后(我希望 a
甚至不显示在轴上):
PS :我已经标记了 reductio
和 d3.js
以防有使用这些包的优雅解决方案,即使我宁愿将其保留在 dc.js
内。
X 刻度的域决定了显示哪些条。
您正在手动设置图表上的域:
.x(d3.scale.ordinal().domain(filter_group(group).all().map(function(d) {return(d.key);}).unshift("")))
我确定您正在用它解决其他一些问题,但是如果您删除它并指定
.elasticX(true)
相反,那么您就不需要 on("filtered",...
并且当它们的值为零时图表将删除分箱。