0

私は現在、変換位置であるオブジェクトを持っています & 私はここに私の変換関数でそれらを持っています:

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


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

国データを 1 回だけ収集し、複数回収集しないようにテキスト関数で定義できるかどうかを知りたいですか?

私の主張をより明確にするための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 に答える