这是我以前在泡沫图表上的帖子的延续,我一直在努力。我通过改编Chris Tufts的代码达到了我想要的效果:
https://blockbuilder.org/lydiawawa/347e2b0aeed51d7dc56fde40b08e5fcd
但是,当我尝试添加工具提示时,我无法提取BMI和Race的原始值(在代码中,BMI = size和Race = group)这是因为.data调用节点而不是原始数据。有谁知道如何指出工具提示以获取正确的值?
我知道我应该在create_node函数中定义组和大小,如下所示,但是我收到了一个意外的var令牌错误。
function create_nodes(data,node_counter) {
var i = cs.indexOf(data[node_counter].group),
var z = cs.data[node_counter].group,
var s = cs.data[node_counter].size,
r = Math.sqrt((i + 1) / m * -Math.log(Math.random())) * maxRadius,
d = {
cluster: i,
z,
s,
radius: radiusScale(data[node_counter].size)*1.5,
text: data[node_counter].text,
x: Math.cos(i / m * 2 * Math.PI) * 200 + width / 2 + Math.random(),
y: Math.sin(i / m * 2 * Math.PI) * 200 + height / 2 + Math.random()
}
if (!clusters[i] || (r > clusters[i].radius)) clusters[i] = d;
console.log(d);
return d;
};
您可以像创建size
一样轻松地创建group
属性:
size: data[node_counter].size,
顺便说一句,你在group
中有一个语法错误(你错过了冒号),它应该是:
group: data[node_counter].group,
这是你更新的bl.ocks:https://bl.ocks.org/GerardoFurtado/5802f23a0bd1c4a3f94f95eded56bc97/dc36321d0d4bb7db2a44246f9330f22099276524
PS:作为一个友好的建议,你不需要那个繁琐的功能。只需更改data
数组并将其直接传递给布局。