[html] view plain copy
 print?
  1. <html>    
  2.   <head>    
  3.         <meta charset="utf-8">    
  4.         <title>树状图</title>    
  5. <style>  
  6.   
  7. .node circle {  
  8.   fill: #fff;  
  9.   stroke: steelblue;  
  10.   stroke-width: 1.5px;  
  11. }  
  12.   
  13. .node {  
  14.   font: 12px sans-serif;  
  15. }  
  16.   
  17. .link {  
  18.   fill: none;  
  19.   stroke: #ccc;  
  20.   stroke-width: 1.5px;  
  21. }  
  22.   
  23. </style>  
  24.   </head>   
  25. <body>  
  26. <script src="http://d3js.org/d3.v3.min.js"></script>  
  27. <script>  
  28.   
  29. var width = 500,  
  30. height = 500;  
  31.   
  32. var tree = d3.layout.tree()  
  33.     .size([width, height-200])  
  34.     .separation(function(a, b) { return (a.parent == b.parent ? 1 : 2); });  
  35.   
  36. var diagonal = d3.svg.diagonal()  
  37.     .projection(function(d) { return [d.y, d.x]; });  
  38.   
  39. var svg = d3.select("body").append("svg")  
  40.     .attr("width", width)  
  41.     .attr("height", height)  
  42.     .append("g")  
  43.     .attr("transform", "translate(40,0)");  
  44.   
  45.   
  46.   
  47. d3.json("city_tree.json", function(error, root) {  
  48.   
  49.     var nodes = tree.nodes(root);  
  50.     var links = tree.links(nodes);  
  51.       
  52.     console.log(nodes);  
  53.     console.log(links);  
  54.       
  55.     var link = svg.selectAll(".link")  
  56.       .data(links)  
  57.       .enter()  
  58.       .append("path")  
  59.       .attr("class", "link")  
  60.       .attr("d", diagonal);  
  61.       
  62.     var node = svg.selectAll(".node")  
  63.       .data(nodes)  
  64.       .enter()  
  65.       .append("g")  
  66.       .attr("class", "node")  
  67.       .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })  
  68.       
  69.     node.append("circle")  
  70.       .attr("r", 4.5);  
  71.       
  72.     node.append("text")  
  73.       .attr("dx", function(d) { return d.children ? -8 : 8; })  
  74.       .attr("dy", 3)  
  75.       .style("text-anchor", function(d) { return d.children ? "end" : "start"; })  
  76.       .text(function(d) { return d.name; });  
  77.     });  
  78.   
  79. </script>  
  80.           
  81.     </body>    
  82. </html>    

D3实现TREE树状图

相关文章: