散点图错误

Bug with scatter chart

我从 dc.js 实施了下一个 example 并发现了有趣的错误。当颜色重复并且用户对某些具有重复颜色的标签执行 mouseover 操作时 - 图表按当前颜色显示所有数据,而不是仅按当前标签显示。

图表:

带有标签 mouseover 的错误:

我用这个错误添加了一些 fiddle。我该如何解决这个问题?

是的,这看起来像是一个错误,深入 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);
};

我们可以看到高亮是通过检查项目的颜色是否与高亮图例项目的颜色相同来实现的。所以,在你的情况下,当颜色重复时,你突出了太多点。

因此,您可能可以注册一个问题 in the dc.js github 因为这绝对是一个错误。

在这种情况下无法进行简单的修复,要正确突出显示好项目,我们错过了对项目的识别,今天,在生成的 html 中,没有任何东西可以识别或 link图例和情节,需要向 link 添加一些东西(在这里写比在现有代码中写更容易;))。