実線から破線に変化する折れ線グラフをプロットして、実際のデータと予測データを示します。XYLineAndShapeRendererなどのクラスの一部を拡張する必要があるかどうか、またはこれを実現するための便利な方法があるかどうかはわかりません。
これは、Excelを使用してプロットしたデモストレーショングラフです。
グラフの灰色の線について話しています。それが私が欲しいものです。破線または実線の範囲を示すことができるレンダラーがあるかどうかはわかりません
実線から破線に変化する折れ線グラフをプロットして、実際のデータと予測データを示します。XYLineAndShapeRendererなどのクラスの一部を拡張する必要があるかどうか、またはこれを実現するための便利な方法があるかどうかはわかりません。
これは、Excelを使用してプロットしたデモストレーショングラフです。
グラフの灰色の線について話しています。それが私が欲しいものです。破線または実線の範囲を示すことができるレンダラーがあるかどうかはわかりません
これを行うために私が考えることができる2つの方法があります。どちらもエレガントではありませんが、それがあなたの問題の現実かもしれません。
1つは、たまたま相互に接続する2つのシリーズを定義できることです。これはおそらく最善の選択肢ですが、凡例も修正する必要があります。
これにより、2番目のシリーズが破線で表示されます。
plot.getRenderer().setSeriesStroke(
1,
new BasicStroke(
2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
1.0f, new float[] {6.0f, 6.0f}, 0.0f
)
編集:私の元の「2番目のオプション」は間違っていました。これを行うためのより良い方法は次のとおりです。
getItemStroke()
のメソッドをオーバーライドしAbstractRenderer
ます。
final BasicStroke dashedStroke = new BasicStroke(
2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
1.0f, new float[] {6.0f, 6.0f}, 0.0f);
XYLineAndShapeRenderer render = new XYLineAndShapeRenderer() {
@Override
public Stroke getItemStroke(int row, int column) {
if (column < dashedThreshold) {
return lookupSeriesStroke(row);
} else {
return dashedStroke;
}
};
を拡張し、アイテムごとに異なるストロークを指定する場所をXYLineAndShapeRenderer
オーバーライドできます。getItemStroke
デフォルトの実装は、単にシリーズストロークを返します。
たぶん、実際のデータと予測データに対して異なるデータセットを定義する必要があります。線のスタイルを変更する方が簡単であるだけでなく、コードもおそらくより明確になります。