2

私がやりたいのは、「いくつかの」変数を保存してから新しいチャートのズーム位置をリセットすることにより、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();なく、元の(完全な)軸を示しています。UpperBoundaxis

試行 3

findRangeBounds(XYDataset)次に、表示可能なデータの境界のみを指定する which を使用するというアイデアを思いつきました。残念ながら、私は次のことを発見しました:findRangeBounds(XYDataset)それはうまくいきません。CandlestickRendererXYLineAndShapeRenderer

私の質問は次のとおりです。私が望むことを達成する方法はありますか?

4

0 に答える 0