我使用iTextPDF將XYLineChart
導出爲PDF。然而該曲線渲染器產生一些難看毛刺這似乎來自它分別繪製每個線,而不是產生一個連接的折線/連續形狀...XYLineChart將數據呈現爲離散線而不是一個形狀
下面是使用setBaseShapesFilled(false)
和setSeriesStroke(0, new BasicStroke(2f))
當以放大:
是否有任何方法可以解決此問題並將多段線渲染爲一個形狀,以便段正確連接?
我使用iTextPDF將XYLineChart
導出爲PDF。然而該曲線渲染器產生一些難看毛刺這似乎來自它分別繪製每個線,而不是產生一個連接的折線/連續形狀...XYLineChart將數據呈現爲離散線而不是一個形狀
下面是使用setBaseShapesFilled(false)
和setSeriesStroke(0, new BasicStroke(2f))
當以放大:
是否有任何方法可以解決此問題並將多段線渲染爲一個形狀,以便段正確連接?
看着XYLineAndShapeRenderer
,它確實使用GeneralPath
與lineTo
語句(除非有一個點,這!p.isLastPointGood()
哪位不應該是這樣的(我認爲這不僅是壞的,如果它爲空)...
所以我不知道爲什麼會這樣。一種解決方法是使用樣條渲染
val r = new XYSplineRenderer
r.setBaseShapesVisible(false)
plot.setRenderer(r)
默認情況下,有一個明確的開關drawSeriesLineAsPath
,其中爲假。啓用它:
val r = plot.getRenderer.asInstanceOf[XYLineAndShapeRenderer]
r.setDrawSeriesLineAsPath(true)
產生正確的結果:
也可以考慮改變行程的呈現屬性:
XYPlot plot = (XYPlot) chart.getPlot();
XYItemRenderer r = plot.getRenderer();
r.setSeriesStroke(0, new BasicStroke(
16f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
其實我也試試。但寬度= 2,舍入帽等沒有解決,我有空白或超調。 –
對不起,這個回答對你沒有用。你使用Windows?它適用於Aqua和GTK,即使在低點時也適用。 – trashgod
我正在使用OS X,Java 6和Java渲染器。至少在我使用的筆畫寬度(2)時,無論「CAP_BUTT」,「CAP_ROUND」,......都可能出現間隙,或許它適用於您的示例,因爲它的厚度足夠大。正如我所說,至關重要的一點是「r.setDrawSeriesLineAsPath(true)」。 –