Java 如何在散点图的X、Y轴中间添加圆
我有一个散点图:Java 如何在散点图的X、Y轴中间添加圆,java,javafx,Java,Javafx,我有一个散点图: AnchorPane anchorPane; XYChart.Series series1 = new XYChart.Series(); XYChart.Series series2 = new XYChart.Series(); NumberAxis xAxis = new NumberAxis(0, 10, 1); NumberAxis yAxis = new NumberAxis(-100, 500, 100); ScatterChart<Nu
AnchorPane anchorPane;
XYChart.Series series1 = new XYChart.Series();
XYChart.Series series2 = new XYChart.Series();
NumberAxis xAxis = new NumberAxis(0, 10, 1);
NumberAxis yAxis = new NumberAxis(-100, 500, 100);
ScatterChart<Number,Number> sc = new ScatterChart<Number,Number>(xAxis,yAxis);
我正在动态地将元素添加到图形中,因此我设置了轴自动测距:
xAxis.setAutoRanging(true);
yAxis.setAutoRanging(true);
我需要将圆添加到图形的中间(即图形的中心将是轴的(0,0))
我已尝试通过以下方式实现:
Circle circle = new Circle(90);
double midx = (sc.getXAxis().getMaxHeight() - sc.getXAxis().getMinHeight()) / 2;
double midy = (sc.getYAxis().getMaxHeight() - sc.getYAxis().getMinHeight()) / 2;
circle.setCenterX(midx);
circle.setCenterY(midy);
anchorPane.getChildren().add(circle);
但它不起作用。(圆圈添加到锚的左上角,而不是我想要的)
我该怎么做呢?因为如果检查
sc.getXAxis().getMaxHeight()和sc.getXAxis().getMinHeight()的值,它们都是-1.0
double midx = (sc.getXAxis().getMaxHeight() - sc.getXAxis().getMinHeight()) / 2;
这里的结果是0
因此,您所做的是在(0,0)处创建圆坐标。此外,您正在将这些圆添加到您的anchorPane
,而不是您的sc
。即使您可以将圆添加到正确的点,您的散点图也不会增长,因为sc
将不会有任何数据。您可以使用XYChart.Series
将数据添加到图表中。显然您尝试过,但没有使用在当前脚本中删除它。在创建新圆圈之前所做的一切都是正确的,除了XYChart。如果计划只向图表添加一种类型的符号,则不需要系列系列2
sc.getData().add(series1);
现在,您将序列绑定到散点图
现在,我们需要计算散点图
的中间部分,并使用这些位置添加新数据
double midx = (xAxis.getUpperBound() - xAxis.getLowerBound()) / 2;
double midy = (yAxis.getUpperBound() - yAxis.getLowerBound()) / 2;
使用这些位置添加新符号
series1.getData().add(new XYChart.Data(midx, midy));
你现在应该在散点图的中间有一个圆圈,如果你想改变符号的属性,你可以使用CSS。更详细的例子是,因为如果你检查sc.getXAxis().getMaxHeight()
和sc.getXAxis().getMinHeight()
的值,它们都是-1.0
double midx = (sc.getXAxis().getMaxHeight() - sc.getXAxis().getMinHeight()) / 2;
这里的结果是0
因此,您所做的是在(0,0)处创建圆坐标。此外,您正在将这些圆添加到您的anchorPane
,而不是您的sc
。即使您可以将圆添加到正确的点,您的散点图也不会增长,因为sc
将不会有任何数据。您可以使用XYChart.Series
将数据添加到图表中。显然您尝试过,但没有使用在当前脚本中删除它。在创建新圆圈之前所做的一切都是正确的,除了XYChart。如果计划只向图表添加一种类型的符号,则不需要系列系列2
sc.getData().add(series1);
现在,您将序列绑定到散点图
现在,我们需要计算散点图
的中间部分,并使用这些位置添加新数据
double midx = (xAxis.getUpperBound() - xAxis.getLowerBound()) / 2;
double midy = (yAxis.getUpperBound() - yAxis.getLowerBound()) / 2;
使用这些位置添加新符号
series1.getData().add(new XYChart.Data(midx, midy));
你现在应该在散点图的中间有一个圆圈,如果你想更改符号的属性,你可以使用CSS。关于更详细的例子,你没有回答我的问题。我知道如何在散点图中添加元素。但我要求在图(如雷达图)上添加圆圈(而不是图形元素之一).你没有回答我的问题。我知道如何在散点图中添加元素。但我要求在图(如雷达图)上添加圆圈(而不是一个图形元素)。