Java 在JFreeChart中的XYLineChart顶部放置一个圆
我使用JFreeChart绘制了一个标准正态分布: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
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方法或在顶部添加层。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中。注释是为此而设计的,但第二个系列是一个有用的替代方法;重写gpaintComponent()
这是一个坏主意,因为它无法轻松访问渲染器的几何体。如何访问图表的paintComponent方法,因为它是由工厂创建的,因此无法扩展?@hovercraftfullofels True,图表应添加到JPanel insteadAnnotations,但第二个系列是一个有用的替代方法;重写paintComponent()
是个坏主意,因为它不能轻松访问渲染器的几何体。另请参见相关示例和。另请参见相关示例和。