2

csv で力グラフを作成するために mbostock が示した例に従います。

D3 の JSON 形式に変換するには?

http://bl.ocks.org/2949937

D3 でフォース グラフを作成していますが、ノードのサイズ、色、またはリンクの長さを設定するために CSV ラインの値を呼び出す方法/場所がわかりません。

私はいくつかのことを試しました:

links.forEach(function(link) {
    link.source = nodeByName(link.user1);
    link.target = nodeByName(link.user2);
    link.size = nodeByName(link.somevaluefromcsv)
    link.distance = nodeByName(link.somevaluefromcsv);
  });

これは間違っています。私が知る限り、それは空のノードを生成するだけで、値は他の場所で呼び出すことはできません。

var node = svg.selectAll(".node")
      .data(nodes)
    .enter().append("circle")
      .attr("class", "node")
      .attr("r", function(d) {return d[3];}) //this is not returing any value as far as I can tell.
      .call(force.drag);

またはティック関数のさらに下:

node.attr("cx", function(d) { return d.x; })
        .attr("cy", function(d) { return d.y; })
        .attr("r", function(d) {return d[7];});

おそらくいくつかの原因で問題が発生しています。

CSV の一般的な行 (現在の状態) は、時間、ユーザー 1、ユーザー 2、類似度スコア、合計ポイント、反対のポイント、ポイント、長さの順に次のとおりです。

1223.8167,john6,john5,0.153846153846,1,0,1,5
1223.9166,john6,john5,0.185185185185,8,0,8,6
1223.9667,bobby4,bobby3,0.402777777778,224,320,-96,15
1224.1167,bobby4,bobby3,0.402777777778,226,310,-84,15
1224.2,bobby4,bobby3,0.402777777778,240,283,-43,15
1224.2,john6,john5,0.185185185185,2,0,2,5
1224.2,john6,john5,0.153846153846,2,0,2,5
1224.2667,bobby4,bobby3,0.397058823529,0,24,-24,13
1224.2833,john6,john5,0.153846153846,1,0,1,5
1224.45,bobby4,bobby3,0.397058823529,0,21,-21,13
1224.55,bobby4,bobby3,0.442857142857,0,18,-18,14
4

1 に答える 1

3

関数nodeByName(name)- 新しいノードを作成するか、引数として指定された名前で既存のノードを返します。リンクからノード プロパティを渡す必要がある場合は、forEach

links.forEach(function(link) {
    link.source = nodeByName(link.user1);
    link.target = nodeByName(link.user2);
    link.source.radius = link.radius
    link.size = link.somevaluefromcsv;
    link.distance = link.somevaluefromcsv;
});

links - ノード間のリンクの配列。

var node = svg.selectAll(".node")
      .data(nodes)
    .enter().append("circle")
      .attr("class", "node")
      .attr("r", function(d) {return d.radius;}) // radius property of node
      .call(force.drag);
于 2012-11-20T19:07:35.803 に答える