我正在XYLineChart
使用 iTextPDF 将 a 导出为 PDF。然而,绘图渲染器会产生一些丑陋的故障,这些故障似乎来自它分别绘制每条线,而不是产生连接的折线/连续形状......
以下是使用setBaseShapesFilled(false)
and时的放大图setSeriesStroke(0, new BasicStroke(2f))
:
有没有办法解决这个问题并将折线呈现为一个形状,以便正确连接线段?
我正在XYLineChart
使用 iTextPDF 将 a 导出为 PDF。然而,绘图渲染器会产生一些丑陋的故障,这些故障似乎来自它分别绘制每条线,而不是产生连接的折线/连续形状......
以下是使用setBaseShapesFilled(false)
and时的放大图setSeriesStroke(0, new BasicStroke(2f))
:
有没有办法解决这个问题并将折线呈现为一个形状,以便正确连接线段?
默认情况下,有一个显式开关drawSeriesLineAsPath
为false。启用它:
val r = plot.getRenderer.asInstanceOf[XYLineAndShapeRenderer]
r.setDrawSeriesLineAsPath(true)
产生正确的结果:
看着XYLineAndShapeRenderer
,它确实使用了GeneralPath
withlineTo
语句(除非有一点!p.isLastPointGood()
- 这不应该是这种情况(我认为只有当它为空时才不好)......
所以我不知道为什么会这样。一种解决方法是使用样条渲染器
val r = new XYSplineRenderer
r.setBaseShapesVisible(false)
plot.setRenderer(r)
还要考虑改变笔画的渲染属性:
XYPlot plot = (XYPlot) chart.getPlot();
XYItemRenderer r = plot.getRenderer();
r.setSeriesStroke(0, new BasicStroke(
16f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));