如果结果为0,是否可以删除/隐藏饼图的图例?
我有一个饼图,图例中有相当多的项目,当有一些过滤时,删除不可用的图例会很棒。
任何帮助都将不胜感激。
答案 0 :(得分:5)
图例重新绘制时,图例会进行渲染,但问题在于图例是从数据中提取的,而交叉滤波器并不会自动消除空组。
如果传说是图表类型,那将是非常好的,所以我们可以使用假组(a.k.a。"数据转换")。但不,我们需要更新.legendables()
来过滤掉空箱:
dc.override(pieactChart, 'legendables', function() {
var legendables = this._legendables();
return legendables.filter(function(l) {
return l.data > 0;
});
});
你小提琴的叉子:http://jsfiddle.net/gordonwoodhull/13t804u6/5/
注意:这只会修改一个(左)图表,您必须为每个图表复制/粘贴它(或将其包装在一个函数中)以将其应用到其他图表。
[我非常顽固地想要在图表中不需要这样的数据过滤,所以我不打算将其作为一个功能。相反,图例应该是一个从其他图表中获取数据的图表,并且应该有一种转换该数据的方法。]
答案 1 :(得分:0)
对于希望使用 DC.js V4 执行此操作的任何人(删除了像这样覆盖的选项),我得到了以下内容。在这里分享,以防对其他人有用。
chartName.legendables = function () {
return this.data().filter(x => x.value > 0).map((d, i) => {
const legendable = { name: d.key, data: d.value, others: d.others, chart: this };
legendable.color = this.getColor(d, i);
return legendable;
});
};