如何在双轴图表中连接javaFX中的两个点

时间:2016-11-22 04:32:50

标签: javafx

在JavaFX折线图中,一种双轴图表,将数据显示为由直线连接的一系列点。所有点都用一条线连接起来。但我想将它们与我的订单联系起来。像有三个点p1(x1,y1),p2(x2,y2),p3(x3,y3)。在折线图中,它们都用一条线连接,但我想分别连接p1,p3和p1,p2。我怎样才能做到这一点 ? X轴和Y轴必须出现在那里。

2 个答案:

答案 0 :(得分:2)

默认情况下,JavaFX将连接系列中的所有点。简单的解决方案是使用多个系列。请注意,您无法在系列之间共享数据实例,因为数据存储了对节点的反向引用 - 请参阅javafx.scene.chart.XYChart.Data.getNode()

@Override
public void start(Stage primaryStage) throws Exception {
    NumberAxis xAxis1 = new NumberAxis();
    NumberAxis yAxis1 = new NumberAxis();
    LineChart<Number, Number> chart = new LineChart<Number, Number>(xAxis1, yAxis1);

    double p1x = 0;
    double p1y = 0;
    double p2x = 5;
    double p2y = 5;
    double p3x = 3;
    double p3y = 5;

    Series<Number, Number> series1 = new Series<>();
    series1.getData().add(new Data<>(p1x, p1y));
    series1.getData().add(new Data<>(p2x, p2y));
    chart.getData().add(series1);

    Series<Number, Number> series2 = new Series<>();
    series2.getData().add(new Data<>(p2x, p2y));
    series2.getData().add(new Data<>(p3x, p3y));
    chart.getData().add(series2);

    primaryStage.setScene(new Scene(chart));
    primaryStage.show();

}

答案 1 :(得分:0)

我改进了@Adam的答案来解决你的新探测:

@Override
public void start(Stage primaryStage) throws Exception {
    NumberAxis xAxis1 = new NumberAxis();
    NumberAxis yAxis1 = new NumberAxis();
    LineChart<Number, Number> chart = new LineChart<Number, Number>(xAxis1, yAxis1);

    Random random = new Random();

    ArrayList<Series<Number, Number>> seriesContainer = new ArrayList();

    for(int i = 0; i < 10; i++)
    {
        Series<Number, Number> series1 = new Series<>();
        series1.getData().add(new XYChart.Data<>(random.nextDouble() * 100, random.nextDouble() * 100));
        series1.getData().add(new XYChart.Data<>(random.nextDouble() * 100, random.nextDouble() * 100));
        seriesContainer.add(series1);            
    }
    chart.getData().addAll(seriesContainer);    

    primaryStage.setScene(new Scene(chart));
    primaryStage.show();

}