165 lines
4.2 KiB
HTML
165 lines
4.2 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://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 + " – ");
|
|
});
|
|
</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 © 2007 - 2014 IOLA and Ole Laursen</div>
|
|
</body>
|
|
</html>
|