2015-03-31 40 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