jQuery flotを使用していくつかのズーム機能を実装しましたが、正しく機能していません。ズームは、flotの「plotselected」イベントをキャプチャし、「ranges」パラメータを使用して再プロットして、xaxisとyaxisの最大値と最小値を変更することで実装されます。
プロットは最初にプロットされたときに正しく表示され、ドラッグしてxyを選択できます。プロットが再描画されると、適切なデータ範囲がプロットされますが、画面上の軸グリッドの実際のサイズは縮小します。さらに、ズーム再プロットするたびに、軸ラベルが表示されなくなりますが、インスペクターではまだ表示されており、プロットの左上に軸ラベルが上に移動したように見えるがらくたがあります。そこにあり、部分的に(ほとんど)見えません。プロットのサイズは縮小せず(ズーム時のように)、軸ラベルもビューから削除する別のデータでプロットを再描画する他のコードがあり、適切なデータが再びプロットされます。おそらく2つの問題は共通の起源を共有しているので、私は言及します。
どうにかしてプロットを破壊したり、再描画する前にキャンバスをクリアしたりすることで、これらの問題に対処できるのではないかと思いましたが、これを行う方法についてのガイダンスは見つかりませんでした。
関連するコードスニペットを次に示します。最初のリストは、最初にプロットをレンダリングし、「plotselected」イベントにバインドするコードを示しています。
o.midGraph = $.plot($("#small-graph-mid"), testData, graphOptions);
$("#small-graph-mid").unbind("plotselected");
$("#small-graph-mid").bind("plotselected", function (event, ranges) {
graphOptions = o.midGraph.getOptions();
testData = o.midGraph.getData();
o.midGraph = $.plot($("#small-graph-mid"), testData,
self._graphZoomOptions(graphOptions, ranges));
});
そして、軸の範囲を新しい範囲に設定する関数は次のとおりです。
_graphZoomOptions: function(options, ranges) {
return $.extend(true, {}, options, {
xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },
yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }
});
},
私はプロット/キャンバスを何らかの方法で破壊/クリア/リセットする必要があると考えて正しい方向に進んでいますか?