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

D3.js 在d3js中创建矩形而不是气泡,d3.js,D3.js,我用它来创建圆,但我需要创建矩形而不是圆形,所有这些矩形都需要放在一个更大的矩形中。请帮助。这是如何制作矩形而不是圆形的 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*-

我用它来创建圆,但我需要创建矩形而不是圆形,所有这些矩形都需要放在一个更大的矩形中。请帮助。

这是如何制作矩形而不是圆形的

  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");

工作示例

谢谢。所有这些小矩形都需要封闭在一个大矩形中,在您的示例中,所有的小矩形都是重叠的,并且间距不相等。对不起。。将上面的代码粘贴到一个大矩形中。它工作正常。对于矩形之间的间距,您可以像这样更改填充
var bubble=d3.layout.pack().sort(null)、size([diameter,diameter])、padding(25.5)工作代码在这里我创建了下面的一个,我使所有的大小相同。现在看起来不错,但看起来像个六边形。它们不是从左上角(小矩形)开始创建的,而是从中心到外部创建的。有什么方法可以移除所有这些空间并使其均匀分布?左上角、右上角、左下角和右下角有更多的白色间距