2012-04-12 75 views
9

我已經使用JFreeChart創建了XY折線圖,有兩個數據集,我希望這兩個線具有不同的顏色。我試着用下面的代碼 -XY線圖中不同系列的不同顏色JFreeChart

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); 

在兩種情況下它都以藍色打印兩行。 怎麼回事?有什麼建議麼??

回答

17

找到解決方案,它爲我工作,使用兩種不同的渲染器,早些時候,我沒有這樣做pro​​perly--

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); 
2

顯示的方法適用於此example,單個渲染器應該足夠。 sscce可能有助於隔離問題。

要控制單個項目,您可以覆蓋getItemPaint(),如here所示。

-1

嘗試設置Series油漆null中渲染setSeriesPaint(null);

如果您查看源代碼,則首先檢查該顏色是否爲!null,然後使用基本顏色。

如果null它使用查找表中與時間系列相關的顏色。

相關問題