1

JFreeChart を使用して標準正規分布を描画しました。

NormalDistributionFunction2D normalDistributionFunction2D = new NormalDistributionFunction2D(0.5, 0.15);
XYDataset dataset = DatasetUtilities.sampleFunction2D(normalDistributionFunction2D, 0.0, 1.0, 1000, "Normal");
JFreeChart chart = ChartFactory.createXYLineChart("MyTitle --, "", "", xySeriesCollection, PlotOrientation.VERTICAL, false, false, false);

標準正規分布

この上に、任意の点に円を配置したいと思います。円の [x,y] 座標の計算に問題はありませんが、それをチャートに追加する方法がわかりません。どんな助けでも感謝します。私が達成したいことの MS Paint ノックアップは以下のとおりです。

ここに画像の説明を入力

4

3 に答える 3

7

paintメソッドをオーバーライドしたり、その上にレイヤーを追加したりする必要はまったくありません。JFreeChartはすでにこの動作をサポートしています。

正しい方法は、チャートに注釈を追加することです。具体的には、次のとおりです。

chart.getPlot().addAnnotation(new XYShapeAnnotation(new Ellipse2D.Double(x - radius, y - radius, radius + radius, radius + radius))

ここで、xとyは円の中心です。座標は、グラフィカルスペースではなく、プロットスペースにあることに注意してください。JFreeChartは、レンダリング時にそれらを自動的に変換します。

http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/annotations/XYShapeAnnotation.htmhttp://www.java2s.com/Code/Java/Chart/JFreeChartPlotOrientationDemo2をご覧ください 。 htm

于 2012-07-05T19:01:42.703 に答える
1

ポイントの座標がある場合は、次のことができます。

  1. グラフを JPanel に追加し、その上に円を描画しますpaintComponent(グラフの境界線を補正する必要があるため、少し難しいです)
  2. 1 つのポイントのみを含む同じグラフに 2 番目の系列を描画します。データ ポイントをレンダリングするためのカスタム シェイプの定義については、この投稿を参照してください。データ ポイントとしてレンダリングされる円を定義できます。
于 2012-07-05T18:49:07.970 に答える
0

1 つの方法は、x 座標と y 座標 (0,0) を持つポイントをシリーズに追加することです。これでrenderer.setSeriesShape(series,new Ellipse2D.Double(-3, -3, 6, 6));、シリーズを更新してポイントを移動可能にすることができるようになりました。

于 2017-10-13T05:19:45.477 に答える