2015-03-31 37 views
2

如果结果为0,是否可以删除/隐藏饼图的图例?dc.js饼图传说 - 如果结果为0,则隐藏

我有一个饼图,在图例中有很多项目,当有一些过滤时,移除不可用的图例将非常好。

任何帮助,将不胜感激。

+0

看起来传说应该在呈现时拾取加盖的切片,但它不会没有任何更新/重画逻辑,所以它不会响应过滤器。过滤器更改时,您可以尝试手动调用legend.render? – Gordon 2015-03-31 14:53:30

+0

抱歉戈登我该怎么办?你有没有我能看到的例子,这会让我指向正确的方向?非常感谢。 – NorthSide 2015-04-01 09:53:02

+0

好吧,看起来我在这里是错的,当图表重绘时,传奇确实会重新渲染。删除我以前的答案并写一个新的答案。 – Gordon 2015-04-02 14:39:01

回答

5

传奇在他们的图表重画时会渲染,但问题在于图例是从数据中绘制的,而crossfilter不会自动消除空的组。

如果传说是图表类型,那将是非常好的,所以我们可以使用一个假组(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/

注:这只是修改一个(左)的图表,你必须复制/将其粘贴到每个图表(或将其包裹在一个函数中)以将其应用于其他图表。

[我非常固执,不想在图表内部使用这些数据过滤的东西,所以我不打算把它作为一个功能。相反,图例应该是一个图表,它从另一个图表中获取数据,并且应该有一种方法来转换该数据。]

+0

这很完美。 – NorthSide 2015-04-02 15:17:00