2010-06-03 56 views
6

我目前正在看http://people.iola.dk/olau/flot/examples/interacting.html的例子,但我无法弄清楚,如何获取数据点的坐标。我不会点击剧情,因此我无法使用剧情剧本。现在我的问题:是否有另一种方式来获取数据点的x和y坐标,而不点击?我将使用jQuery滑块来突出显示图形上的不同点,并希望在数据点旁边有一个工具提示。jQuery/Flot:你如何得到一个数据点的坐标?

感谢提前:)

回答

0

理论上得到x,y坐标内的容器如下:

$(function() { 
     $('#container').mousemove(function (e) { 
      $('.xPos').text(e.clientX - $('#container').offset().left); 
      $('.yPos').text(e.clientY - $('#container').offset().top); 
     }); 
    }); 
2

flot API

各种事物的内部 塞满轴对象,例如您可以使用 getAxes()。xaxis.ticks来查找是否为xaxis。 另外两个 有用的属性是p2c和c2p, 函数用于将数据从 点空间转换为画布图空间 并返回。两者均返回值为 的偏移量与图解偏移量。

plot.offset()结合(相对于文档网格区域的偏移量),你应该有你需要弄清楚其余的工具。 plot.pointOffset()也是有用的。它返回一个点相对于包含div的位置。

+0

反过来呢?如果我有x偏移量,Flot可以提供数据值吗? – 2013-01-11 19:10:04

6

这点迟了,但是我在绘制图表之后运行了这个函数,这是将标签放置在线图中绘制的数据点下方的一种方式。

$(document).ready(function(){ 
$(function(){ 
     var data = [ 
      {data: [[1, 5], [2, 10], [3, 15], [4, 15], [5, 10], [6, 5]], color: '#3a8df6'}, 
      {data: [[1, 52], [2, 42], [3, 32], [4, 32], [5, 42], [6, 52]], color: '#ff0000'} 
      ]; 
     var options = { 
       lines: {show: true}, 
       yaxis: {tickDecimals: 0, min: 0, max: 100, autoscaleMargin: null} 
      }; 
    var graph = $.plot($('#graph'), data, options); 
    var points = graph.getData(); 
    var graphx = $('#graph').offset().left; 
    graphx = graphx + 30; // replace with offset of canvas on graph 
    var graphy = $('#graph').offset().top; 
    graphy = graphy + 10; // how low you want the label to hang underneath the point 
    for(var k = 0; k < points.length; k++){ 
      for(var m = 0; m < points[k].data.length; m++){ 
      showTooltip(graphx + points[k].xaxis.p2c(points[k].data[m][0]), graphy + points[k].yaxis.p2c(points[k].data[m][1]),points[k].data[m][1]) 
      } 
     } 
}); 
}); 
function showTooltip(x,y,contents){ 
     $('<div id="tooltip">' + contents + '</div>').css({ 
      position: 'absolute', 
      display: 'none', 
      top: y, 
      left: x 
     }).appendTo("body").fadeIn(200); 
} 

这是我的头的顶部,但基本上,该函数经过所有的数据点,并使用在所述轴上的P2C的功能,然后将其添加本(有一些填充)图本身来抵消。然后它只是使用正常的工具提示覆盖。

此外,如果在条形图上使用它,您可以设置工具提示的宽度,给它一个文本对齐的中心,然后如果你想要所有的标签都在一行,那么只需在yaxis中放一个数字p2c功能。然后使用graphy填充将其放在需要的位置。

希望这可以帮助未来的人:)

相关问题