2016-11-22 86 views
2

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

+0

请澄清..你想要两个x轴或两个y轴的轴?任何截图或模型的机会? – Adam

+0

正常的x和y轴。但我想按照我的意愿将这些点与线连接起来。 –

+0

如果是的话,你应该将Adam的答案标记为正确。 – Sedrick

回答

0

我对@Adam答案改进,以满足新的probem:

@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(); 

} 
1

默认情况下,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(); 

} 
+0

你的方法很好。但是一个小问题,每次都需要声明一个具有独特名称的新系列。如果有10个或以上的点,很难宣布这么多系列。我试图解决但不成功。请帮助解决问题。 –

+0

我改进了@Adam解决你的新问题的答案。 – Sedrick