csv で力グラフを作成するために mbostock が示した例に従います。
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