私はd3を学んでいます。 データをロードする特定の方法 d3 jsがあります。しかし、それらはすべてHTTP GETを行うようです。私のシナリオでは、すでにJSONデータが文字列に含まれています。別のhttp要求を作成する代わりにこの文字列を使用するにはどうすればよいですか?このドキュメントを探してみましたが、見つかりませんでした。
これは動作します:
d3.json("/path/flare.json", function(json) {
//rendering logic here
}
今、私が持っている場合:
//assume this json comes from a server (on SAME DOMAIN)
var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}';
D3で既に計算された「myjson」を使用して、サーバーへの非同期呼び出しを回避するにはどうすればよいですか?ありがとう。
単にd3.json
で呼び出す
json = JSON.parse( myjson );
IE:
var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}';
// d3.json("/path/flare.json", function(json) { #delete this line
json = JSON.parse( myjson ); //add this line
//rendering logic here
//} #delete this line
2013年9月更新
元のコードが変更されました。したがって、varname json
はroot
になります。
// d3.json("flare.json", function(error, root) { #delete this line
root = JSON.parse( myjson ); //add this line
//rendering logic here
//} #delete this line
この例によると:
http://phrogz.net/JS/d3-playground/#StockPrice_HTML
ここでは、変数$ data内にグラフデータを格納し、.data($ data)関数を介してグラフデータを設定しています。
使用しているグラフにこの方法を適用します。
Chumkiuからの答えは私にとってはうまくいきましたが、いくつかの調整が必要でした-d3バブルチャートの最新バージョンでは、次のようにjsonではなくrootを定義する必要があります
root = JSON.parse( myjson );
あるいは、残りのコードで「root」を「json」に置き換えることもできます。 :-)
ローカルデータセットを利用するd3ノードリンクツリーに関する質問でこの回答に来た人にとっては、この回答は私にとってはうまくいきました。このページの貢献者に感謝します。