我使用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);
在这两种情况下,它都以蓝色打印两条线。怎么了??有什么建议吗??
找到了解决方案,它对我有用,使用两个不同的渲染器,早些时候我没有正确完成它——
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);
所示方法在本例中有效,单个渲染器就足够了。sscce 可能有助于隔离问题。
要控制单个项目,可以覆盖此处所示的getItemPaint()
。
渲染器setSeriesPaint(null);
中将Series
绘制设置为null
如果你看一下源头,它首先检查油漆是否!null
,然后使用基色。
如果null
,它将使用查找表中与时间系列关联的颜色。