Javafx 简明教程

JavaFX - Charts

通常情况下,图表是一种数据的图形化表示形式。有许多种图表可用于表示数据,例如条形图、饼图、折线图、散点图等。

JavaFX 为各种饼图和 XY 图表提供支持。绘制在 XY 平面上的图表包括面积图、条形图、气泡图、折线图、散点图、堆积面积图、堆积条形图等。

每个图表都由一个类表示,所有这些图表都属于 javafx.scene.chart 包。名为 Chart 的类是 JavaFX 中所有图表的基类,而 XYChart 是在 XY 平面上绘制的所有图表的基类。

charts

Creating a Chart in JavaFX

要在 JavaFX 中创建图表,你需要执行以下步骤 −

  1. 定义图表的坐标轴

  2. Instantiate the respective class

  3. 准备并向图表传递数据

Instantiating the Respective Class

要创建一个图表,请实例化其各自的类。例如,如果你要创建一个折线图,你需要如下实例化名为 LineChart 的类:

LineChart linechart = new LineChart(xAxis, yAxis);

如上文代码所示,在实例化时,你需要分别传递表示图表的 X 轴和 Y 轴的两个对象。

Defining the Axis

一般来说,图表轴可以表示为以下内容:

  1. 数字,如人口、年龄和

  2. 类别,如一周中的几天、国家。

在 JavaFX 中,一个轴是一个抽象类,表示 X 轴或 Y 轴。它有两个子类来定义每种类型的轴,即 CategoryAxisNumberAxis ,如下图所示:

defining axis

Category Axis:

通过实例化此类,你可以定义(创建)一个 X 轴或 Y 轴,每个值都表示一个类别。你可以如下所示实例化此类来定义一个类别轴:

CategoryAxis xAxis = new CategoryAxis();

对此轴,你需要设置类别的列表并将标签设置为如下所示:

//setting the list of categories.
xAxis.setCategories(FXCollections.<String>observableArrayList
   (Arrays.asList("n ame1", "name2"....)));

//Setting label to the axis
xAxis.setLabel("name of the axis ");

NumberAxis:

通过实例化此类,你可以定义(创建)一个 X 轴或 Y 轴,其中每个值都表示一个数字。你可以与该轴一同使用任何数字类型,例如 Long、Double、BigDecimal 等。你可以如下实例化此类来定义一个数字轴:

//Defining the axis
NumberAxis yAxis = new NumberAxis();

//Setting labelto the axis
yAxis.setLabel("name of the axis");

Passing Data to XY Charts

所有 XY 图表都表示在 XY 平面中。要绘制图表中的一组点,我们需要指定一系列 XY 坐标。

javafx.scene.chart 包中的 <X,Y> 类是一个类,使用该类,你可以将数据发送到图表中。此类包含一个命名的序列的可观察列表。你可以按如下所示使用 XYChart.Series 类的 getData() 方法获取此列表:

ObservableList list = series.getData();

其中,系列是 XYChart.Series 类的对象。你可以使用 add() 方法将数据添加到此列表,如下所示:

list.add(new XYChart.Data(x-axis data, y-axis data));

这两行可以一起写入,如下所示:

series.getData().add(new XYChart.Data(x-axis data, y-axis data));

Types of Charts in JavaFX

下表对 JavaFX 提供的不同图表(类)进行了说明:

S.No

Chart & Description

1

Pie Chart 饼图是表示为不同颜色的圆形切片的图表。这些切片都有标签,并且图表中表示了对应于每个切片的值。在 JavaFX 中,饼图由名为 PieChart 的类表示。此类属于 javafx.scene.chart 包。

2

Line Chart 折线图或折线图以一系列由直线段连接的数据点(标记)形式显示信息。折线图显示数据如何在相等时间频率下进行更改。在 JavaFX 中,折线图由名为 LineChart 的类表示。此类属于 javafx.scene.chart 包。通过实例化此类,你可以创建 JavaFX 中的 LineChart 节点。

3

Area Chart 面积图用于绘制基于面积的图表。它绘制给定序列点和轴之间的区域。通常,此图表用于比较两个数量。在 JavaFX 中,面积图由名为 AreaChart 的类表示。此类属于 javafx.scene.chart 包。通过实例化此类,你可以创建 JavaFX 中的 AreaChart 节点。

4

Bar Chart 条形图用于使用矩形条形表示分组数据。这些条形的长度描述了相应的值。条形图中的条形可以垂直或水平绘制。在 JavaFX 中,条形图由名为 BarChart 的类表示。此类属于包 javafx.scene.chart 。通过实例化此类,您可以在 JavaFX 中创建 BarChart 节点。

5

Bubble Chart 气泡图用于绘制三维数据。由气泡的大小(半径)表示第三维。在 JavaFX 中,气泡图由名为 BubbleChart 的类表示。此类属于包 javafx.scene.chart 。通过实例化此类,您可以在 JavaFX 中创建 BubbleChart 节点。

6

Scatter Chart 散点图是一种利用笛卡尔平面中绘制的两个变量的值的图表。它通常用于查明两个变量之间的关系。在 JavaFX 中,散点图由名为 ScatterChart 的类表示。此类属于包 javafx.scene.chart 。通过实例化此类,您可以在 JavaFX 中创建 ScatterChart 节点。

7

Stacked Area Chart 在 JavaFX 中,堆积面积图由名为 StackedAreaChart 的类表示。此类属于包 javafx.scene.chart 。通过实例化此类,您可以在 JavaFX 中创建 StackedAreaChart 节点。

8

Stacked Bar Chart 在 JavaFX 中,堆积柱状图由名为 StackedBarChart 的类表示。此类属于包 javafx.scene.chart 。通过实例化此类,您可以在 JavaFX 中创建 StackedBarChart 节点。