9

我使用 JFreeChart 创建了 XY 折线图,有两个数据集,我希望两条线都是不同的颜色。我尝试使用以下代码-

  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

找到了解决方案,它对我有用,使用两个不同的渲染器,早些时候我没有正确地做它 -

 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 回答