图例复制

Legend Duplication

我有以下实现并且可以正常工作。

我想知道如何在我当前的实现中修复图例的重复项。请收看fname="NY"

for (var i=0;i<e.series.data.length;i++){
  if (e.series.data[i].valueColor != "" && e.series.data[i].fname != "") {
    color = e.series.data[i].valueColor,
    legendName=e.series.data[i].fname
  }
}

FIDDLE

通过记录您绘制图表的数据,您可以看到为 6 个项目调用了代码。如果将 category 添加到标签,您可以看到正在为 Men 和 Women 中的项目创建图例:

您应该调试实际生成标签的数据结构。

http://jsfiddle.net/xmufd8t0/1/ 在控制台中显示:

您使用此循环的方式似乎存在问题:您始终采用 e.series.data 中的最后一个元素。如果要第一个non-emptyfname,设置legendName后应该有一个break;。否则它取数组中的最后一项,即 non-empty.

无论如何 - 要回答您的问题,您需要像@honerlawd 在他的评论中提到的那样进行重复数据删除。这是重复数据删除修复:

// outside your function, where you have `debugger`
var dedupes = {};

....

// skip labels that have already been added
if (dedupes.hasOwnProperty(legendName)) {
    return;
}
dedupes[legendName] = 1;