何の所定のフォーマットはありません多くの場合、さまざまなアクセサ関数(hierarchy.childrenなど)とarray.mapなどを使用してデータを再定義することができます。しかし、引用符で囲まれた形式はおそらく、デフォルトのアクセサで動作するため、ツリーの最も便利な表現になります。
最初の質問は、graphまたはtreeを表示するかどうかです。グラフの場合、データ構造はnodesとlinksで定義されます。ツリーの場合、レイアウトへの入力はルートノードであり、配列はchild nodesで、リーフノードにはvalueが関連付けられています。
グラフを表示したい場合は、すべてエッジのリストである必要があります。ノードの配列とリンクの配列を作成するには、エッジを繰り返してください。あなたは、これらのノードを渡すことができ
d3.csv("graph.csv", function(links) {
var nodesByName = {};
// Create nodes for each unique source and target.
links.forEach(function(link) {
link.source = nodeByName(link.source);
link.target = nodeByName(link.target);
});
// Extract the array of nodes from the map by name.
var nodes = d3.values(nodeByName);
function nodeByName(name) {
return nodesByName[name] || (nodesByName[name] = {name: name});
}
});
と:あなたはd3.csvを使用してこのファイルをロードして、ノードとリンクの配列を作り出すことができる
source,target
A1,A2
A2,A3
A2,A4
:あなたは「graph.csv」と呼ばれるファイルを持っていたと言いますグラフを可視化する力のレイアウトへのリンク:
ツリーを代わりに作成する場合は、少しずつ異なる形式のデータ変換を行い、各親の子ノードを累積する必要があります。そのよう
d3.csv("graph.csv", function(links) {
var nodesByName = {};
// Create nodes for each unique source and target.
links.forEach(function(link) {
var parent = link.source = nodeByName(link.source),
child = link.target = nodeByName(link.target);
if (parent.children) parent.children.push(child);
else parent.children = [child];
});
// Extract the root node.
var root = links[0].source;
function nodeByName(name) {
return nodesByName[name] || (nodesByName[name] = {name: name});
}
});
:
あなたは "隣接リスト" 何を意味するのですか? – jbabey
彼は '[(A1、A2)、(A2、A3)、(A2、A4)]'を意味すると思いますか? – sczizzo
@sczizzo:はい、それは私が意味するものです!申し訳ありません。私はより明確にすべきだった。 – Legend