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

Java 在JFreeChart中的XYLineChart顶部放置一个圆,java,jfreechart,Java,Jfreechart,我使用JFreeChart绘制了一个标准正态分布: NormalDistributionFunction2D normalDistributionFunction2D = new NormalDistributionFunction2D(0.5, 0.15); XYDataset dataset = DatasetUtilities.sampleFunction2D(normalDistributionFunction2D, 0.0, 1.0, 1000, "Normal"); JFreeCha

我使用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绘画效果


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

  • 将图表添加到JPanel,并在其
    画图组件上绘制圆圈(有点困难,因为必须补偿图表边框)
  • 在仅包含一个点的同一图表上绘制第二个系列。有关定义用于渲染数据点的自定义形状的信息,请参见此-您可以定义一个圆作为数据点进行渲染

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

  • 将图表添加到JPanel,并在其
    画图组件上绘制圆圈(有点困难,因为必须补偿图表边框)
  • 在仅包含一个点的同一图表上绘制第二个系列。有关定义用于渲染数据点的自定义形状的信息,请参见此-您可以定义一个圆作为数据点进行渲染

  • 绝对不需要重写paint方法或在顶部添加层。JFreeChart已经支持此行为

    正确的方法是向图表中添加注释,特别是:

    chart.getPlot().addAnnotation(new XYShapeAnnotation(new Ellipse2D.Double(x - radius, y - radius, radius + radius, radius + radius))
    
    其中x和y是圆的中心。请注意,坐标位于绘图空间,而不是图形空间。渲染时,JFreeChart将自动转换坐标

    看看:
    http://www.java2s.com/Code/Java/Chart/JFreeChartPlotOrientationDemo2.htm

    您完全不需要覆盖绘制方法或在顶部添加层。JFreeChart已经支持此行为

    正确的方法是向图表中添加注释,特别是:

    chart.getPlot().addAnnotation(new XYShapeAnnotation(new Ellipse2D.Double(x - radius, y - radius, radius + radius, radius + radius))
    
    其中x和y是圆的中心。请注意,坐标位于绘图空间,而不是图形空间。渲染时,JFreeChart将自动转换坐标

    看看:
    http://www.java2s.com/Code/Java/Chart/JFreeChartPlotOrientationDemo2.htm

    一种方法是在序列中添加一个x和y坐标为(0,0)的点。现在,设置
    renderer.setSeriesShape(序列,新的Ellipse2D.Double(-3,-3,6,6))现在,您可以更新序列并使点也可移动。

    一种方法是向序列中添加一个x和y坐标为(0,0)的点。现在,设置
    renderer.setSeriesShape(序列,新的Ellipse2D.Double(-3,-3,6,6));
    现在您可以更新系列并使点也可移动。

    如何访问图表的paintComponent方法,因为它是由工厂创建的,因此无法扩展?@hoverCraftfullOfels True,图表应添加到JPanel中。注释是为此而设计的,但第二个系列是一个有用的替代方法;重写g
    paintComponent()
    这是一个坏主意,因为它无法轻松访问渲染器的几何体。如何访问图表的paintComponent方法,因为它是由工厂创建的,因此无法扩展?@hovercraftfullofels True,图表应添加到JPanel insteadAnnotations,但第二个系列是一个有用的替代方法;重写
    paintComponent()
    是个坏主意,因为它不能轻松访问渲染器的几何体。另请参见相关示例和。另请参见相关示例和。