我目前正在查看http://people.iola.dk/olau/flot/examples/interacting.html的示例,但我无法弄清楚,如何获取数据点的坐标。我不会点击剧情,所以我无法使用事件plotclick。现在我的问题是:有没有另一种方法来获取数据点的x和y坐标,而不点击?我将使用jQuery滑块突出显示图表上的不同点,并希望在数据点旁边有一个工具提示。
提前致谢:)
答案 0 :(得分: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中放一个数字功能。然后使用图形填充将其放置在您想要的位置。
希望这可以帮助将来的某个人:)
答案 1 :(得分:2)
来自flot API:
里面塞满了各种各样的东西 轴对象,例如你可以用 getAxes()。xaxis.ticks找出什么 蜱是针对xaxis的。 另外两个 有用的属性是p2c和c2p, 用于从数据转换的函数 将空间指向画布图空间 然后回来。两者都返回值 用图偏移量偏移。
结合plot.offset()
(网格区域相对于文档的偏移量),您应该拥有完成其余工作所需的所有工具。 plot.pointOffset()
也很有用。它返回相对于包含div的点的位置。
答案 2 :(得分:0)
理论上,在容器内获取x,y坐标如下:
$(function () {
$('#container').mousemove(function (e) {
$('.xPos').text(e.clientX - $('#container').offset().left);
$('.yPos').text(e.clientY - $('#container').offset().top);
});
});