2010-08-16 39 views
5

使用jQuery的flot,有一种方法可以通过将鼠标悬停在其上来选择项目。在选项中,可以将网格[mouseActiveRadius]设置为数字,以指示所需的选择圆半径长度。例如,如果将其设置为10,则任何鼠标悬停事件都会突出显示10像素半径圆中最近的点。Flot mousehover算法纯粹基于x位置检测?

但是,我希望改为告诉flover将x方向上最接近的点悬停(而不是最近的点周期)。

EG在这个例子中:点1显然比点2更接近x,但是我仍然想要选择点2,因为它在x方向上更接近。

  x 
1 







      2 

有没有办法做到这一点与插件/内置功能,或者我需要编写一个功能扩展flot的默认行为?

回答

4

我发现的唯一方法是更改​​源代码。 (它吸收好,但它往往比一个未维护的解决办法一个很好的注释黑客)

找到这段代码:(function findNearbyItem(),上线2278在我的修订)

if (s.lines.show || s.points.show) { 
        for (j = 0; j < points.length; j += ps) { 
         var x = points[j], points[j + 1]; 
         if (x == null) 
          continue; 

更改为:

if (s.lines.show || s.points.show) { 
        for (j = 0; j < points.length; j += ps) { 
         var x = points[j], y =0; // points[j + 1]; 
         if (x == null) 
          continue; 

希望这个答案能够帮助任何有同样问题的人。

0

y = 0对于较大的y值不起作用。 y = axisy.datamin修复了这个问题。