2016-05-28 2 views
0

レベル:初級。D3 Sankeyでは、jsonやcsvファイルの代わりにオブジェクトや配列からロードするにはどうすればいいですか?

私はD3で実装されているsankeyを見ています。この例では、単にオブジェクトや配列を使用するのではなく、JSONまたはCSVのデータを使用しているようです。違うようにするかもしれない1つか2つは、問題を単純化するのではなく長い散歩を使うようです。

外部ファイルとしてデータを書式設定する代わりに、データをコードにロードする方法はありますか?ありがとう!

利用可能なコードの例:あなたはどの非同期操作を行うことなく、可能なデータを持っている場合は、次のようhttp://bl.ocks.org/d3noob/c2637e28b79fb3bfea13

答えて

0

は、あなたがこれを達成することができ、カスタムローディング機能によりd3.jsonライン

d3.json("sankey-formatted.json", function(error, graph) { 
    // ... 
}) 

を置き換えます例えば

loadData(function (graph) { 
    // contents of the function passed to d3.json 
}) 

今これは、ハードな方法だろう

function loadData(cb) { 
    var data = { 
    "nodes":[ 
    {"node":0,"name":"node0"}, 
    {"node":1,"name":"node1"}, 
    {"node":2,"name":"node2"}, 
    {"node":3,"name":"node3"}, 
    {"node":4,"name":"node4"} 
    ], 
    "links":[ 
    {"source":0,"target":2,"value":2}, 
    {"source":1,"target":2,"value":2}, 
    {"source":1,"target":3,"value":2}, 
    {"source":0,"target":4,"value":2}, 
    {"source":2,"target":3,"value":2}, 
    {"source":2,"target":4,"value":2}, 
    {"source":3,"target":4,"value":4} 
    ]} 

    // invoke the function passed as an argument 
    cb(data) 
} 

プレーンなJSのオブジェクトにすることができ、あなたが持っているデータと呼ばれるべきパラメータとしての機能を受け取るloadData機能、使いやすいですその機能を取り除き、データを直接保持する変数を持っていることがあります。

var graph = { /* the nodes and links are here */ } 
// contents of the function passed to d3.json 
関連する問題