2009-10-29 21 views
2

我正在使用XYPlot來顯示其中包含1行或更多行的線圖。我將它與偵聽器模式結合使用,以便它可以接收更新:如果是這樣,它將使用dataset.removeAllSeries()(數據集類型爲XYSeriesCollection)調用刪除行,然後使用dataset.addSeries(...)添加新行。但是,帶有新行的新圖形將會有不同的顏色!如何重置JFreeChart中使用的呈現顏色

因此,可能Color渲染器繼續分發新的顏色。

有重置渲染器的可能性,所以它再次與第一顏色開始了呢?

回答

3

您可以使用渲染器的setSeriesPaint()方法來設置每個系列一個新的色彩。

例如:

renderer.setSeriesPaint(0, Color.red); 
renderer.setSeriesPaint(1, Color.blue); 

第一個參數是對於系列的索引。

+0

如果我這樣做,我是肯定的即塗在明年第一顏色是紅色,再下一個是藍色的(即使我畫已有的系列圖上的?) – Roalt 2009-10-31 14:09:33

+0

多少個系列叢書你有你情節?您可以在繪畫之前更改每個系列的顏色。 – penguru 2009-11-02 07:20:00

+0

哇,如果你真的第一次在你的渲染器上使用這個setSeriesPaint設置不同的顏色,那麼效果很好。通過這種方式,我擺脫了獲取所有不同顏色的循環(隨機)方式。 – Roalt 2009-11-04 08:02:46

0
plot.getRenderer().setSeriesPaint(serieindex, null); 

這是渲染器重置的替代品,我發現自己(作爲初學者,我很自豪:))。我的圖表中有很多系列,必須刪除,然後再次添加,因爲有了新的計算。我需要1個系列總是黑色的,而其他顏色是黑色的。現在,因爲我在潛在的新訂單接收新的系列,所以我不能使用:

plot.getRenderer().setSeriesPaint(0, new Color(0,0,0); 

就這樣,因爲如果我設立了第一個意甲黑色的第一個計算,每一個未來的首輪意甲(在新的計算)將永遠是黑色的,所以我不僅可以獲得一個黑色的特定系列(因爲添加系列的各種順序),我不想這樣做。如果我使用刪除所有系列:

dataset.removeAllSeries(); 

不會重置系列固定顏色(如果您正在使用setSeriesPaint(serieindex,新的色彩(RGB,RGB,RGB)),比如說,3系列,您刪除它們並重新添加新的系列,新的系列將在之前爲其他具有相同索引的系列修復它們的顏色)。所以我在考慮重新設置渲染器,我在互聯網上沒有發現任何東西,但我已經嘗試過使用「null」作爲顏色。固定的「null」作爲顏色serie的線幾乎不可見(我現在不記得我是如何檢查這個的),但它不是渲染器的顏色,所以它會自動從列表中獲取一種新顏色(您可以覆蓋BTW )。 所以現在我可以爲一個特定的系列設置一個黑色。

int serieindex = dataset.indexOf(seriename); 

,因爲我知道它的名字(鍵):我用它採取隨機指標。我爲任何其他系列設置了空白「顏色」,因此它們從渲染器列表中獲取第一個免費顏色。我猜你可以使用它來保持相同的新系列顏色,但它當然更適合在比我更簡單的情況下設置固定顏色。

總之,我發現了一個「顏色渲染器重置」,它刪除了一個具有特定數字的系列的顏色定義,所以刪除系列後,任何具有此數字的新系列都可以自動從列表中獲得新顏色。我希望它會幫助別人:)。這是我的第一個答案,所以也許它不是最好的。