<!DOCTYPE html PUBLIC β€œ-//W3C//DTD HTML 4.01//EN” β€œwww.w3.org/TR/html4/strict.dtd”> <html> <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Flot Examples: Selection and zooming</title>
<link href="../examples.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.selection.js"></script>
<script type="text/javascript">

$(function() {

        // setup plot

        function getData(x1, x2) {

                var d = [];
                for (var i = 0; i <= 100; ++i) {
                        var x = x1 + i * (x2 - x1) / 100;
                        d.push([x, Math.sin(x * Math.sin(x))]);
                }

                return [
                        { label: "sin(x sin(x))", data: d }
                ];
        }

        var options = {
                legend: {
                        show: false
                },
                series: {
                        lines: {
                                show: true
                        },
                        points: {
                                show: true
                        }
                },
                yaxis: {
                        ticks: 10
                },
                selection: {
                        mode: "xy"
                }
        };

        var startData = getData(0, 3 * Math.PI);

        var plot = $.plot("#placeholder", startData, options);

        // Create the overview plot

        var overview = $.plot("#overview", startData, {
                legend: {
                        show: false
                },
                series: {
                        lines: {
                                show: true,
                                lineWidth: 1
                        },
                        shadowSize: 0
                },
                xaxis: {
                        ticks: 4
                },
                yaxis: {
                        ticks: 3,
                        min: -2,
                        max: 2
                },
                grid: {
                        color: "#999"
                },
                selection: {
                        mode: "xy"
                }
        });

        // now connect the two

        $("#placeholder").bind("plotselected", function (event, ranges) {

                // clamp the zooming to prevent eternal zoom

                if (ranges.xaxis.to - ranges.xaxis.from < 0.00001) {
                        ranges.xaxis.to = ranges.xaxis.from + 0.00001;
                }

                if (ranges.yaxis.to - ranges.yaxis.from < 0.00001) {
                        ranges.yaxis.to = ranges.yaxis.from + 0.00001;
                }

                // do the zooming

                plot = $.plot("#placeholder", getData(ranges.xaxis.from, ranges.xaxis.to),
                        $.extend(true, {}, options, {
                                xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },
                                yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }
                        })
                );

                // don't fire event on the overview to prevent eternal loop

                overview.setSelection(ranges, true);
        });

        $("#overview").bind("plotselected", function (event, ranges) {
                plot.setSelection(ranges);
        });

        // Add the Flot version string to the footer

        $("#footer").prepend("Flot " + $.plot.version + " &ndash; ");
});

</script>

</head> <body>

<div id="header">
        <h2>Selection and zooming</h2>
</div>

<div id="content">

        <div class="demo-container">
                <div id="placeholder" class="demo-placeholder" style="float:left; width:650px;"></div>
                <div id="overview" class="demo-placeholder" style="float:right;width:160px; height:125px;"></div>
        </div>

        <p>Selection support makes it easy to construct flexible zooming schemes. With a few lines of code, the small overview plot to the right has been connected to the large plot. Try selecting a rectangle on either of them.</p>

</div>

<div id="footer">
        Copyright &copy; 2007 - 2014 IOLA and Ole Laursen
</div>

</body> </html>