d3 js – 加载没有http获取的json

我正在学习D3。 在d3 js 中加载数据有一定的方法 。 但是他们都似乎做了一个HTTP GET。 在我的情况下,我已经有一个string中的json数据。 我怎样才能使用这个string,而不是另一个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'并避免对服务器进行asynchronous调用? 谢谢。

只需用d3.jsonreplaced3.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 

更新09/2013

原始代码已经改变。 所以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

在这里,他们将graphics数据存储在variables$ data中,并通过.data($ data)函数进行设置。

我将这个方法应用到你正在使用的任何图表上。

chumkiu的答案对我很好,但需要做一些调整 – 在最新版本的d3泡泡图中,您需要定义root而不是json,如

  root = JSON.parse( myjson ); 

或者,你也可以在当然代码的其余部分用“json”代替“root”。 🙂

对于任何人回答有关使用本地数据集的d3节点链接树的问题,这个答案对我来说非常合适 – 非常感谢这个页面上的贡献者。

Interesting Posts