JavaFX - gráfico de pizza
Um gráfico de pizza é uma representação de valores como fatias de um círculo com cores diferentes. Essas fatias são rotuladas e os valores correspondentes a cada fatia são representados no gráfico.
A seguir está um gráfico de pizza que descreve as vendas móveis de várias empresas em uma instância.
No JavaFX, um gráfico de pizza é representado por uma classe chamada PieChart. Esta classe pertence ao pacotejavafx.scene.chart.
Ao instanciar essa classe, você pode criar um nó PieChart no JavaFX.
Esta classe tem 5 propriedades que são as seguintes -
clockwise- Este é um operador booleano; ao definir esse operador como verdadeiro, as fatias de dados nos gráficos de pizza serão organizadas no sentido horário, começando do ângulo inicial do gráfico de pizza.
data - Isso representa um ObservableList objeto, que contém os dados do gráfico de pizza.
labelLineLength - Um operador inteiro que representa o comprimento das linhas que conectam os rótulos e as fatias do gráfico de pizza.
labelsVisible- Este é um operador booleano; ao definir esse operador como verdadeiro, os rótulos dos gráficos de pizza serão desenhados. Por padrão, este operador é definido como verdadeiro.
startAngle - Este é um operador do tipo duplo, que representa o ângulo para iniciar a primeira fatia da pizza.
Para gerar um gráfico de pizza, prepare um objeto ObservableList conforme mostrado no seguinte bloco de código -
//Preparing ObservbleList object
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Iphone 5S", 13),
new PieChart.Data("Samsung Grand", 25),
new PieChart.Data("MOTO G", 10),
new PieChart.Data("Nokia Lumia", 22));
Depois de preparar o ObservableList objeto, passe-o como um argumento para o construtor da classe PieChart como segue -
//Creating a Pie chart
PieChart pieChart = new PieChart(pieChartData);
Ou, usando o método chamado setData() da classe chamada PieChart do pacote nomeado javafx.scene.chart.
pieChart.setData(pieChartData);
Etapas para gerar gráfico de pizza
Para gerar um PieChart no JavaFX, siga as etapas fornecidas abaixo.
Etapa 1: Criação de uma classe
Crie uma classe Java e herde o Application classe do pacote javafx.application e implementar o start() método desta classe da seguinte forma.
public class ClassName extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Etapa 2: Preparando o objeto ObservableList
Prepare um objeto da interface ObservableList objeto passando os dados do gráfico de pizza conforme mostrado abaixo -
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Iphone 5S", 13),
new PieChart.Data("Samsung Grand", 25),
new PieChart.Data("MOTO G", 10),
new PieChart.Data("Nokia Lumia", 22));
Etapa 3: Criação de um objeto PieChart
Criar uma PieChart passando o ObservableList objeto como mostrado abaixo.
//Creating a Pie chart
PieChart pieChart = new PieChart(pieChartData);
Etapa 4: definir o título do gráfico de pizza
Defina o título do gráfico de pizza usando o setTitle() método da aula PieChart. Isso pertence ao pacotejavafx.scene.chart -
//Setting the title of the Pie chart
pieChart.setTitle("Mobile Sales");
Etapa 5: Definir as fatias no sentido horário
Defina as fatias dos gráficos de pizza no sentido horário. Isso é feito passando o valor booleano true para osetClockwise() método da aula PieChart. Isso pertence ao pacotejavafx.scene.chart -
//setting the direction to arrange the data
pieChart.setClockwise(true);
Etapa 6: definir o comprimento da linha da etiqueta
Defina o comprimento da linha do rótulo usando o setLabelLineLength() método da aula PieChart que pertence ao pacote javafx.scene.chart, como segue -
//Setting the length of the label line
pieChart.setLabelLineLength(50);
Etapa 7: Definir os rótulos visíveis
Defina os rótulos do gráfico de pizza para visíveis, passando o valor booleano true ao método setLabelsVisible() da classe PieChart. Isso pertence ao pacotejavafx.scene.chart -
//Setting the labels of the pie chart visible
pieChart.setLabelsVisible(true);
Etapa 8: definir o ângulo inicial do gráfico de pizza
Defina o ângulo inicial do gráfico de pizza usando o setStartAngle() método da aula PieChart. Isso pertence ao pacotejavafx.scene.chart -
//Setting the start angle of the pie chart
pieChart.setStartAngle(180);
Etapa 9: Criação de um objeto de grupo
No start(), crie um objeto de grupo instanciando a classe chamada Grupo. Isso pertence ao pacotejavafx.scene.
Passe o objeto PieChart (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(piechart);
Etapa 10: 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 representando a altura e a largura da tela, junto com o objeto da classe Grupo conforme mostrado abaixo.
Scene scene = new Scene(group ,600, 300);
Etapa 11: Definir o título do palco
Você pode definir o título do palco usando o setTitle() método do Stageclasse. oprimaryStage é um Stage Object, 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 12: Adicionar 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 conforme mostrado abaixo.
primaryStage.setScene(scene);
Etapa 13: Exibir 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 14: 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 abaixo descreve a venda móvel com a ajuda de um gráfico de pizza. A tabela a seguir apresenta uma lista de diferentes marcas de celular e suas vendas (unidades por dia).
S.Não | Marcas de celular | Vendas (unidades por dia) |
---|---|---|
1 | Iphone 5S | 20 |
2 | Samsung Grand | 20 |
3 | MOTO G | 40 |
4 | Nokia Lumia | 10 |
A seguir está um programa Java que gera um gráfico de pizza, descrevendo os dados acima usando JavaFX. Salve este código em um arquivo com o nomePieChartExample.java.
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.chart.PieChart;
public class PieChartExample extends Application {
@Override
public void start(Stage stage) {
//Preparing ObservbleList object
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Iphone 5S", 13),
new PieChart.Data("Samsung Grand", 25),
new PieChart.Data("MOTO G", 10),
new PieChart.Data("Nokia Lumia", 22));
//Creating a Pie chart
PieChart pieChart = new PieChart(pieChartData);
//Setting the title of the Pie chart
pieChart.setTitle("Mobile Sales");
//setting the direction to arrange the data
pieChart.setClockwise(true);
//Setting the length of the label line
pieChart.setLabelLineLength(50);
//Setting the labels of the pie chart visible
pieChart.setLabelsVisible(true);
//Setting the start angle of the pie chart
pieChart.setStartAngle(180);
//Creating a Group object
Group root = new Group(pieChart);
//Creating a scene object
Scene scene = new Scene(root, 600, 400);
//Setting title to the Stage
stage.setTitle("Pie 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 PieChartExample.java
java PieChartExample
Ao ser executado, o programa acima gera uma janela JavaFX exibindo um gráfico de pizza conforme mostrado abaixo.