我正在尝试在简单的散点图上实现d3鱼眼失真(http://bost.ocks.org/mike/fisheye/)。
这是我到目前为止的代码: http://plnkr.co/edit/yDWld6?p=preview
我很不确定如何调用圈子来表示失真。目前它看起来像这样但到目前为止“鼠标移动”没有任何反应。
svg.on("mousemove", function() {
fisheye.center(d3.mouse(this));
circles
.selectAll("circle")
.each(function (d) { d.fisheye = fisheye(d); })
.attr("cx", function (d) { return d.fisheye.pages })
.attr("cy", function (d) { return d.fisheye.books });
});
感谢您的帮助!
答案 0 :(得分:1)
您必须为鱼眼插件准备数据:
var circles = svg.selectAll("circle")
.data(data)
.enter()
.append("circle")
.datum( function(d) {
return {x: d.pages, y: d.books} // change data, to feed to the fisheye plugin
})
.attr("cx", function (d) {return d.x}) // changed data can be used here as well
.attr("cy", function (d) {return d.y}) // ...and here
.attr("r", 2);
...
// now we can pass in the d.x and d.y values expected by the fisheye plugin...
circles.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 * 2; });
});
我还根据我在下面链接中使用的插件的最新official version更改了鱼眼声明。
所以,这里有一个PLUNK,它将鱼眼扭曲应用于散点图。