我制作了一个分层边捆绑图,类似于 Mike Bostock 提供的示例(我已链接到 jsfiddle)。问题是我的图表要大得多,这使得它无法在查看窗口中完全显示而没有大量节点相互重叠,因为只有这么多(大约 1500 个)。我把实际的圆圈变大了,这样没有节点重叠,但这意味着您只能查看图形的一部分,并且必须滚动才能查看其余部分。
最后我尝试缩小放大的圆圈,使其在页面上完全可见,但是节点的名称显然太小而无法辨别。因此,我要做的是在图形上实现鱼眼镜头效果,以便每当用户将鼠标悬停在节点上时,它对小文本具有放大效果,因此可以在“放大镜”下阅读文本。
这是鱼眼镜头示例的代码,但添加到边缘捆绑图时没有效果。你可以在这里看到想要的效果:http: //bost.ocks.org/mike/fisheye/
我必须改变什么才能在我的图表上实现这种效果?
var fisheye = d3.fisheye.circular()
.focus([360, 90])
.radius(100);
d3.select(".container").on("mousemove", function() {
fisheye.focus(d3.mouse(this));
node.each(function(d) { d.fisheye = fisheye(d); })
.attr("cx", function(d) { return d.fisheye.x; })
.attr("cy", function(d) { return d.fisheye.y; })
.attr("r", function(d) { return d.fisheye.z * 4.5; });
link.attr("x1", function(d) { return d.source.fisheye.x; })
.attr("y1", function(d) { return d.source.fisheye.y; })
.attr("x2", function(d) { return d.target.fisheye.x; })
.attr("y2", function(d) { return d.target.fisheye.y; });
});
这是我想在其上实现鱼眼效果的分层捆绑图的示例。