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></head><body><h1>Flot Examples</h1><div id="placeholder" style="width:600px;height:300px;"></div><p>With multiple axes, you sometimes need to interact with them. Asimple way to do this is to draw the plot, deduce the axisplacements and insert a couple of divs on top to catch events.Try clicking an axis.</p><p id="click"></p><script type="text/javascript">$(function () {function generate(start, end, fn) {var res = [];for (var i = 0; i <= 100; ++i) {var x = start + i / 100 * (end - start);res.push([x, fn(x)]);}return res;}var data = [{ data: generate(0, 10, function (x) { return Math.sqrt(x)}), xaxis: 1, yaxis:1 },{ data: generate(0, 10, function (x) { return Math.sin(x)}), xaxis: 1, yaxis:2 },{ data: generate(0, 10, function (x) { return Math.cos(x)}), xaxis: 1, yaxis:3 },{ data: generate(2, 10, function (x) { return Math.tan(x)}), xaxis: 2, yaxis: 4 }];var plot = $.plot($("#placeholder"),data,{xaxes: [{ position: 'bottom' },{ position: 'top'}],yaxes: [{ position: 'left' },{ position: 'left' },{ position: 'right' },{ position: 'left' }]});// now for each axis, create a divfunction getBoundingBoxForAxis(plot, axis) {var left = axis.box.left, top = axis.box.top,right = left + axis.box.width, bottom = top + axis.box.height;// some ticks may stick out, enlarge the box to encompass all ticksvar cls = axis.direction + axis.n + 'Axis';plot.getPlaceholder().find('.' + cls + ' .tickLabel').each(function () {var pos = $(this).position();left = Math.min(pos.left, left);top = Math.min(pos.top, top);right = Math.max(Math.round(pos.left) + $(this).outerWidth(), right);bottom = Math.max(Math.round(pos.top) + $(this).outerHeight(), bottom);});return { left: left, top: top, width: right - left, height: bottom - top };}$.each(plot.getAxes(), function (i, axis) {if (!axis.show)return;var box = getBoundingBoxForAxis(plot, axis);$('<div class="axisTarget" style="position:absolute;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width + 'px;height:' + box.height + 'px"></div>').data('axis.direction', axis.direction).data('axis.n', axis.n).css({ backgroundColor: "#f00", opacity: 0, cursor: "pointer" }).appendTo(plot.getPlaceholder()).hover(function () { $(this).css({ opacity: 0.10 }) },function () { $(this).css({ opacity: 0 }) }).click(function () {$("#click").text("You clicked the " + axis.direction + axis.n + "axis!")});});});</script></body></html>