【问题标题】:Padding and margin on pack layout包布局上的填充和边距
【发布时间】:2015-08-26 19:24:31
【问题描述】:

简介

我一直在 StackOverflow 上搜索有关使用圆形包装布局的填充/边距应用程序,但没有找到任何有用的问题,也没有找到答案。

我有什么

我有一个包布局,圆圈内有圆圈,如下所示:

输入的圆圈由以下人员渲染:

var selection = child.datum(data).selectAll(".node")
    .data(pack.nodes, function(d) {
      return d.name;
    });

var newG = enter
    .append("g")
    .classed("node", true)
    .attr("transform", function(d) {
      return translate(d.x, d.y);
    });

  newG
    .append("circle") // Outer circle
    .attr("r", function(d) { return 0; })
    .style("fill", "green")
    .append("circle") // Inner circle
    .attr("r", function(d) {
      return d.r - (d.r / 10); // Border is 10% of the circle radius
    });

期望

增加第一个圆的半径不起作用。我真的没有尝试这么多事情,因为我不知道我应该为此尝试什么。所有circle 元素都基于g,但增加该g 元素的翻译会导致对其他元素位置的误解。我在那里增加的一切只会增加圆圈及其子元素的规模,但必要的是它们之间的填充。我有一个基本的working demo here

问题

是否有一种简单的方法可以在包布局或内置功能上应用填充/边距?

已编辑

使用内置的pack.padding() 将使圆圈彼此远离。这部分解决了问题,但圈子尚未到达父级。这是一个内部空间:

提前致谢。

【问题讨论】:

  • 问题是pack.padding 并没有真正从他们的父母那里移开内圈。 imgur.com/Cn6bgtq
  • 是的,包布局不支持设置边距。
  • 我在包布局中添加了一个 margin 参数,它可以满足我的需求,并向 D3 提交了一个 pull request,因此它可能很快就会可用。
  • 嗯,这确实解决了问题。我非常感谢你!如果您愿意,请将此作为答案发布,以帮助未来的用户,以帮助他们找到它,并且我可以将问题作为已解决关闭。

标签: javascript d3.js svg


【解决方案1】:

您可以通过pack.padding() 获得一些帮助。这不会改变孩子与父母的距离——目前 D3 不支持这一点。

我已经实现了一个 margin 参数,并提交了一个 pull request,所以希望它很快就会可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 2010-12-05
    • 2012-02-28
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多