JavaFX - Gráfico de Linha

Um gráfico de linha ou gráfico de linha exibe informações como uma série de pontos de dados (marcadores) conectados por segmentos de linha reta. Um gráfico de linha mostra como os dados mudam na mesma frequência de tempo.

A seguir está um gráfico de linhas que descreve o número de escolas em diferentes anos.

No JavaFX, um gráfico de linha é representado por uma classe chamada LineChart. Esta classe pertence ao pacotejavafx.scene.chart. Ao instanciar essa classe, você pode criar um nó LineChart no JavaFX.

Etapas para gerar gráfico de linha

Para gerar um gráfico de linha em JavaFX, você deve seguir as etapas fornecidas a seguir.

Etapa 1: Criação de uma classe

Crie uma classe Java e herde o Application classe do pacote javafx.application. Você pode então implementar ostart() método desta classe da seguinte forma.

public class ClassName extends Application { 
   @Override     
   public void start(Stage primaryStage) throws Exception {     
   }    
}

Etapa 2: Definindo o eixo

Defina os eixos X e Y do gráfico de linha e defina rótulos para eles.

Em nosso exemplo, o eixo X representa os anos começando de 1960 a 2020 com uma marca de escala maior a cada dez anos.

//Defining X axis  
NumberAxis xAxis = new NumberAxis(1960, 2020, 10); 
xAxis.setLabel("Years"); 
        
//Defining y axis 
NumberAxis yAxis = new NumberAxis(0, 350, 50); 
yAxis.setLabel("No.of schools");

Etapa 3: Criação do gráfico de linha

Crie um gráfico de linha instanciando a classe chamada LineChart do pacote javafx.scene.chart. Para o construtor desta classe, passe os objetos que representam os eixos X e Y criados na etapa anterior.

LineChart linechart = new LineChart(xAxis, yAxis);

Etapa 4: preparando os dados

Instancie o XYChart.Seriesclasse. Em seguida, adicione os dados (uma série de coordenadas xey) à lista Observável desta classe da seguinte forma -

XYChart.Series series = new XYChart.Series(); 
series.setName("No of schools in an year"); 
        
series.getData().add(new XYChart.Data(1970, 15)); 
series.getData().add(new XYChart.Data(1980, 30)); 
series.getData().add(new XYChart.Data(1990, 60)); 
series.getData().add(new XYChart.Data(2000, 120)); 
series.getData().add(new XYChart.Data(2013, 240)); 
series.getData().add(new XYChart.Data(2014, 300));

Etapa 5: adicionar dados ao gráfico de linhas

Adicione a série de dados preparada na etapa anterior ao gráfico de linhas da seguinte forma -

//Setting the data to Line chart    
linechart.getData().add(series);

Etapa 6: Criação de um objeto de grupo

No start() método, crie um objeto de grupo instanciando a classe chamada Group. Isso pertence ao pacotejavafx.scene.

Passe o objeto LineChart (nó), criado na etapa anterior como parâmetro para o construtor da classe Group. Isso deve ser feito para adicioná-lo ao grupo da seguinte forma -

Group root = new Group(linechart);

Etapa 7: Criação de um objeto de cena

Crie uma cena instanciando a classe chamada Scene, que pertence ao pacote javafx.scene. Para esta classe, passe o objeto Grupo (root), criado na etapa anterior.

Além do objeto raiz, você também pode passar dois parâmetros duplos que representam a altura e a largura da tela junto com o objeto da classe Grupo da seguinte maneira.

Scene scene = new Scene(group ,600, 300);

Etapa 8: Definir o título do palco

Você pode definir o título do palco usando o setTitle() método do Stageclasse. oprimaryStage é um objeto Stage, que é passado para o método start da classe Scene como um parâmetro.

Usando o primaryStage objeto, defina o título da cena como Sample Application do seguinte modo.

primaryStage.setTitle("Sample Application");

Etapa 9: Adicionando cena ao palco

Você pode adicionar um objeto Scene ao palco usando o método setScene() da classe chamada Stage. Adicione o objeto Scene preparado nas etapas anteriores usando este método como segue.

primaryStage.setScene(scene);

Etapa 10: Exibindo o conteúdo do palco

Exibir o conteúdo da cena usando o método chamado show() do Stage classe da seguinte forma.

primaryStage.show();

Etapa 11: iniciar o aplicativo

Inicie o aplicativo JavaFX chamando o método estático launch() do Application classe do método principal da seguinte forma.

public static void main(String args[]){   
   launch(args);      
}

Exemplo

A tabela a seguir mostra o número de escolas que estavam em uma área de 1970 a 2014.

Ano Número de Escolas
1970 15
1980 30
1990 60
2000 120
2013 240
2014 300

A seguir está um programa Java que gera um gráfico de linha, representando os dados acima, usando JavaFX.

Salve este código em um arquivo com o nome LineChartExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.chart.LineChart; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.XYChart; 
         
public class LineChartExample extends Application { 
   @Override 
   public void start(Stage stage) {
      //Defining the x axis             
      NumberAxis xAxis = new NumberAxis(1960, 2020, 10); 
      xAxis.setLabel("Years"); 
        
      //Defining the y axis   
      NumberAxis yAxis = new NumberAxis   (0, 350, 50); 
      yAxis.setLabel("No.of schools"); 
        
      //Creating the line chart 
      LineChart linechart = new LineChart(xAxis, yAxis);  
        
      //Prepare XYChart.Series objects by setting data 
      XYChart.Series series = new XYChart.Series(); 
      series.setName("No of schools in an year"); 
        
      series.getData().add(new XYChart.Data(1970, 15)); 
      series.getData().add(new XYChart.Data(1980, 30)); 
      series.getData().add(new XYChart.Data(1990, 60)); 
      series.getData().add(new XYChart.Data(2000, 120)); 
      series.getData().add(new XYChart.Data(2013, 240)); 
      series.getData().add(new XYChart.Data(2014, 300)); 
            
      //Setting the data to Line chart    
      linechart.getData().add(series);        
        
      //Creating a Group object  
      Group root = new Group(linechart); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 400);  
      
      //Setting title to the Stage 
      stage.setTitle("Line Chart"); 
         
      //Adding scene to the stage 
      stage.setScene(scene);
	   
      //Displaying the contents of the stage 
      stage.show();         
   } 
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compile e execute o arquivo java salvo no prompt de comando usando os comandos a seguir.

javac LineChartExample.java 
java LineChartExample

Ao ser executado, o programa acima gera uma janela JavaFX exibindo um gráfico de linha conforme mostrado abaixo.