9.4 轴属性

9.4.1 概述

使用JFreeChart创建的大部分图表都带有两个轴。X轴和Y轴。当然对于一些图表(比如饼图)根本就没有轴。对于使用轴的图表来说,图区使用Axis对象来管理轴。

9.4.2 获得轴对象引用

在你修改轴的属性之前,我们需要先获得一个轴的引用。图区类CategoryPlot和XYPlot类有两个方法getDomainAxis()和getRangeAxis()分别是获得X轴Y轴对象。这两个方法返回了一个ValueAxis对象的引用,除了在使用CategoryPlot的情况下,X轴使用的是CategoryAxis。代码如下:

// get an axis reference...
CategoryPlot plot = jfreechart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
// change axis properties...
domainAxis.setLabel("Categories");
domainAxis.setLabelFont(someFont);

CategoryAxis和ValueAxis类有许多不同的子类。有时我们需要将轴对象引用转化成具体的子类,为了获取更多具体的属性。如,如果我们想获得y轴为一个对象NumberAxis。代码如下:

XYPlot plot = jfreechart.getXYPlot();
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setAutoRange(false);

9.4.3 设置轴标签

我们使用方法setLabel()可以改变轴的标签。如果我们不想在图表的轴上有标签,那么我们就设置为null即可。

我们可以使用Axis类定义的方法setLabelFont(), setLabelPaint(), 和 setLabelInsets()改变标签的字体、颜色等内容。

9.4.4 改变周边标签显示方向

当图区在左侧或右侧画一个轴(水平轴)时,轴标签会自动旋转90度,以满足小空间的需要。如果我们希望标签也水平,我们需要修改标签的角度:

XYPlot plot = jfreechart.getXYPlot();
ValueAxis axis = plot.getRangeAxis();
axis.setLabelAngle(Math.PI / 2.0);

注意角度的表示使用弧度(PI为180度)。

9.4.5 隐藏刻度标签

隐藏某个轴的刻度标签:

CategoryPlot plot = jfreechart.getCategoryPlot();
ValueAxis axis = plot.getRangeAxis();
axis.setTickLabelsVisible(false);

对于CategoryAxis,方法setTickLabelsVisible(false)隐藏种类标签。

9.4.6 隐藏刻度符号

隐藏某个轴的刻度符号:

XYPlot plot = jfreechart.getXYPlot();
Axis axis = plot.getDomainAxis();
axis.setTickMarksVisible(false);

注意category轴没有刻度符号。

9.4.7 设置刻度尺寸

默认的,数值和日期会自动选择一个刻度尺寸,以便刻度标签不会重复显示。但我们也可以使用setTickUnit()方法设置我们自己的饿刻度单位。

9.4.8 指定标准的数值刻度单位

在NumberAxis类中,方法允许我们设置我们自己的刻度单位替代系统自动选择刻度danwi的机制。最普通的应用就是我们有一个仅仅显示整数的数轴。在实例中,我们不想让0.5或者0.25作为刻度单位。在NumberAxis类中有一个静态方法返回一系列的标准整数刻度单位:

XYPlot plot = jfreechart.getXYPlot();
NumberAxis axis = (NumberAxis) plot.getRangeAxis();
TickUnitSource units = NumberAxis.createIntegerTickUnits();
axis.setStandardTickUnits(units);

如果我们想控制标准的刻度单位时,我们可以自由定制自己的TickUnits集合。

9.4.9 指定标准的日期刻度单位

类似于上一节内容,DateAxis类也有一个setStandardTickUnits()方法,来设置我们的刻度单位。方法createStandardDateTickUnits()为DateAxis返回了一个缺省的集合。同时我们也可以创建我们自己的标准日期刻度单位。