0

我正在尝试在大型 Tilfold-Reingold 图(约 4000 个对象)中使用Fisheye.js效果。我的目标是这样的例子

我必须错误地使用 Fisheye.js,因为我的示例似乎没有影响所需的节点或文本(根本没有)。

https://jsfiddle.net/Nyquist212/7b7q9ra9/

谁能告诉我我做错了什么?

svg.on("mousemove", function() {

fisheye.focus(d3.mouse(this));

node.each(function(d) { d.fisheye = fisheye(d); })

node.selectAll("circle")
    .attr("cx", function(d) { return d.fisheye.x - d.x; })
    .attr("cy", function(d) { return d.fisheye.y - d.y; })
    .attr("r", function(d) { return d.fisheye.z * 10; });

node.select("text")
    .attr("dx", function(d) { return d.fisheye.x - d.x; })
    .attr("dy", function(d) { return d.fisheye.y - d.y; });

});

更新:目的是针对每个节点和相关的描述文本,使它们更具可读性。

4

2 回答 2

0

@Mark - 感谢您提供此帖子的链接

@Peter-感谢您提供文本标签部分。

我设法让它将两者结合起来工作。

http://fiddle.jshell.net/Nyquist212/w05nkyry/3/

于 2015-11-17T17:13:04.177 回答
0

我玩过你的小提琴。我注意到,svg 变量不是它的名字所暗示的。我还设法增加了文本的大小。它仍然有点奇怪,但我认为它更接近你的目标。

d3.select("svg").on("mousemove", function() { //here

fisheye.focus(d3.mouse(this));

node.each(function(d) { d.fisheye = fisheye(d); })

node.selectAll("circle")
    .attr("cx", function(d) { return d.fisheye.x - d.x; })
    .attr("cy", function(d) { return d.fisheye.y - d.y; })
    .attr("r", function(d) { return d.fisheye.z * 10; });

node.select("text")
    .attr("dx", function(d) { return d.fisheye.x - d.x; })
    .attr("dy", function(d) { return d.fisheye.y - d.y; })
    .attr("style", function(d){return "font-size :"+d.fisheye.z*10+"px";}); //here

});

https://jsfiddle.net/7b7q9ra9/23/

于 2015-11-17T16:12:21.917 回答