【问题标题】:how to adjust parent circle radius using d3js pack layout如何使用 d3js 包布局调整父圆半径
【发布时间】:2013-04-22 00:36:39
【问题描述】:

是否可以使用 d3js 包布局调整父圈子的大小,而不受其包含的子圈子的影响?

我正在使用 d3js 包布局来显示圆圈的层次结构。每个圆圈代表一个销售组。嵌套在其中的圆圈是子销售组。每个组都有一个由圆半径表示的总销售额。每个群体,包括父母,都可以有自己的销售额。

我知道比例可能不准确,但我想同时调整父圆的半径以表明父组有自己的销售额。

我目前正在设置独立于子级的父级大小,但这似乎被忽略了,因为父级半径由它包含的子级决定。

是否可以在包布局中调整父半径?

我确实看到了类似的问题:

D3JS packed circle layout, padding in relation to parent

但它没有明确的答案。

【问题讨论】:

  • 你解决了吗?

标签: d3.js


【解决方案1】:

圆的位置和半径由pack.nodes() 函数计算并返回。通常,您会将其直接提供给 .data() 函数,然后根据它绘制元素,但没有什么可以阻止您更改返回值。 pack.nodes() 的返回值的每个元素都有一个属性 parent,如果它是顶级圆,则该属性将为 null 和一个属性 r,用于确定半径。

实现您想要的最简单的方法是简单地更改包布局返回的顶级圆的半径。也就是说,如果parent 为空,则遍历节点数组并更改半径。

【讨论】:

  • 这非常接近。问题在于层次结构中间的节点。他们有非空的父母,但也可以有销售额。所以对 parent 的 null 检查将不起作用。另外,玩半径不会弄乱布局并可能造成圆形重叠吗?似乎在生成布局时需要考虑这些“额外”数据,而不是在它已经生成之后。
  • 原则上可以调整任意圆的半径。是的,这会弄乱内圈的布局。我完全同意在运行布局时需要考虑这一点,但它根本不支持这一点。您当然可以修改布局以考虑附加值,但这可能很困难。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 2015-08-10
  • 2018-10-13
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
相关资源
最近更新 更多