Мне удалось сделать что-то похожее на диаграмму Yahoo в этой скрипке .Я просто обновляю положение x, когда мышь зависает:
$("#placeholder").bind("plothover", function (event, pos, item) {
latestPosition = pos;
if (!updateTooltipTimeout) {
updateTooltipTimeout = setTimeout(update, 30);
}
});
, затем запускаю метод обновления.Метод обновления (взят из примера flot crosshairs ) интерполирует точку y, ближайшую к x, затем отображает подсказку и указывает на строку:
function update() {
updateTooltipTimeout = null;
var pos = latestPosition;
var i, j, dataset = plot.getData();
for (i = 0; i < dataset.length; ++i) {
var series = dataset[i];
// Find the nearest points, x-wise
for (j = 0; j < series.data.length; ++j) {
if (series.data[j][0] > pos.x) {
break;
}
}
// Now Interpolate
var y,
p1 = series.data[j - 1],
p2 = series.data[j];
if (p1 == null) {
y = p2[1];
} else if (p2 == null) {
y = p1[1];
} else {
y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);
}
var o = plot.pointOffset({
x: pos.x,
y: y
});
updateTooltip(o.left, o.top,
"x: " + pos.x.toFixed(2) + " y: " + y.toFixed(2));
plotPoint(o.left, o.top, 5, "rgb(153,180,125)", "circle");
}
}
Я думаю,Чтобы реально взаимодействовать с точками данных, вам придется изменить источник.