私がやりたいのは、「いくつかの」変数を保存してから新しいチャートのズーム位置をリセットすることにより、JFreechart の正確なズーム位置を保持することです。
私は次のことを試しました:
試行 1
double zoomX = chartpanel.getScaleX();
double zoomY = chartpanel.getScaleY();
//After changing the chart
chartPanel.zoomInBoth(zoomX, zoomY);
しかし、何が起こるかというと、新しいチャートはグラフの中心にズームインされます。
したがって、以前の正確なズーム/ドラッグ状態にはなりません。
試行 2
次に試したのは、ドメインと範囲の表示範囲lower
と境界を保存し、これらを新しいチャートに設定することでした:upper
//At top of class
private double domainMin;
private double domainMax;
private double rangeMin;
private double rangeMax;
//In main method
if (resetZoom)
{
domainAxis.setRange(domainMin, domainMax);
mainPlot.setDomainAxis(domainAxis);
rangeAxis.setRange(rangeMin, rangeMax);
mainPlot.setRangeAxis(rangeAxis);
}
if (!(resetZoom))
{
domainMin = mainPlot.getDomainAxis().getRange().getLowerBound();
domainMax = mainPlot.getDomainAxis().getRange().getUpperBound();
System.out.println(domainMin + "," + domainMax);
rangeMin = mainPlot.getRangeAxis().getRange().getLowerBound();
rangeMax = mainPlot.getRangeAxis().getRange().getUpperBound();
System.out.println(rangeMin + "," + rangeMax);
}
しかし、これは同じ値を与え続けました:
1.3685904E12,1.3776192E12
382.6265,519.9835
1.36846512E12,1.38025008E12
382.6265,519.9835
1.3685904E12,1.3776192E12
382.6265,519.9835
1.36846512E12,1.38025008E12
382.6265,519.9835
したがって、私は方法を疑っており.getDomainAxis().getRange().getLowerBound();
、目に見えるものでは.getDomainAxis().getRange().getUpperBound();
なく、元の(完全な)軸を示しています。UpperBound
axis
試行 3
findRangeBounds(XYDataset)
次に、表示可能なデータの境界のみを指定する which を使用するというアイデアを思いつきました。残念ながら、私は次のことを発見しました:findRangeBounds(XYDataset)
それはうまくいきません。CandlestickRenderer
XYLineAndShapeRenderer
私の質問は次のとおりです。私が望むことを達成する方法はありますか?