flotでグラフ描画(3)

メイン画面とサブ画面に分けなくても、いいんでないかとやっと気づく。

  • マウスでのグラフの拡大はメイン画面でできている。
  • 拡大後に全体表示に戻るときにはメイン画面で指定できないので、サブ画面で指定する。そのため、サブ画面が必要。←これ、間違い。

なぜなら、メイン画面だけでもブラウザのリロードボタンで初期の表示に戻る!だからサブ画面は不必要。

と、いうことで完成したソース。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <!--[if IE]><script language="javascript" type="text/javascript" src="js/excanvas.pack.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>
</head>
<body>
<div id="placeholder" style="width:500px;height:500px"></div>

<script id="source" language="javascript" type="text/javascript">
$(function () {
       var pconst = 10.0;
       var rconst = 28.0;
       var bconst = 8.0/3.0;
       var ncont = 20000;
       var xval = 1.0;
       var yval = 1.0;
       var zval = 1.0;
       var dt = 0.001;
       var d1 = [];
       for (var i=0; i<ncont; i+= 1) {
           xval += dt*(-pconst*xval + pconst*yval);
           yval += dt*(-xval*zval + rconst*xval - yval);
           zval += dt*(xval*yval - bconst*zval);
           d1.push([xval, zval]); 
       }
	var plot = $.plot($("#placeholder"),[d1], {
           lines: { show: true, lineWidth: 0.5 },
           shadowSize: 0,
           selection: { mode: "xy" }
       });

       $("#placeholder").bind("plotselected", function (event, ranges) {
           plot = $.plot($("#placeholder"), [d1],
                         $.extend(true, {}, {
                             xaxis: {min: ranges.xaxis.from, max: ranges.xaxis.to },
                             yaxis: {min: ranges.yaxis.from, max: ranges.yaxis.to },
                             selection: { mode: "xy" }
                         }));
       });
});
</script>
</body>
</html>