當前,PolarChart將所有座標與創建多邊形的線連接起來。我只是希望它用點來繪製每個點,而不是將它們連接在一起。這可能嗎?繪製點代替線? JFreeChart PolarChart
我曾嘗試使用translateValueThetaRadiusToJava2D()
和Graphics2D繪製圓圈,但它非常笨重和做作。
歡迎任何建議!
當前,PolarChart將所有座標與創建多邊形的線連接起來。我只是希望它用點來繪製每個點,而不是將它們連接在一起。這可能嗎?繪製點代替線? JFreeChart PolarChart
我曾嘗試使用translateValueThetaRadiusToJava2D()
和Graphics2D繪製圓圈,但它非常笨重和做作。
歡迎任何建議!
所以DefaultPolarItemRenderer
發生在所有的極點,極點轉換爲正規的Java2D座標,使這些點Polygon
然後繪製它。下面是我如何得到它來繪製的,而不是一個多邊形點:
public class MyDefaultPolarItemRenderer extends DefaultPolarItemRenderer {
@Override
public void drawSeries(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, PlotRenderingInfo info, PolarPlot plot, XYDataset dataset, int seriesIndex) {
int numPoints = dataset.getItemCount(seriesIndex);
for (int i = 0; i < numPoints; i++) {
double theta = dataset.getXValue(seriesIndex, i);
double radius = dataset.getYValue(seriesIndex, i);
Point p = plot.translateValueThetaRadiusToJava2D(theta, radius,
dataArea);
Ellipse2D el = new Ellipse2D.Double(p.x, p.y, 5, 5);
g2.fill(el);
g2.draw(el);
}
}
}
,然後在其他地方實例化這個類:
MyDefaultPolarItemRenderer dpir = new MyDefaultPolarItemRenderer();
dpir.setPlot(plot);
plot.setRenderer(dpir);
這是一個有點難。給定PolarPlot
,您可以獲取其AbstractRenderer
並設置形狀。例如,
PolarPlot plot = (PolarPlot) chart.getPlot();
AbstractRenderer ar = (AbstractRenderer) plot.getRenderer();
ar.setSeriesShape(0, ShapeUtilities.createDiamond(5), true);
金剛石將出現在圖例中,但既不DefaultPolarItemRenderer
呈現的形狀,也沒有提供線路控制。您必須擴展默認渲染器並覆蓋drawSeries()
。 XYLineAndShapeRenderer
是學習的好例子;你可以看到它在TimeSeriesChartDemo1
中的使用方式。
如果這是未知領域給你,我建議The JFreeChart Developer Guide†。
†聲明:與Object Refinery Limited無關;我是一個滿意的客戶,貢獻很小。
這是一個很好的討論,如果你想要的功能拿起顏色由用戶指定的該系列
添加...
Color c =(Color)this.lookupSeriesPaint(seriesIndex);
g2.setColor(c);
前...
g.draw(e1);
還有其他的功能,...利用代碼完成功能來看看還有什麼功能都可以針對系列名稱rendereing從lookupSeries........(int seriesindex)
(糟糕,不知道的格式在這裏弄亂) – 2010-03-12 22:09:04