”;
A scatterplot is a type of graph which uses values from two variables plotted in a Cartesian plane. It is usually used to find out the relationship between two variables.
Following is a Scatter chart plotted between area and weight.
Scatter Chart in JavaFX
In JavaFX, a Scatter chart is represented by a class named ScatterChart. This class belongs to the package javafx.scene.chart. By instantiating this class, you can create a ScatterChart node in JavaFX.
To generate an area chart in JavaFX, follow the steps given below.
Step 1: Defining the Axis
Define the X and Y axis of the area chart and set labels to them in start() method of Application class. In our example, X axis represents area and the Y axis represents weights.
public class ClassName extends Application { @Override public void start(Stage primaryStage) throws Exception { //Defining the x axis NumberAxis xAxis = new NumberAxis(0, 12, 3); xAxis.setLabel("Area"); //Defining the y axis NumberAxis yAxis = new NumberAxis(0, 16, 4); yAxis.setLabel("Weight"); } }
Step 2: Creating the Scatter Chart
Create a line chart by instantiating the class named ScatterChart of the package javafx.scene.chart. To the constructor of this class, pass the objects representing the X and Y axis created in the previous step.
//Creating the Scatter chart ScatterChart<String, Number> scatterChart = new ScatterChart(xAxis, yAxis);
Step 3: Preparing the Data
Instantiate the XYChart.Series class and add the data (a series of, x and y coordinates) to the Observable list of this class as follows −
//Prepare XYChart.Series objects by setting data XYChart.Series series = new XYChart.Series(); series.getData().add(new XYChart.Data(8, 12)); series.getData().add(new XYChart.Data(4, 5.5)); series.getData().add(new XYChart.Data(11, 14)); series.getData().add(new XYChart.Data(4, 5)); series.getData().add(new XYChart.Data(3, 3.5)); series.getData().add(new XYChart.Data(6.5, 7));
Step 4: Add Data to the Scatter Chart
Add the data series prepared in the previous step to the scatter chart as follows −
//Setting the data to scatter chart scatterChart.getData().addAll(series);
Step 5: Creating a Group Object
In the start() method, create a group object by instantiating the class named Group. This belongs to the package javafx.scene.
Pass the ScatterChart (node) object created in the previous step as a parameter to the constructor of the Group class. This should be done in order to add it to the group as follows −
Group root = new Group(scatterChart);
Step 6: Launching Application
Lastly, follow the given steps below to launch the application properly −
-
Firstly, instantiate the class named Scene by passing the Group object as a parameter value to its constructor. To this constructor, you can also pass dimensions of the application screen as optional parameters.
-
Then, set the title to the stage using the setTitle() method of the Stage class.
-
Now, a Scene object is added to the stage using the setScene() method of the class named Stage.
-
Display the contents of the scene using the method named show().
-
Lastly, the application is launched with the help of the launch() method.
Example
The following table contains sample data plotted between area and weight.
Area | Weight |
---|---|
8 | 12 |
4 | 5.5 |
11 | 14 |
4 | 5 |
3 | 3.5 |
6.5 | 7 |
Following is a Java program which generates a scatter chart depicting the above data using JavaFX.
Save this code in a file with the name ScatterChartExample.java.
import javafx.application.Application; import static javafx.application.Application.launch; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.ScatterChart; import javafx.scene.chart.XYChart; public class ScatterChartExample extends Application { @Override public void start(Stage stage) { //Defining the axes NumberAxis xAxis = new NumberAxis(0, 12, 3); xAxis.setLabel("Area"); NumberAxis yAxis = new NumberAxis(0, 16, 4); yAxis.setLabel("Weight"); //Creating the Scatter chart ScatterChart<String, Number> scatterChart = new ScatterChart(xAxis, yAxis); //Prepare XYChart.Series objects by setting data XYChart.Series series = new XYChart.Series(); series.getData().add(new XYChart.Data(8, 12)); series.getData().add(new XYChart.Data(4, 5.5)); series.getData().add(new XYChart.Data(11, 14)); series.getData().add(new XYChart.Data(4, 5)); series.getData().add(new XYChart.Data(3, 3.5)); series.getData().add(new XYChart.Data(6.5, 7)); //Setting the data to scatter chart scatterChart.getData().addAll(series); //Creating a Group object Group root = new Group(scatterChart); //Creating a scene object Scene scene = new Scene(root, 600, 400); //Setting title to the Stage stage.setTitle("Scatter 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 and execute the saved java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls ScatterChartExample.java java --module-path %PATH_TO_FX% --add-modules javafx.controls ScatterChartExample
Output
On executing, the above program generates a JavaFX window displaying a scatter chart as shown below.
Example
The following table illustrates the number of electronic items that were in sold per month.
Item | Number of Sales (Per Month) |
---|---|
Laptop | 176 |
TV | 30 |
Mobile | 540 |
Smart Watch | 250 |
MacBook | 60 |
Following is a Java program which generates a scatter chart depicting the above data using JavaFX.
Save this code in a file with the name ScatterChartSales.java.
import javafx.application.Application; import static javafx.application.Application.launch; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.ScatterChart; import javafx.scene.chart.XYChart; public class ScatterChartExample extends Application { @Override public void start(Stage stage) { //Defining the axes CategoryAxis xAxis = new CategoryAxis(); xAxis.setLabel("Items"); NumberAxis yAxis = new NumberAxis(); yAxis.setLabel("Sales (per month)"); //Creating the Scatter chart ScatterChartscatterChart = new ScatterChart(xAxis, yAxis); //Prepare XYChart.Series objects by setting data XYChart.Series series = new XYChart.Series(); series.setName("Items sold per month"); series.getData().add(new XYChart.Data("Laptop", 176)); series.getData().add(new XYChart.Data("TV", 30)); series.getData().add(new XYChart.Data("Mobile", 540)); series.getData().add(new XYChart.Data("Smart Watch", 250)); series.getData().add(new XYChart.Data("MacBook", 60)); //Setting the data to scatter chart scatterChart.getData().addAll(series); //Creating a Group object Group root = new Group(scatterChart); //Creating a scene object Scene scene = new Scene(root, 600, 400); //Setting title to the Stage stage.setTitle("Scatter 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 and execute the saved java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls ScatterChartSales.java java --module-path %PATH_TO_FX% --add-modules javafx.controls ScatterChartSales
Output
On executing, the above program generates a JavaFX window displaying a scatter chart as shown below.
”;