2015-11-02 3 views
1

Я изучаю javafx для создания графического интерфейса. Я хочу реализовать простую линейную диаграмму X-Y NumberAxis. В соответствии с свойством линейной диаграммы линии, соединяющие точки данных, никогда не пересекаются.Диаграмма рассеяния со связанными точками javafx

Например - Пусть для точек данных

series.getData().add(new XYChart.Data(1.5,1.5)); 
series.getData().add(new XYChart.Data(2.5,4.5)); 
series.getData().add(new XYChart.Data(4.5,2.5)); 
series.getData().add(new XYChart.Data(1.0,2.0)); 
series.getData().add(new XYChart.Data(3.0,3.0));` 

Выхода для этих точек в линии диаграмме - line chart](http://[![enter image description here] 1)

, где, как это должно быть в виде следующего редактируемого изображения диаграммы рассеивания вывод одних и тех же точек - enter image description here

Есть ли способ изменить это поведение линейной диаграммы? ИЛИ подключить точки диаграммы рассеяния?

Обратите внимание, что я буду добавлять точки динамически и снизу, верхняя граница обеих осей будет меняться непрерывно.

ответ

2

Переключить sorting policy на схему.

lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.NONE); 

Когда я использую это, я получаю эту красивую детскую надпись.

mess

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.chart.LineChart; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.XYChart; 
import javafx.stage.Stage; 

public class LineChartSample extends Application { 

    @Override public void start(Stage stage) { 
     final NumberAxis xAxis = new NumberAxis(); 
     final NumberAxis yAxis = new NumberAxis(); 

     final LineChart<Number,Number> lineChart = 
       new LineChart<>(xAxis, yAxis); 

     XYChart.Series<Number, Number> series = new XYChart.Series<>(); 
     series.getData().addAll(
       new XYChart.Data<>(4, 24), 
       new XYChart.Data<>(1, 23), 
       new XYChart.Data<>(6, 36), 
       new XYChart.Data<>(8, 45), 
       new XYChart.Data<>(2, 14), 
       new XYChart.Data<>(9, 43), 
       new XYChart.Data<>(7, 22), 
       new XYChart.Data<>(12, 25), 
       new XYChart.Data<>(10, 17), 
       new XYChart.Data<>(5, 34), 
       new XYChart.Data<>(3, 15), 
       new XYChart.Data<>(11, 29) 
     ); 
     lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.NONE); 

     Scene scene = new Scene(lineChart,800,600); 
     lineChart.getData().add(series); 
     lineChart.setLegendVisible(false); 

     stage.setScene(scene); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
Смежные вопросы