2016-11-22 29 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