2017-08-02 58 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