2017-08-02 55 views
2

我從dc.js實現未來example,發現有趣的錯誤。當顏色重複並且用戶對某些標籤採取反覆顏色操作時,按當前顏色顯示所有數據,而不是僅顯示當前標籤。錯誤與散點圖

圖:

chart

錯誤與標籤mouseover

enter image description here enter image description here

我加了一些fiddle這個錯誤。我怎樣才能解決這個問題?

+0

我會建議作爲一種解決方法,爲所有系列使用不同的顏色?如果你真的想讓它們具有相同的顏色,你可以使顏色略有不同,甚至使用不同的表示方式,即rgb vs散列與顏色名稱haha yuck。 – Gordon

+0

@戈登你可以給我一個建議,如何爲所有系列設置不同的顏色?謝謝 –

回答

2

是的,這看起來像一個錯誤,在dc.js代碼挖一個確認問題。繪製圖例項目時,會附加一些事件回調。一個重要的是動作完成on "mouseover" event

.on('mouseover', function (d) { 
    _parent.legendHighlight(d); 
}) 

然後,看看到scatter.js代碼let me confirm the bug

_chart.legendHighlight = function (d) { 
    resizeSymbolsWhere(function (symbol) { 
     return symbol.attr('fill') === d.color; 
    }, _highlightedSize); 
    _chart.chartBodyG().selectAll('.chart-body path.symbol').filter(function() { 
     return d3.select(this).attr('fill') !== d.color; 
    }).classed('fadeout', true); 
}; 

我們可以看到,高亮通過檢查項目的顏色是由與突出顯示的圖例項目的顏色相同。所以,就你而言,當顏色重複時,你會突出顯示太多的點。

所以,因爲這是明確的bug,也許可以註冊一個問題in the dc.js github

在這種情況下,一個簡單的修復是不可能的,爲了正確地突出顯示好的項目,我們錯過了今天在生成的html中識別項目,沒有任何東西可以識別或鏈接圖例和圖表,需要添加有些東西可以將它們聯繫起來(在現有的代碼中這比寫在這裏更容易;))。

+0

謝謝Cédric,你說得很對。 [這是問題。](https://github.com/dc-js/dc.js/issues/727)也許原始作者找不到在這裏使用的唯一鍵,但它仍然是可怕的。 – Gordon