0

我目前有一个对象是平移位置,我将它们放在我的变换函数中:

   .attr("transform", function(d,i)
                {return "translate ("+ arc[i].centroid() +")" +  inner[d.Country];})
                ;


   .text(function(d) {return d.Country;})

我想知道是否可以在文本函数中定义只收集国家数据一次而不是多次?

这是一个 jsfiddle 让我的观点更清楚:http: //jsfiddle.net/xwZjN/41/

任何正确方向的指针将不胜感激

4

1 回答 1

0

要绘制国家名称,您将遍历具有重复国家名称的节点,因此您将获得多个名称。也许您可以对节点进行快速转换并对其进行迭代。像这样的东西可以工作。

首先创建一个返回唯一元素的函数。这是我在SO中找到的一个:

function unique(a) {
  var s = a.sort();
  var r = [];
  for (var i = 0; i < a.length - 1; i++) {
    if (s[i + 1] != s[i]) {
      r.push(s[i]);
    }
  }
  return r;
}

然后使用以下内容作为您的数据元素。

unique(nodes.map(function(d) { return d.Country }))

这样做是,首先,将节点数组转换为国家名称数组,其次,仅获取不重复的国家名称。由于d.Country数据现在位于d.

希望能帮助到你...

于 2012-11-17T13:09:17.500 回答