Blame | Last modification | View Log | RSS feed
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Flot Examples</title><link href="layout.css" rel="stylesheet" type="text/css"><!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]--><script language="javascript" type="text/javascript" src="../jquery.js"></script><script language="javascript" type="text/javascript" src="../jquery.flot.js"></script><script language="javascript" type="text/javascript" src="../jquery.flot.crosshair.js"></script></head><body><h1>Flot Examples</h1><div id="placeholder" style="width:600px;height:300px"></div><p>You can add crosshairs that'll track the mouse position, eitheron both axes or as here on only one.</p><p>If you combine it with listening on hover events, you can useit to track the intersection on the curves by interpolatingthe data points (look at the legend).</p><p id="hoverdata"></p><script type="text/javascript">var plot;$(function () {var sin = [], cos = [];for (var i = 0; i < 14; i += 0.1) {sin.push([i, Math.sin(i)]);cos.push([i, Math.cos(i)]);}plot = $.plot($("#placeholder"),[ { data: sin, label: "sin(x) = -0.00"},{ data: cos, label: "cos(x) = -0.00" } ], {series: {lines: { show: true }},crosshair: { mode: "x" },grid: { hoverable: true, autoHighlight: false },yaxis: { min: -1.2, max: 1.2 }});var legends = $("#placeholder .legendLabel");legends.each(function () {// fix the widths so they don't jump around$(this).css('width', $(this).width());});var updateLegendTimeout = null;var latestPosition = null;function updateLegend() {updateLegendTimeout = null;var pos = latestPosition;var axes = plot.getAxes();if (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||pos.y < axes.yaxis.min || pos.y > axes.yaxis.max)return;var i, j, dataset = plot.getData();for (i = 0; i < dataset.length; ++i) {var series = dataset[i];// find the nearest points, x-wisefor (j = 0; j < series.data.length; ++j)if (series.data[j][0] > pos.x)break;// now interpolatevar y, p1 = series.data[j - 1], p2 = series.data[j];if (p1 == null)y = p2[1];else if (p2 == null)y = p1[1];elsey = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);legends.eq(i).text(series.label.replace(/=.*/, "= " + y.toFixed(2)));}}$("#placeholder").bind("plothover", function (event, pos, item) {latestPosition = pos;if (!updateLegendTimeout)updateLegendTimeout = setTimeout(updateLegend, 50);});});</script></body></html>