現在、PolarChartはすべての座標を線で結合してポリゴンを作成しています。各ポイントをドットでプロットし、それらを結合しないようにしたいだけです。これは可能ですか?
Graphics2Dを使用してtranslateValueThetaRadiusToJava2D()
円を描いてみましたが、非常に不格好で不自然です。
どんな提案も歓迎します!
現在、PolarChartはすべての座標を線で結合してポリゴンを作成しています。各ポイントをドットでプロットし、それらを結合しないようにしたいだけです。これは可能ですか?
Graphics2Dを使用してtranslateValueThetaRadiusToJava2D()
円を描いてみましたが、非常に不格好で不自然です。
どんな提案も歓迎します!
したがって、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
。
これがあなたにとってテラ・インコグニタであるなら、私はJFreeChart開発者ガイド†</sup>をお勧めします。
†</sup>免責事項:ObjectRefineryLimitedとは提携していません。私は満足している顧客であり、ごくわずかな貢献者です。
これは、ユーザーがシリーズに割り当てた色を関数が取得する場合に備えて、優れたディスカッションです。
追加 ...
Color c =(Color)this.lookupSeriesPaint(seriesIndex);
g2.setColor(c);
前 ...
g.draw(e1);
他の関数があります...コード補完を使用して、名前がlookupSeries........(int seriesindex)