XYLineChart将数据渲染为离散线而不是一个形状

时间:2013-10-23 09:38:30

标签: java jfreechart

我正在使用iTextPDF将XYLineChart导出为PDF。然而,绘图渲染器会产生一些难看的毛刺,这些毛刺似乎来自于它分别绘制每条线,而不是产生连接的折线/连续形状......

以下是使用setBaseShapesFilled(false)setSeriesStroke(0, new BasicStroke(2f))时的放大:

enter image description here

有没有办法解决这个问题并将折线渲染为一个形状,以便正确连接这些线段?

3 个答案:

答案 0 :(得分:2)

默认情况下,显式切换drawSeriesLineAsPath false 。启用它:

val r = plot.getRenderer.asInstanceOf[XYLineAndShapeRenderer]
r.setDrawSeriesLineAsPath(true)

产生正确的结果:

enter image description here

答案 1 :(得分:1)

查看XYLineAndShapeRenderer确实使用带有GeneralPath语句的lineTo(除非有!p.isLastPointGood() - 这应该是不是这样的(我认为只有它是空的才是坏的)......

所以我不知道为什么会这样。解决方法是使用样条线渲染器

val r = new XYSplineRenderer
r.setBaseShapesVisible(false)
plot.setRenderer(r)

enter image description here

答案 2 :(得分:1)

还考虑改变笔划的渲染属性:

XYPlot plot = (XYPlot) chart.getPlot();
XYItemRenderer r = plot.getRenderer();
r.setSeriesStroke(0, new BasicStroke(
    16f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));

image