9

JFreeChartを使用してXY折れ線グラフを作成しました。2つのデータセットがあり、両方の線を異なる色にします。次のコードを使ってみました-

  XYPlot plot = chart.getXYPlot();
  XYItemRenderer xyir = plot.getRenderer();
  xyir.setSeriesPaint(0, Color.GREEN);
  plot.setDataset(0, xyDataset1);

  xyir.setSeriesPaint(1, Color.blue);
  plot.setDataset(1, xyDataset2);

また、次のコードを使用してみましたが、別のレンダラーを使用しています(これが正しい方法かどうかはわかりません)-

  XYPlot plot1 = chart.getXYPlot();
  XYPlot plot2 = chart.getXYPlot();

  XYItemRenderer xyir1 = plot1.getRenderer();
  xyir1.setSeriesPaint(0, Color.GREEN);
  plot1.setDataset(0, xyDataset1);

  XYItemRenderer xyir2 = plot2.getRenderer();
  xyir2.setSeriesPaint(1, Color.blue);
  plot2.setDataset(1, xyDataset2);

どちらの場合も、両方の線を青色で印刷します。どうしたの??助言がありますか??

4

3 に答える 3

19

解決策を見つけました。2つの異なるレンダラーを使用して、以前は適切に実行していませんでした。

 XYPlot plot = chart.getXYPlot();
  plot.setDataset(0, xyDataset1);
  plot.setDataset(1, xyDataset2);
  XYLineAndShapeRenderer renderer0 = new XYLineAndShapeRenderer(); 
  XYLineAndShapeRenderer renderer1 = new XYLineAndShapeRenderer(); 
  plot.setRenderer(0, renderer0); 
  plot.setRenderer(1, renderer1); 
  plot.getRendererForDataset(plot.getDataset(0)).setSeriesPaint(0, Color.red); 
  plot.getRendererForDataset(plot.getDataset(1)).setSeriesPaint(0, Color.blue);
于 2012-04-13T04:57:06.000 に答える
3

示されているアプローチはこので機能し、単一のレンダラーで十分です。sscceは、問題の切り分けに役立つ場合があります。

個々のアイテムを制御するには、ここgetItemPaint()に示すようにオーバーライドできます。

于 2012-04-12T19:28:18.653 に答える
-1

レンダラーでSeriesペイントをに設定してみてくださいnullsetSeriesPaint(null);

ソースを見ると、最初にペイントがであるかどうかを確認し!null、次にベースカラーを使用します。

nullルックアップテーブルの時系列に関連付けられた色を使用する場合。

于 2014-09-26T09:51:32.487 に答える