dc.js饼图图例 - 如果结果为0则隐藏

时间:2015-03-31 14:36:10

标签: javascript dc.js

如果结果为0,是否可以删除/隐藏饼图的图例?

我有一个饼图,图例中有相当多的项目,当有一些过滤时,删除不可用的图例会很棒。

任何帮助都将不胜感激。

2 个答案:

答案 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;
    });
};