2016-11-22 2 views
2

Im JavaFX-Liniendiagramm ein Typ eines zweiachsigen Diagramms, das Daten als eine Reihe von Punkten darstellt, die durch gerade Linien verbunden sind. Alle Punkte sind mit einer Linie verbunden. Aber ich möchte sie mit meiner Bestellung verbinden. Wie gibt es drei Punkte p1 (x1, y1), p2 (x2, y2), p3 (x3, y3). Im Liniendiagramm sind sie alle mit einer einzigen Linie verbunden, aber ich möchte p1, p3 und p1, p2 getrennt verbinden. Wie kann ich das machen ? X-Achse und Y-Achse müssen dort vorhanden sein.So verbinden Sie zwei Punkte in javaFX in einem zweiachsigen Diagramm

+0

Bitte klären .. Sie wollen Achse mit zwei X-Achse oder zwei Y-Achse? Irgendeine Chance auf einen Screenshot oder ein Model? – Adam

+0

Normale x- und y-Achse. Aber ich möchte die Punkte mit der Linie in meinem Wunsch verbinden. –

+0

Sie sollten Adams Antwort als richtig markieren, wenn es ist. – Sedrick

Antwort

0

ich auf @ Adam Antwort verbessern Ihre neue probem Adresse:

@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

Standardmäßig verbindet JavaFX alle Punkte einer Serie. Eine einfache Lösung ist die Verwendung mehrerer Serien. Hinweis: Sie können Daten Instanzen zwischen Serie teilen, weil Daten eines Rückverweis auf den Knoten speichern - siehe 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

Ihr Ansatz ist gut. Aber ein kleines Problem, jedes Mal muss eine neue Serie mit einem eindeutigen Namen deklariert werden. Wenn es 10 oder mehr Punkte gibt, ist es schwer, so viele Serien zu deklarieren. Ich versuche zu lösen, aber nicht erfolgreich. Bitte helfen Sie, das Problem zu lösen. –

+0

Ich habe die @Adam-Antwort verbessert, um Ihr neues Problem zu beheben. – Sedrick

Verwandte Themen