如何使用d3.js将圆形变成正方形

10

在将25个圆形添加到页面后,我运行了以下函数:

var transitionPage = function () {
  startThePage();
  var height = $(document).height() - 20
    , width = $(document).width()
    ;

  d3.selectAll("circle")
    .transition().duration(2500)
      .style("fill", "steelblue")
      .attr("r", 15)
    .transition().duration(1000)
      .attr("cy", (height / 2))
    .each(function (d, i) {
      d3.select(this)
        .transition().duration(1000)
        .attr("cx", 30 + (i * width / 25));
    });
}

这个方法很有效,可以将它们正确地水平对齐在页面的中间。

然而,我无法弄清如何将每个圆形转换为正方形或矩形。

我应该如何解决这个问题?

1个回答

17
在SVG建议中,圆形无法进行转换以成为正方形。如果您有控制权,可以尝试绘制正方形并应用边框半径来代替圆形。类似于下面的示例:
d3.select("body").select("svg").append("rect")
    .attr("rx",100)
    .attr("ry",100)
    .attr("x",100)
    .attr("y",100)
    .attr("width",100)
    .attr("height",100)
    .attr("stroke","black")
    .attr("fill","white");

然后从圆形转换为正方形可以这样做:

d3.select("rect")
    .transition()
    .duration(1000)
    .attr("rx",0)
    .attr("ry",0);

5
这是我加入这个网站时提出的第一个问题,当时我刚开始学习编程。我想我当时告诉自己在获得15个声望后回来给这个答案点赞,但我猜我忘了。你的回答帮助我创建了http://gablesmao.com的主页(我很惊讶这个网站仍然可用)。无论如何,经过将近2年,您应该得到应有的+1。 - royhowie
1
这是一个演示: http://bl.ocks.org/ericsoco/1470dd23c29b2095635b1e7e20b75f44 - ericsoco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接