<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “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"></link>
   <!--[if IE]><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.navigate.js"></script>
   <style>
   #placeholder .button {
       position: absolute;
       cursor: pointer;
   }
   #placeholder div.button {
       font-size: smaller;
       color: #999;
       background-color: #eee;
       padding: 2px;
   }
   .message {
       padding-left: 50px;
       font-size: smaller;
   }
   </style>
</head>
<body>
   <h1>Flot Examples</h1>

   <div id="placeholder" style="width:600px;height:300px;"></div>

   <p class="message"></p>

   <p>With the navigate plugin it is easy to add panning and zooming.
   Drag to pan, double click to zoom (or use the mouse scrollwheel).</p>

   <p>The plugin fires events (useful for synchronizing several
   plots) and adds a couple of public methods so you can easily build
   a little user interface around it, like the little buttons at the
   top right in the plot.</p>

<script id=“source” language=“javascript” type=“text/javascript”> $(function () {

// generate data set from a parametric function with a fractal
// look
function sumf(f, t, m) {
    var res = 0;
    for (var i = 1; i < m; ++i)
        res += f(i * i * t) / (i * i);
    return res;
}

var d1 = [];
for (var t = 0; t <= 2 * Math.PI; t += 0.01)
    d1.push([sumf(Math.cos, t, 10), sumf(Math.sin, t, 10)]);
var data = [ d1 ];

var placeholder = $("#placeholder");
var options = {
    series: { lines: { show: true }, shadowSize: 0 },
    xaxis: { zoomRange: [0.1, 10], panRange: [-10, 10] },
    yaxis: { zoomRange: [0.1, 10], panRange: [-10, 10] },
    zoom: {
        interactive: true
    },
    pan: {
        interactive: true
    }
};

var plot = $.plot(placeholder, data, options);

// show pan/zoom messages to illustrate events 
placeholder.bind('plotpan', function (event, plot) {
    var axes = plot.getAxes();
    $(".message").html("Panning to x: "  + axes.xaxis.min.toFixed(2)
                       + " &ndash; " + axes.xaxis.max.toFixed(2)
                       + " and y: " + axes.yaxis.min.toFixed(2)
                       + " &ndash; " + axes.yaxis.max.toFixed(2));
});

placeholder.bind('plotzoom', function (event, plot) {
    var axes = plot.getAxes();
    $(".message").html("Zooming to x: "  + axes.xaxis.min.toFixed(2)
                       + " &ndash; " + axes.xaxis.max.toFixed(2)
                       + " and y: " + axes.yaxis.min.toFixed(2)
                       + " &ndash; " + axes.yaxis.max.toFixed(2));
});

// add zoom out button 
$('<div class="button" style="right:20px;top:20px">zoom out</div>').appendTo(placeholder).click(function (e) {
    e.preventDefault();
    plot.zoomOut();
});

// and add panning buttons

// little helper for taking the repetitive work out of placing
// panning arrows
function addArrow(dir, right, top, offset) {
    $('<img class="button" src="arrow-' + dir + '.gif" style="right:' + right + 'px;top:' + top + 'px">').appendTo(placeholder).click(function (e) {
        e.preventDefault();
        plot.pan(offset);
    });
}

addArrow('left', 55, 60, { left: -100 });
addArrow('right', 25, 60, { left: 100 });
addArrow('up', 40, 45, { top: -100 });
addArrow('down', 40, 75, { top: 100 });

}); </script>

</body>

</html>