javascript - D3 气泡示例 : What does bubble. nodes() 做什么?

标签 javascript json svg d3.js circle-pack

示例:http://mbostock.github.com/d3/ex/bubble.html

enter image description here

我很难理解第 16 行发生了什么:

.data(bubble.nodes(classes(json))

为什么,或者在 classes() 函数中,变量 classes[] 获得为其每个对象定义的 x、y、r 值。另外,bubble.nodes() 似乎不是一个实际的函数?

如果我添加一个

console.log(classes)

在第 44 行和第 45 行之间 - 内部的每个对象似乎都已经填充了 x,y,r - 但不清楚为什么会发生这种情况。

最佳答案

bubble.nodes() 的调用归结为对 d3.layout.pack().nodes() 的调用自 bubble=d3.layout.pack()。诀窍是 pack.nodes() 被硬编码为使用输入的 children(在本例中为所有包)的 value 键来调整节点大小(添加 r)并确定位置(添加 xy)。

本质上,

 var root = {"children": [
              {"packageName":"cluster","className":"AgglomerativeCluster","value":3938},
              {"packageName":"cluster","className":"CommunityStructure","value":3812},
              {"packageName":"cluster","className":"HierarchicalCluster","value":6714},
              {"packageName":"cluster","className":"MergeEdge","value":743}
         ]}; // This is an excerpt of the real data.

 var bubble = d3.layout.pack(); 

 // pack.nodes() assigns each element of "children" a r, x, and y based on value
 bubble.nodes(root); 

一开始这也让我感到困惑,你可以看到 classes() 没有添加 rxy 因为 classes(root) 没有这些属性。 krasnaya 的回答触及了大部分内容,但我觉得它需要更多解释(至少对我来说是这样)。

关于javascript - D3 气泡示例 : What does bubble. nodes() 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530748/

相关文章:

json - 从 Go 结构创建 JSON 表示

php - 将IOS中加密的JSON数据发送给PHP解密

c# - 在iis中启用svg解压

javascript - 输出中的 "undefined"是什么意思?

c# - 如何使用 ASP.NET 或其他方式阻止浏览器关闭?

javascript - 如何在 html 页面上点击提交下载文件?

JavaScript 无法访问文档 : null or undefined

ios - 大型数据库 - 在设备上显示数据的最佳方式?

javascript - 使用函数时Jquery意外标记

css - 在 XUL 中嵌入 SVG