5

実線から破線に変化する折れ線グラフをプロットして、実際のデータと予測データを示します。XYLineAndShapeRendererなどのクラスの一部を拡張する必要があるかどうか、またはこれを実現するための便利な方法があるかどうかはわかりません。

これは、Excelを使用してプロットしたデモストレーショングラフです。

ここに画像の説明を入力してください

グラフの灰色の線について話しています。それが私が欲しいものです。破線または実線の範囲を示すことができるレンダラーがあるかどうかはわかりません

4

3 に答える 3

13

これを行うために私が考えることができる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;
            }
       };
于 2011-10-17T18:02:58.847 に答える
2

を拡張し、アイテムごとに異なるストロークを指定する場所をXYLineAndShapeRendererオーバーライドできます。getItemStroke

デフォルトの実装は、単にシリーズストロークを返します。

于 2011-10-17T18:11:05.473 に答える
0

たぶん、実際のデータと予測データに対して異なるデータセットを定義する必要があります。線のスタイルを変更する方が簡単であるだけでなく、コードもおそらくより明確になります。

于 2011-10-17T17:41:20.907 に答える