Skip to content

封装

🌐 Pack

示例 · 封闭图使用包含关系(嵌套)来表示层级结构。叶子圆的大小编码了数据的定量维度。包含的圆显示了每个子树的近似累积大小,但由于空间浪费存在一些失真;只有叶节点可以准确比较。尽管圆形填充不像树状图那样有效利用空间,但“浪费”的空间更明显地展示了层级结构。

打包()

🌐 pack()

来源 · 使用默认设置创建一个新的包布局。

打包()

🌐 pack(root)

来源 · 列出指定的 root 层级,在 root 及其子代上分配以下属性:

  • node.x - 圆心的 x 坐标
  • node.y - 圆心的 y 坐标
  • node.r - 圆的半径

在将层次结构传递给打包布局之前,你必须先调用 root.sum。你可能还想调用 root.sort 来在计算布局之前对层次结构进行排序。

🌐 You must call root.sum before passing the hierarchy to the pack layout. You probably also want to call root.sort to order the hierarchy before computing the layout.

pack.radius(radius)

来源 · 如果指定了 radius,则将打包布局的半径访问器设置为指定的函数,并返回此打包布局。如果未指定 radius,则返回当前的半径访问器,默认值为 null。如果半径访问器为 null,则每个叶子圆的半径由叶子 node.value(由 node.sum 计算)导出;然后将半径按比例缩放以适合 布局大小。如果半径访问器不为 null,则每个叶子圆的半径由该函数精确指定。

pack.size(size)

来源 · 如果指定了 size,将此打包布局的大小设置为指定的两元素数字数组 [width, height],并返回此打包布局。如果未指定 size,则返回当前大小,默认为 [1, 1]。

pack.padding(padding)

来源 · 如果指定了padding,则将此打包布局的填充访问器设置为指定的数字或函数,并返回此打包布局。如果未指定padding,则返回当前的填充访问器,默认值为常数零。当兄弟节点被打包时,相切的兄弟节点之间将大约分隔指定的填充距离;包围的父圆与其子节点之间也将大约分隔指定的填充距离。如果未指定显式半径,则填充只是近似值,因为需要通过两遍算法来适应布局尺寸:首先在没有填充的情况下打包圆;计算并应用指定填充的缩放因子;最后在带填充的情况下重新打包圆。

packSiblings(圆形)

🌐 packSiblings(circles)

来源 · 打包指定的数组,其中每个必须有一个 circle.r 属性,指定圆的半径。为每个圆分配以下属性:

  • circle.x - 圆心的 x 坐标
  • circle.y - 圆心的 y 坐标

这些圆圈是根据Wang et al. 的前链堆积算法定位的

🌐 The circles are positioned according to the front-chain packing algorithm by Wang et al.

packEnclose(圆形)

🌐 packEnclose(circles)

示例 · 来源 · 计算包围指定数组的最小圆,每个必须有一个circle.r 属性来指定圆的半径,以及 circle.x 和 circle.y 属性来指定圆的中心。包围圆是使用 Matoušek-Sharir-Welzl 算法 计算的。(另请参见 阿波罗尼奥斯问题。)