私はXYBoxAnnotationを使用して、JFreeChart上の矩形領域を区切ります。箱の片側を「開いている」、つまり無限に出て行きたいと思います。私はDouble.POSITIVE_INFINITY
に値を設定しようとしましたが、これは動作していないようです。私もDouble.MAX_VALUE
に設定しようとしましたが、運もありません。このような場合、アノテーションはプロット上にまったく表示されません。例外も例外ではありません。JFreeChart with XYBoxAnnotation片側に開く
以下は、XYBoxAnnotationを生成してプロットに追加する非常に簡単なコードです。
XYBoxAnnotation _axisMarker = new XYBoxAnnotation(xLow, yLow, Double.POSITIVE_INFINITY, yHigh, new BasicStroke(0.5F), Color.WHITE, Color.WHITE);
_plot.getRenderer().addAnnotation(_axisMarker, Layer.BACKGROUND);
EDIT:
私は、注釈のためのxの値は、軸のスケールよりはるかに大きかったので、注釈が表示されないた理由があったことを考え出し。何らかの理由で、十分にズームアウトしないと注釈が表示されなくなります。
下記の@ trashgodの回答により、私は解決策を考え出しました。彼の答えは、私のプロットがズームを許可しているので、私のためにはうまくいかなかったし、ズームアウトするとボックスの端を見ることができた。
まず、私はプロットがズームされたときのために待機するようにPlotChangeListener
を追加しました:
// function to re-draw the annotation
private void updateAxisMarkers() {
_plot.removeChangeListener(_zoomListener); // remove to prevent triggering infinite loop
// define xLow, yLow and yHigh...
double xHigh = _plot.getDomainAxis().getUpperBound() * 1.1;
XYBoxAnnotation _axisMarker = new = new XYBoxAnnotation(xLow, yLow, xHigh, yHigh, new BasicStroke(0.5F), Color.WHITE, Color.WHITE);
_plot.getRenderer().addAnnotation(annotation);
_plot.addChangeListener(_zoomListener); // add back
}
感謝。それは私のプロットがズームアウトを許可するので、私にとってはうまくいきませんでした。ズームすると、ボックスの端を見ることができます。しかし、それは私を私の解決に導いてくれました。チャートをズームしたときに待ち受けを聞くために 'PlotChangeListener'を追加し、ボックスの境界を新しいプロット範囲にリセットしました。 – sorayadragon