2

我正在使用 XYPlot 来显示包含 1 条或多条线的折线图。我将它与侦听器模式相结合,以便它可以接收更新:如果是这样,它使用dataset.removeAllSeries()(dataset is of type XYSeriesCollection) 调用删除行,然后使用添加新行dataset.addSeries(...)但是,带有新行的新图形将具有不同的颜色!

因此,颜色渲染器可能会继续分发新颜色。

是否有可能重置渲染器,使其再次以第一种颜色开始?

4

2 回答 2

4

您可以使用setSeriesPaint()渲染器的方法为每个系列设置新的颜色。

例子:

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

第一个参数是系列的索引。

于 2009-10-30T08:09:22.997 回答
0
plot.getRenderer().setSeriesPaint(serieindex, null);

这是我自己发现的渲染器重置的替代品(我为初学者感到自豪:))。我的图表中有许多系列,必须删除,然后由于新的计算再次添加。我需要 1 系列始终是黑色的,而其他系列则以除黑色以外的任何颜色涂漆。现在,因为我收到了可能是新订单的新系列,所以我不能使用:

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

就像那样,因为如果我在第一次计算中将第一个系列设置为黑色,那么未来的每个第一个系列(在新计算中)都将始终是黑色,所以我不仅可以得到一个黑色的特定系列(因为添加系列的顺序不同) ,我不想这样做。如果我使用以下方法删除所有系列:

dataset.removeAllSeries();

它不会重置系列的固定颜色(如果您使用 setSeriesPaint(serieindex, new Color(RGB, RGB, RGB)),例如 3 系列,您删除它们并再次添加新系列,新系列将获得它们的颜色之前由您为具有相同索引的其他系列修复)。所以我正在考虑重置渲染器,我在互联网上一无所获,但我尝试将“null”作为颜色。使用固定的“null”作为颜色系列的线几乎不可见(我现在不记得我是如何检查这个的),但它不是渲染器的颜色,所以它会自动从其列表中获取新颜色(你可以覆盖 BTW )。所以现在我可以为一个特定的系列设置黑色。我使用它的随机索引:

int serieindex = dataset.indexOf(seriename);

因为我知道它的名字(key)。我正在为任何其他系列设置空“颜色”,因此它们从渲染器列表中获取第一个免费颜色。我想您也可以使用它来保持相同的新系列颜色,但是在最简单的情况下设置固定颜色当然比我的要好。

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

于 2017-09-30T01:41:06.263 回答