2016-11-22 1 views
2

JavaFX 선형 차트에서 직선으로 연결된 일련의 점으로 데이터를 표시하는 두 가지 유형의 차트입니다. 모든 점은 한 줄로 연결됩니다. 그러나 나는 그들을 내 주문과 연결하고 싶다. 3 점 p1 (x1, y1), p2 (x2, y2), p3 (x3, y3)와 같이. 꺾은 선형 차트에서는 모두 한 줄로 연결되어 있지만 p1, p3 및 p1, p2를 별도로 연결해야합니다. 어떻게해야합니까? X 축과 Y 축은 거기에 있어야합니다.2 축 차트에서 javaFX의 두 점을 연결하는 방법

+0

명확히하시기 바랍니다 .. 두 개의 x 축 또는 두 개의 y 축이있는 축을 원하십니까? 스크린 샷 또는 모형의 기회? – Adam

+0

정상적인 x 및 y 축. 그러나 나는 그 소원을 라인과 연결하고 싶다. –

+0

아담의 대답이 올바른 것으로 표시해야합니다. – Sedrick

답변

0

참조 :

@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는 시리즈의 모든 포인트에 참여합니다. 간단히 해결하면 여러 시리즈를 사용하는 것입니다. 데이터 노드에 다시 참조를 저장하기 때문에 당신이 시리즈 사이에 데이터 인스턴스를 공유 할 수 없습니다 - 나는 새 probem를 해결하기 @ 아담의 대답에 개선 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

관련 문제