2014-09-01 83 views
1

我在D3中定制了更像扁平包装布局的构建图表。d3中的放大镜

我想用此图表实现放大镜,以便当用户将鼠标悬停在图表上时,它会放大图表,并且圆圈看起来会更大。

我已经试过插件anythingzoomer.js

但它的问题是我的图表是在总规模更大,我想扩大其在尺寸上更小,以便原始图表的映射和克隆上圆图表不够准确。

我也使用鱼眼失真插件,但它不允许具有不同半径的圆圈。它给每个圆圈一个固定的半径。

你们有其他的选择吗?

回答

0

https://github.com/d3/d3-plugins/tree/master/fisheye的鱼眼插件提供了一个缩放的z值,您可以使用任何您想要的方式,以便它允许具有不同半径的圆。 GitHub的自述不包括如何鱼眼镜头的规模(返回为z)与具有不同的半径值,但如果你把基本的例子节点结合一个例子:

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; }); 

很清楚的看到,你可以改变将R功能更有趣的东西:

.attr("r", function(d) { return d.fisheye.z * d.size; }); 

它会适用于不同大小的元素。

+0

嗨以利亚,我已经尝试过你上面提到的。我试着放入'd.r'而不是一些恒定的半径。但是这个'd'对象不是图表,而是鱼眼插件,所以radius属性不能在那里访问。但是如果你有任何有用的演示,请分享。 – Yuvraj 2014-09-02 08:55:49

+0

不,d应该对应于绑定到该元素的数据,而d.fisheye是鱼眼插件。我会尽量整理一个简单的例子。 – Elijah 2014-09-02 15:39:14

+0

嗨,以利亚,你是对的。我没有在我的入站数据中包含radius到d3。这就是d没有半径的原因。感谢您的时间和建议。 – Yuvraj 2014-09-03 09:25:31