JavaFX StackedAreaChart

时间:2020-01-09 10:36:41  来源:igfitidea点击:

JavaFX StackedAreaChart组件能够在JavaFX应用程序内部绘制堆叠的面积图。堆叠的面积图类似于具有多个数据序列的面积图,不同之处在于堆叠的面积图显示彼此堆叠的数据序列(因此面积),正常面积图将与它们重叠。

JavaFX StackedAreaChart组件由类java.scene.chart.StackedAreaChart表示。

StackedAreaChart X轴和Y轴

JavaFX StackedAreaChart绘制堆积面积图。堆积面积图是二维图形,表示该图形具有X轴和Y轴。面积图通常有两个数字轴。数字轴由JavaFX类javafx.scene.chart.NumberAxis表示。

我们需要定义StackedAreaChart使用的X轴和Y轴。这是创建两个JavaFXNumberAxis实例的示例:

NumberAxis xAxis = new NumberAxis();
xAxis.setLabel("Last 7 Days");

NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("Visits");

创建一个StackedAreaChart

我们可以通过创建StackedAreaChart类的实例来创建JavaFX StackedAreaChart组件。我们需要将X轴和Y轴传递给StackedAreaChart构造函数。这是一个JavaFXStackedAreaChart实例化示例:

NumberAxis xAxis = new NumberAxis();
xAxis.setLabel("No of employees");

NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("Revenue per employee");

StackedAreaChart stackedAreaChart = new StackedAreaChart(xAxis, yAxis);

StackedAreaChart数据系列

为了使JavaFXStackedAreaChart组件显示任何点,我们必须为其提供数据序列。数据系列是数据点的列表。每个数据点包含一个X值和一个Y值。

要查看任何堆叠区域,必须将两个或者多个数据序列添加到StackedAreaChart组件。 StackedAreaChart显示彼此堆叠的数据序列的值。

以下是创建两个数据系列并将其添加到StackedAreaChart组件的示例:

XYChart.Series dataSeries1 = new XYChart.Series();
dataSeries1.setName("Desktop");

dataSeries1.getData().add(new XYChart.Data( 0, 567));
dataSeries1.getData().add(new XYChart.Data( 1, 612));
dataSeries1.getData().add(new XYChart.Data( 2, 800));
dataSeries1.getData().add(new XYChart.Data( 3, 780));
dataSeries1.getData().add(new XYChart.Data( 4, 650));
dataSeries1.getData().add(new XYChart.Data( 5, 610));
dataSeries1.getData().add(new XYChart.Data( 6, 590));

stackedAreaChart.getData().add(dataSeries1);

XYChart.Series dataSeries2 = new XYChart.Series();
dataSeries2.setName("Mobile");

dataSeries2.getData().add(new XYChart.Data( 0, 101));
dataSeries2.getData().add(new XYChart.Data( 1, 110));
dataSeries2.getData().add(new XYChart.Data( 2, 140));
dataSeries2.getData().add(new XYChart.Data( 3, 132));
dataSeries2.getData().add(new XYChart.Data( 4, 115));
dataSeries2.getData().add(new XYChart.Data( 5, 109));
dataSeries2.getData().add(new XYChart.Data( 6, 105));

stackedAreaChart.getData().add(dataSeries2);

这些数据系列中的数据代表7天前用户在台式机和移动设备上的访问数据。

将StackedAreaChart添加到场景图

要使JavaFXStackedAreaChart可见,必须将其添加到JavaFX场景图中。这意味着将" StackedAreaChart"添加到"场景"对象中,或者将" AreaChart"添加到布局组件中,该布局组件添加到"场景"对象中。

这是一个向JavaFX场景图添加一个StackedAreaChart的示例:

package com.Hyman.javafx.charts;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.StackedAreaChart;
import javafx.scene.chart.XYChart;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class StackedAreaChartExperiments extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("StackedAreaChart Experiments");

        NumberAxis xAxis = new NumberAxis();
        xAxis.setLabel("7 Day Interval");

        NumberAxis yAxis = new NumberAxis();
        yAxis.setLabel("Visits");

        StackedAreaChart stackedAreaChart = new StackedAreaChart(xAxis, yAxis);

        XYChart.Series dataSeries1 = new XYChart.Series();
        dataSeries1.setName("Desktop");

        dataSeries1.getData().add(new XYChart.Data( 0, 567));
        dataSeries1.getData().add(new XYChart.Data( 1, 612));
        dataSeries1.getData().add(new XYChart.Data( 2, 800));
        dataSeries1.getData().add(new XYChart.Data( 3, 780));
        dataSeries1.getData().add(new XYChart.Data( 4, 650));
        dataSeries1.getData().add(new XYChart.Data( 5, 610));
        dataSeries1.getData().add(new XYChart.Data( 6, 590));

        stackedAreaChart.getData().add(dataSeries1);

        XYChart.Series dataSeries2 = new XYChart.Series();
        dataSeries2.setName("Mobile");

        dataSeries2.getData().add(new XYChart.Data( 0, 101));
        dataSeries2.getData().add(new XYChart.Data( 1, 110));
        dataSeries2.getData().add(new XYChart.Data( 2, 140));
        dataSeries2.getData().add(new XYChart.Data( 3, 132));
        dataSeries2.getData().add(new XYChart.Data( 4, 115));
        dataSeries2.getData().add(new XYChart.Data( 5, 109));
        dataSeries2.getData().add(new XYChart.Data( 6, 105));

        stackedAreaChart.getData().add(dataSeries2);

        VBox vbox = new VBox(stackedAreaChart);

        Scene scene = new Scene(vbox, 400, 200);

        primaryStage.setScene(scene);
        primaryStage.setHeight(300);
        primaryStage.setWidth(1200);

        primaryStage.show();
    }

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