如何用d3.js从json绘制voronoi图

时间:2013-10-05 11:19:14

标签: javascript json html5 d3.js voronoi

Drawing voronoi diagram from a json  with d3.js and show the names in the center of each box where the black dots are shown.

http://bl.ocks.org/mbostock/4060366




<script>   
var width = 900,
    height = 500;


var vertices=[
              [200, 200],
              [760, 300],
              [230, 380],
              [660, 800],
              [660, 500],
              [660, 800],
              [160, 800],
              [460, 800],
              [860, 200],
              [660, 800],
              [760, 600],
              [260, 800],
              [660, 600]
            ];

var voronoi = d3.geom.voronoi()
    .clipExtent([[0, 0], [width, height]]);

var svg = d3.select("#Voronoi").append("svg")
    .attr("width", width)
    .attr("height", height)
    .on("mousemove", function() { vertices[0] = d3.mouse(this); redraw(); });

var path = svg.append("g").selectAll("path");
var text1 = svg.append("svg:text");

svg.selectAll("circle")
    .data(vertices.slice(1))
  .enter().append("circle")
    .attr("transform", function(d) { return "translate(" + d + ")"; })
    .text(width);
    .attr("r", 1.5);
redraw();

function redraw() {
  path = path
      .data(voronoi(vertices), polygon);

  path.exit().remove();

  path.enter().append("path")
      .attr("class", function(d, i) { return "q" + (i % 9) + "-9"; })
      .attr("d", polygon);

  path.order();
}

function polygon(d) {
  return "M" + d.join("L") + "Z";
} 
</script>

以上是我的剧本。我使用顶点中的点生成图表。如何使用json生成这样的东西。但是json包含每个框的点和名称。名称应显示在每个方框上。

0 个答案:

没有答案