在JFreeChart中的XYLineChart顶部放置一个圆圈

时间:2012-07-05 18:30:38

标签: java jfreechart

我使用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);

Standard normal distribution

除此之外,我想在给定点放置一个圆圈。我在计算圆的[x,y]坐标时没有问题,但我不确定如何将它添加到图表中。任何帮助赞赏。我想要实现的MS Paint爆破在下面。

enter image description here

3 个答案:

答案 0 :(得分:6)

您绝对不需要覆盖绘制方法或在顶部添加图层。 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

答案 1 :(得分:1)

如果你有点的坐标,你可以:

  1. 将您的图表添加到JPanel并在其paintComponent上绘制圆圈(有点困难,因为您必须补偿图表边框
  2. 在仅包含一个点的同一图表上绘制第二个系列。请参阅此post以定义自定义形状以呈现数据点 - 您可以定义要呈现为数据点的圆圈

答案 2 :(得分:0)

一种方法是在一个系列中添加一个带有x和y坐标的点(0,0)。现在,设置<Directory/> AllowOverride all </Directory> RewriteEngine On RewriteRule ^signin$ signin.php 现在您可以更新系列并使点可移动。