JavaFX - Gráfico de barras
Se utiliza un gráfico de barras para representar datos agrupados mediante barras rectangulares. La longitud de estas barras representa los valores. Las barras en el gráfico de barras se pueden trazar vertical u horizontalmente.
A continuación se muestra un gráfico de barras que compara varias marcas de automóviles.
En JavaFX, un gráfico de barras está representado por una clase llamada BarChart. Esta clase pertenece al paquetejavafx.scene.chart. Al crear una instancia de esta clase, puede crear un nodo BarChart en JavaFX.
Pasos para generar un gráfico de barras
Para generar un gráfico de barras en JavaFX, siga los pasos que se indican a continuación.
Paso 1: crear una clase
Cree una clase Java y herede la Application clase del paquete javafx.application. A continuación, puede implementar elstart() método de esta clase de la siguiente manera.
public class ClassName extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Paso 2: Definición del eje
Defina los ejes X e Y del gráfico de barras y establezca etiquetas para ellos. En nuestro ejemplo, el eje X representa la categoría de comparación y el eje Y representa la puntuación.
//Defining the x axis
CategoryAxis xAxis = new CategoryAxis();
xAxis.setCategories(FXCollections.<String>observableArrayList(Arrays.asList(
"Speed", "User rating", "Milage", "Safety")));
xAxis.setLabel("category");
//Defining the y axis
NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("score");
Paso 3: creación del gráfico de barras
Cree un gráfico de líneas creando una instancia de la clase llamada BarChart del paquete javafx.scene.chart. Al constructor de esta clase, pase los objetos que representan los ejes X e Y creados en el paso anterior.
//Creating the Bar chart
BarChart<String, Number> barChart = new BarChart<>(xAxis, yAxis);
barChart.setTitle("Comparison between various cars");
Paso 4: preparar los datos
Instancia del XYChart.Series class y agregue los datos (una serie de coordenadas xey) a la lista Observable de esta clase de la siguiente manera:
//Prepare XYChart.Series objects by setting data
XYChart.Series<String, Number> series1 = new XYChart.Series<>();
series1.setName("Fiat");
series1.getData().add(new XYChart.Data<>("Speed", 1.0));
series1.getData().add(new XYChart.Data<>("User rating", 3.0));
series1.getData().add(new XYChart.Data<>("Milage", 5.0));
series1.getData().add(new XYChart.Data<>("Safety", 5.0));
XYChart.Series<String, Number> series2 = new XYChart.Series<>();
series2.setName("Audi");
series2.getData().add(new XYChart.Data<>("Speed", 5.0));
series2.getData().add(new XYChart.Data<>("User rating", 6.0));
series2.getData().add(new XYChart.Data<>("Milage", 10.0));
series2.getData().add(new XYChart.Data<>("Safety", 4.0));
XYChart.Series<String, Number> series3 = new XYChart.Series<>();
series3.setName("Ford");
series3.getData().add(new XYChart.Data<>("Speed", 4.0));
series3.getData().add(new XYChart.Data<>("User rating", 2.0));
series3.getData().add(new XYChart.Data<>("Milage", 3.0));
series3.getData().add(new XYChart.Data<>("Safety", 6.0));
Paso 5: agregue datos al gráfico de barras
Agregue la serie de datos preparada en el paso anterior al gráfico de barras de la siguiente manera:
//Setting the data to bar chart
barChart.getData().addAll(series1, series2, series3);
Paso 6: creación de un objeto de grupo
En el start()método, cree un objeto de grupo creando una instancia de la clase llamada Grupo. Esto pertenece al paquetejavafx.scene.
Pase el objeto BarChart (nodo), creado en el paso anterior, como parámetro al constructor de la clase Group. Esto debe hacerse para agregarlo al grupo de la siguiente manera:
Group root = new Group(barChart);
Paso 7: creación de un objeto de escena
Cree una escena creando una instancia de la clase llamada Scene, que pertenece al paquete javafx.scene. A esta clase, pase el objeto Grupo (root) creado en el paso anterior.
Además del objeto raíz, también puede pasar dos parámetros dobles que representan la altura y el ancho de la pantalla, junto con el objeto de la clase Group de la siguiente manera.
Scene scene = new Scene(group ,600, 300);
Paso 8: Establecer el título del escenario
Puede establecer el título del escenario utilizando el setTitle() método del Stageclase. losprimaryStage es un objeto Stage, que se pasa al método de inicio de la clase de escena como parámetro.
Utilizando el primaryStage objeto, establezca el título de la escena como Sample Application como sigue.
primaryStage.setTitle("Sample Application");
Paso 9: Agregar escena al escenario
Puede agregar un objeto de escena al escenario usando el método setScene() de la clase nombrada Stage. Agregue el objeto Scene preparado en los pasos anteriores utilizando el siguiente método.
primaryStage.setScene(scene);
Paso 10: Visualización del contenido del escenario
Muestre el contenido de la escena usando el método llamado show() del Stage clase de la siguiente manera.
primaryStage.show();
Paso 11: Lanzamiento de la aplicación
Inicie la aplicación JavaFX llamando al método estático launch() del Application class del método principal de la siguiente manera.
public static void main(String args[]){
launch(args);
}
Ejemplo
El siguiente ejemplo muestra varias estadísticas de automóviles con la ayuda de un gráfico de barras. A continuación se muestra una lista de marcas de automóviles junto con sus diferentes características, que mostraremos mediante un gráfico de barras:
Coche | Velocidad | Opiniones de los usuarios | Millage | La seguridad |
---|---|---|---|---|
Fíat | 1.0 | 3,0 | 5,0 | 5,0 |
Audi | 5,0 | 6.0 | 10.0 | 4.0 |
Vado | 4.0 | 2.0 | 3,0 | 6.0 |
A continuación se muestra un programa de Java que genera un gráfico de barras, que muestra los datos anteriores utilizando JavaFX.
Guarde este código en un archivo con el nombre BarChartExample.java.
import java.util.Arrays;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.stage.Stage;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
public class BarChartExample extends Application {
@Override
public void start(Stage stage) {
//Defining the axes
CategoryAxis xAxis = new CategoryAxis();
xAxis.setCategories(FXCollections.<String>
observableArrayList(Arrays.asList("Speed", "User rating", "Milage", "Safety")));
xAxis.setLabel("category");
NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("score");
//Creating the Bar chart
BarChart<String, Number> barChart = new BarChart<>(xAxis, yAxis);
barChart.setTitle("Comparison between various cars");
//Prepare XYChart.Series objects by setting data
XYChart.Series<String, Number> series1 = new XYChart.Series<>();
series1.setName("Fiat");
series1.getData().add(new XYChart.Data<>("Speed", 1.0));
series1.getData().add(new XYChart.Data<>("User rating", 3.0));
series1.getData().add(new XYChart.Data<>("Milage", 5.0));
series1.getData().add(new XYChart.Data<>("Safety", 5.0));
XYChart.Series<String, Number> series2 = new XYChart.Series<>();
series2.setName("Audi");
series2.getData().add(new XYChart.Data<>("Speed", 5.0));
series2.getData().add(new XYChart.Data<>("User rating", 6.0));
series2.getData().add(new XYChart.Data<>("Milage", 10.0));
series2.getData().add(new XYChart.Data<>("Safety", 4.0));
XYChart.Series<String, Number> series3 = new XYChart.Series<>();
series3.setName("Ford");
series3.getData().add(new XYChart.Data<>("Speed", 4.0));
series3.getData().add(new XYChart.Data<>("User rating", 2.0));
series3.getData().add(new XYChart.Data<>("Milage", 3.0));
series3.getData().add(new XYChart.Data<>("Safety", 6.0));
//Setting the data to bar chart
barChart.getData().addAll(series1, series2, series3);
//Creating a Group object
Group root = new Group(barChart);
//Creating a scene object
Scene scene = new Scene(root, 600, 400);
//Setting title to the Stage
stage.setTitle("Bar 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 y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.
javac BarChartExample.java
java BarChartExample
Al ejecutarse, el programa anterior genera una ventana JavaFX que muestra un gráfico de áreas como se muestra a continuación.