如何在JFreeChart中设置多个系列的线条粗细?

8

我经常需要创建很多图表,在每个图表中我都需要调用

renderer.setSeriesStroke( i, new BasicStroke( 2.0f ) );

对于每个系列,可以通过chart.getXYPlot().getRenderer()获取renderer对象。

不知道是否有一种全局设置线条粗细的方法。

3个回答

7

按照这里所说的方法,调用渲染器的setDefaultStroke()方法,而不是setBaseStroke()方法,并按照这里所说的方法更改autoPopulateSeriesStroke标志。

//renderer.setBaseStroke(new BasicStroke(2.0f));
renderer. setDefaultStroke(new BasicStroke(2.0f));
renderer.setAutoPopulateSeriesStroke(false);

这里这里的回答展示了在迁移到v1.5时的新方法名称,更多详情请参考迁移指南


1
我的渲染器是XYItemRenderer,所以我需要像参考链接中那样使用((AbstractRenderer) this.renderer).setAutoPopulateSeriesStroke(false); - Line

3

使用 Jfreechart 1.5.0 并通过 ChartFactory.createLineChart(...) 创建的折线图。

    JFreeChart lineChart = ChartFactory.createLineChart(...);

    LineAndShapeRenderer renderer = (LineAndShapeRenderer) lineChart.getCategoryPlot().getRenderer();
    renderer.setAutoPopulateSeriesStroke(false);
    renderer.setDefaultStroke(new BasicStroke(3.0f));

它实际上是否与接受的答案不同?看起来不像。 - Line
2
是的,从JFreechart 1.5.0开始,原先被接受的答案将不再适用,因为所使用的方法现在已经过时。我的答案将适用于那些使用更新版本的人。 - rumman0786

1
对于JFreeChart 1.5.0版本:
XYItemRenderer renderer = lineChart.getXYPlot().getRenderer();
renderer.setDefaultStroke(new BasicStroke(2.0f));
((AbstractRenderer) renderer).setAutoPopulateSeriesStroke(false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接