2009-10-29 64 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); 

,因为我知道它的名字(键):我用它采取随机指标。我为任何其他系列设置了空白“颜色”,因此它们从渲染器列表中获取第一个免费颜色。我猜你可以使用它来保持相同的新系列颜色,但它当然更适合在比我更简单的情况下设置固定颜色。

总之,我发现了一个“颜色渲染器重置”,它删除了一个具有特定数字的系列的颜色定义,所以删除系列后,任何具有此数字的新系列都可以自动从列表中获得新颜色。我希望它会帮助别人:)。这是我的第一个答案,所以也许它不是最好的。