Самое простое, что нужно сделать, это просто использовать событие plothover для повторного рендеринга диаграммы.Флот очень быстро рендерится, поэтому мерцания быть не должно.Я делаю это в проекте в настоящее время, и он прекрасно работает.
Документацию по событиям plothover и plotclick можно найти здесь: https://github.com/flot/flot/blob/master/API.md#customizing-the-grid
Недокументированная особенность flot заключается в том, что вы можете добавлять произвольные ключи к каждому объекту серии, а такжеключи будут доступны в обработчиках событий plothover и plotclick.В моем примере я сделал произвольный ключ с именем «ключ», вы можете использовать «ярлык», если вы используете ярлыки.
Вот пример:
$(function() {
var d1 = [];
for (var i = 0; i < 14; i += 0.5) {
d1.push([i, Math.sin(i)]);
}
var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];
var d3 = [[0, 12], [7, 12], [7, 2.5], [12, 2.5]];
var data = [
{key: 'd1', data: d1},
{key: 'd2', data: d2},
{key: 'd3', data: d3}
];
function plotChart(lineKey) {
$.each(data, function(index, line){
line.lines = {
lineWidth: (lineKey === line.key) ? 3 : 0.5
}
$.plot("#placeholder", data, {grid : {hoverable: true}});
});
}
var previousPoint = null;
$('#placeholder').on('plothover', function(e, position, item){
if (item) {
if (previousPoint == null || previousPoint[0] !== item.seriesIndex || previousPoint[1] !== item.dataIndex) {
previousPoint = [item.seriesIndex, item.dataIndex];
plotChart(item.series.key);
}
} else {
plotChart();
previousPoint = null;
}
});
plotChart();
});
note - это работает только при наведении курсора на фактическую точку данных.