JavaFX StackedBarChart条形图

在堆叠条形图中,不同组的值以堆叠的形式显示在矩形条上。这主要用于根据绘制在条形图上的长度来比较不同组的值。

在下图中,比较了不同州的男性和女性人口。在 x 轴上绘制州,而在 y 轴上绘制人口。

在 JavaFX 中,类javafx.scene.chart.StackedBarChart表示堆积条形图。我们需要实例化这个类来生成一个 StackedBarChart 节点。

1 StackedBarChart类的属性

属性 描述 setter方法
categoryGap 它是一个双重类型的属性。它代表条形类别之间的差距。 setCategoryGap(double value)

2 StackedBarChart类的构造函数

该类包含下面给出的三个构造函数。

  1. public StackedBarChart(Axis Xaxis, Axis Yaxis) 使用指定的轴创建stackedbarchart 的新实例。
  2. public StackedBarChart(Axis Xaxis, Axis Yaxis, ObservableList> data) 使用指定的轴和数据创建stackedbarchart 的新实例。
  3. public StackedBarChart(Axis Xaxis, Axis Yaxis, ObservableList> data, double categoryGap) 使用指定的轴、数据和类别间隙创建 StackeBarChart 的新实例

3 StackedBarChart类的例子

在下面的例子中,我们展示了两种编程语言在一年中的每个月的流行度之间的比较。x 轴是类别轴,而 y 轴是数字轴。在 X 轴上,我们绘制了一年中的月份,而在 y 轴上,我们绘制了读者数量。

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.StackedBarChart;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class StackedBarChartExample extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        //Configuring xaxis and yaxis
        CategoryAxis xaxis = new CategoryAxis();
        NumberAxis yaxis = new NumberAxis(1000,300000,1000);
        xaxis.setLabel("Months");
        yaxis.setLabel("Number of users");

        //Configuring StackedBarChart
        StackedBarChart sb = new StackedBarChart(xaxis,yaxis);
        sb.setTitle("Popularity of Programming languages");

        //Configuring series for java
        XYChart.Series java = new XYChart.Series<>();
        java.setName("java");
        java.getData().add(new XYChart.Data<>("Jan",10000));
        java.getData().add(new XYChart.Data<>("Jan",130000));
        java.getData().add(new XYChart.Data<>("Feb",50000));
        java.getData().add(new XYChart.Data<>("Mar",60300));
        java.getData().add(new XYChart.Data<>("Apr",105600));
        java.getData().add(new XYChart.Data<>("May",50600));
        java.getData().add(new XYChart.Data<>("Jun",103000));
        java.getData().add(new XYChart.Data<>("Jul",104500));
        java.getData().add(new XYChart.Data<>("Aug",203000));
        java.getData().add(new XYChart.Data<>("Sep",103400));
        java.getData().add(new XYChart.Data<>("Oct",105600));
        java.getData().add(new XYChart.Data<>("Nov",102400));
        java.getData().add(new XYChart.Data<>("Dec",200000));

        //Adding series java to the stackedbarchart
        sb.getData().add(java);

        //Configuring series python
        XYChart.Series python = new XYChart.Series<>();
        python.setName("python");
        python.getData().add(new XYChart.Data<>("Jan",50000));
        python.getData().add(new XYChart.Data<>("Jan",14300));
        python.getData().add(new XYChart.Data<>("Feb",50400));
        python.getData().add(new XYChart.Data<>("Mar",100500));
        python.getData().add(new XYChart.Data<>("Apr",104000));
        python.getData().add(new XYChart.Data<>("May",134000));
        python.getData().add(new XYChart.Data<>("Jun",60000));
        python.getData().add(new XYChart.Data<>("Jul",78000));
        python.getData().add(new XYChart.Data<>("Aug",89000));
        python.getData().add(new XYChart.Data<>("Sep",150000));
        python.getData().add(new XYChart.Data<>("Oct",120000));
        python.getData().add(new XYChart.Data<>("Nov",109450));
        python.getData().add(new XYChart.Data<>("Dec",50450));

        //adding python series to the stackedbarchart
        sb.getData().add(python);

        //Configuring group and Scene
        Group root = new Group();
        root.getChildren().add(sb);
        Scene scene = new Scene(root,600,400);
        primaryStage.setScene(scene);
        primaryStage.setTitle("一点教程网:StackedBarChart Example");
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
} 

输出结果为:

热门文章

优秀文章