2013-06-11 83 views
0
<?php 
//Zoomable Partition Layout 
//http://mbostock.github.io/d3/talk/20111018/partition.html 
echo $data 
?> 

<div id="partition"> 
<script type="text/javascript"> 


var w = 690, 
h = 700, 
x = d3.scale.linear().range([0, w]), 
y = d3.scale.linear().range([0, h]); 

var vis = d3.select("#partition").append("div") 
.attr("class", "chart") 
.style("width", w + "px") 
.style("height", h + "px") 
.append("svg:svg") 
.attr("width", w) 
.attr("height", h); 

var partition = d3.layout.partition() 
.value(function(d) { return d.size; }); 

d3.json("flare.json" , function(root) { 

var g = vis.selectAll("g") 
    .data(partition.nodes(root)) 
.enter().append("svg:g") 
    .attr("transform", function(d) { return "translate(" + x(d.y) + "," + y(d.x) + ")"; }) 
    .on("click", click); 

var kx = w/root.dx, 
    ky = h/1 

我不想使用“d3.json(”flare.json“,function(root){”因为我用jQuery获取数据并将它保存在$ data中 因此,我想使用“json = JSON.parse('<'?php echo $ data?>');”但我不知道它是如何工作的。有人帮我吗?d3.js如何动态添加节点到树#2

+0

'根= $ data'? –

+1

PHP是一个服务器端语言,PHP代码都会转换为输出,以及产生的HTML页面。所以'<?PHP的echo $数据?>'有将其替换为JSON,然后在查看它之前通过Apache/PHP进行渲染。 – user568109

回答

0
<script type="text/javascript"> 
var jdata='${jsonvalue}' //json value 
d3.json("source dummy.json", function(json) { // dummy.json for function call but processing json of jdata 
root = JSON.parse(jdata); 
root.x0 = h/2; 
root.y0 = 0; 
function toggleAll(d) { 
if (d.children){ 
d.children.forEach(toggleAll); 
toggle(d); 
}} 
// Initialize the display to show a few nodes. 
root.children.forEach(toggleAll); 
update(root); 
}); 
</script> 
Normally in D3 d3.json(function) must read the data from flare.json.For this case dymanically load the json [jdata] and processing the data for visualization