在d3js中创建矩形而不是气泡

时间:2016-04-14 00:27:15

标签: d3.js

我使用此http://bl.ocks.org/mbostock/4063269来创建圆圈,但我需要创建矩形而不是圆形,所有这些矩形都需要打包在一个更大的矩形内。请帮忙。

1 个答案:

答案 0 :(得分:4)

这就是你如何制作矩形而不是圆圈。

  node.append("rect")
      .attr("width", function(d) { return d.r*2; })//width is the diameter
      .attr("x", function(d) { return d.r*-1; })
      .attr("y", function(d) { return d.r*-1; })
      .attr("height", function(d) { return d.r*2; })//height is the diameter
      .style("fill", function(d) { return color(d.packageName); });

现在创建一个包含所有这些

的矩形
  //get all the data
  var data = d3.selectAll("g")[0].map(function(d) {
    return d3.select(d).data()[0]
  })
  //get the min x max x min y max y
  var xmin = d3.min(data, function(d){return d.x-d.r})
  var xmax = d3.max(data, function(d){return d.x+d.r})
  var ymin = d3.min(data, function(d){return d.y-d.r})
  var ymax = d3.max(data, function(d){return d.y+d.r})

  //make a rectangle to make it over other rectangles.
  svg.insert("rect" ,":first-child")
  .attr("x", xmin)
    .attr("y", ymin)
    .attr("height", ymax-ymin)
    .attr("width", xmax-xmin)
    .style("opacity", 0.3)
    .style("fill","blue");

工作示例here