2013-10-23 21 views
0

我使用iTextPDF將XYLineChart導出爲PDF。然而該曲線渲染器產生一些難看毛刺這似乎來自它分別繪製每個線,而不是產生一個連接的折線/連續形狀...XYLineChart將數據呈現爲離散線而不是一個形狀

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

enter image description here

是否有任何方法可以解決此問題並將多段線渲染爲一個形狀,以便段正確連接?

回答

1

看着XYLineAndShapeRenderer,它確實使用GeneralPathlineTo語句(除非有一個點,這!p.isLastPointGood()哪位不應該是這樣的(我認爲這不僅是壞的,如果它爲空)...

所以我不知道爲什麼會這樣。一種解決方法是使用樣條渲染

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

enter image description here

2

默認情況下,有一個明確的開關drawSeriesLineAsPath,其中爲假。啓用它:

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

產生正確的結果:

enter image description here

1

也可以考慮改變行程的呈現屬性:

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

image

+0

其實我也試試。但寬度= 2,舍入帽等沒有解決,我有空白或超調。 –

+0

對不起,這個回答對你沒有用。你使用Windows?它適用於Aqua和GTK,即使在低點時也適用。 – trashgod

+0

我正在使用OS X,Java 6和Java渲染器。至少在我使用的筆畫寬度(2)時,無論「CAP_BUTT」,「CAP_ROUND」,......都可能出現間隙,或許它適用於您的示例,因爲它的厚度足夠大。正如我所說,至關重要的一點是「r.setDrawSeriesLineAsPath(true)」。 –

相關問題