gpt4 book ai didi

javascript - Fisheye Distortion 插件的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:00:31 29 4
gpt4 key购买 nike

您好,我想使用 Fisheye Distortion plugin对于我在 d3.js 中的力导向图,但是当我想应用这个插件时,图的行为很奇怪。我是 d3.js 的新手,不擅长计算机图形学。

complete sample in jsfiddle

var fisheye = d3.fisheye.circular()
.radius(200)
.distortion(2);

// graph - variable which represents whole graph
graph.svg.on("mousemove", function() {
fisheye.focus(d3.mouse(this));

d3.select("svg").selectAll("circle").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; });


d3.select("svg").selectAll("line").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; });
});

奇怪的行为我的意思是图形的节点在鼠标悬停操作后消失(隐藏)。

enter image description here

最佳答案

问题是您使用代码将 cxcy 添加到圆圈中,但您的圆圈实际上包含在 nodeElements 中被转换到位。

因此,将鱼眼代码更改为以下内容即可解决问题:

graph.svg.on("mousemove", function() {
fisheye.focus(d3.mouse(this));

// Change transform on the .node
d3.select("svg").selectAll(".node")
.each(function(d) { d.fisheye = fisheye({ x: graph.x(d.x), y: graph.y(d.y) }); console.log(d.fisheye, d); })
.attr("transform", function (d) { return "translate(" + d.fisheye.x + "," + d.fisheye.y + ")"; })
// Now change the 'r'adius on the circles within
// One can also scale the font of the text inside nodeElements here
.select("circle")
.attr("r", function(d) { return 15 * graph.nodeSizeFactor * d.fisheye.z; });


d3.select("svg").selectAll("line")
.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; });
});

请注意,我还为 transform 属性和 15 * 应用了适当的比例 graph.xgraph.y graph.nodeSizeFactor 表示圆的半径(而不是 4.5)。

工作演示:http://jsfiddle.net/90u4sjzm/23/

关于javascript - Fisheye Distortion 插件的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26742902/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com