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.htm http://www.java2s.com/Code/Java/Chart/JFreeChartPlotOrientationDemo2。 htm

于 2012-07-05T19:01:42.703 回答
1

如果您有该点的坐标,则可以:

  1. 将您的图表添加到 JPanel 并在其上绘制圆圈paintComponent(有点困难,因为您必须补偿图表边框
  2. 在仅包含一个点的同一图表上绘制第二个系列。请参阅这篇文章以定义自定义形状以呈现数据点 - 您可以定义要呈现为数据点的圆圈
于 2012-07-05T18:49:07.970 回答
0

一种方法是将具有 x 和 y 坐标的点添加到系列中,例如 (0,0)。现在,现在设置,renderer.setSeriesShape(series,new Ellipse2D.Double(-3, -3, 6, 6));您可以更新系列并使点也可移动。

于 2017-10-13T05:19:45.477 回答