Stephen Thomasのガイドhttps://github.com/sathomas/jsDataV.is-source/tree/master/ch7/forceに基づいて、d3 forceレイアウトグラフを作成しようとしました。D3 - 位置決めエッジでNaNエラーが発生する
しかし私は、私がその起源とそれに取り組む方法を知らないという間違いで立ち往生しています。
考えるplunker http://plnkr.co/edit/Bx0qe8DNEsnFgLhkxbfS?p=preview以下、このスニペットが原因となっている
var positionEdge = function(edge, nodes) {
edge.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
};
多くのエラー例えばエラー:すべての原因は何
var edges = [];
links.forEach(function(srcLink){
var targetNodeId;
var targetNodeName;
var sourceNodeId;
var sourceNodeName;
nodes.forEach(function(srcNode){
if(srcNode.label === srcLink.source){
sourceNodeId = srcNode.id;
sourceNodeName = srcNode.label;
} else if(srcNode.label === srcLink.target){
targetNodeId = srcNode.id;
targetNodeName = srcNode.label;
}
})
edges.push({
"id": "From_" + sourceNodeName + "_To_" + targetNodeName,
"target": targetNodeId,
"source": sourceNodeId
});
})
// remove duplicate edges
var arr = {};
for (var i=0, len=edges.length; i < len; i++)
arr[edges[i]['id']] = edges[i];
edges = new Array();
for (var key in arr)
edges.push(arr[key]);
:=「NaNの」
属性Y2の値が無効です、私は次のように私のエッジの配列を構築しますが、完全に問題を再現できるようにするには、plunkerのリンクをご利用くださいpositionEdge関数が呼び出されたときにNaNエラーがスローされますか?
ありがとうございます。私はあなたが私に与えた2番目のオプションのために行くことを選択したので、最初のものを使用すると正確に同じエラーが発生します(おそらく他の編集が必要なためです)。 ** 2番目のオプションでは、**のトピックを開いたというエラーは表示されなくなりました。したがって、私はあなたの答えを私の質問のアンサーとしてマークします。しかし、あなたがリニューアルした大胆な例を見て欲しいなら、本当に感謝しています。属性の無効な値transform = "translate(NaN、NaN)"エラーが表示されます。 http://plnkr.co/edit/Bx0qe8DNEsnFgLhkxbfS?p=preview –
@Sander_M:最初のオプションを使用するのは標準だけでなく、実際に 'd3.force'(editを参照)によって強制されたことを完全に忘れてしまいました。あなたを誤解して申し訳ありません。 – tarulen
オプション2が有効ではないと聞いて悲しいです;)私はあなたの助言を受けて、ターゲットとソースとしてオブジェクトを使用します。おそらく私はもう一度始めなくてはならないということを意味します。私の学習曲線に非常に良い、私は本当にD3でデータ視覚化を愛しています。たとえそれがsigma.jsのような複雑さを感じるとしても、それは非常に多くの選択肢と可能性を提供します。クリアして編集してくれてありがとう! –