AxisXY
The
AxisXY node is the basis of many chart types, including scatter, line, area and error bar. Its parent node must be the root
Chart node.
When an
AxisXY node is created, it creates two
Axis1D nodes. They can be obtained by using the methods
AxisXY.getAxisX() and
AxisXY.getAxisY(). Each of the
Axis1D nodes in turn creates additional child nodes, as seen in the diagram below.
Accessor methods can be chained together, so the x-axis line can be retrieved using
axis.getAxisX().getAxisLine()
The code to set the x-axis line to blue is
axis.getAxisX().getAxisLine().setLineColor(Color.blue)
Axis Layout
The layout of an AxisXY chart, such as the one below, is controlled by the attributes Window, Density, and Number.
import com.imsl.chart.*;
import java.awt.Color;
public class Line extends JFrameChart {
public Line() {
Chart chart = getChart();
AxisXY axis = new AxisXY(chart);
chart.getChartTitle().setFontSize(14);
chart.getChartTitle().setFontStyle(3);
chart.getChartTitle().setTitle("Line Chart");
double y1[] = {6, 5, 7, 1};
Data data1 = new Data(axis, y1);
data1.setDataType(Data.DATA_TYPE_LINE|Data.DATA_TYPE_MARKER);
data1.setLineColor(Color.blue);
data1.setLineWidth(2.0);
data1.setMarkerType(Data.MARKER_TYPE_HOLLOW_SQUARE);
data1.setTitle("Blue Line");
double y2[] = {1, 3, 6, 8};
Data data2 = new Data(axis, y2);
data2.setDataType(Data.DATA_TYPE_MARKER);
data2.setMarkerColor(Data.parseColor("darkblue"));
data2.setMarkerType(Data.MARKER_TYPE_FILLED_CIRCLE);
data2.setTitle("Markers");
}
public static void main(String argv[]) {
new Line().setVisible(true);
}
}
Window
Window is a double-array-valued attribute that contains the axis limits. Its value is {min, max}. For the above chart, the value of the Window attribute for the x-axis is [0, 3] and for the y-axis it is [1, 8].
Number
Number is an integer-valued attribute that contains the number of major tick marks along an axis. In an Axis1D node its default value is 5, which is also the value in the above example.
Density
Density is the number of minor tick marks per major tick mark. Its default value is 4, which is also the value in the example.
Transform
The x- and y-axes may be linear, logarithmic, or customized, as specified by the Transform attribute. This attribute can have the values:
TRANSFORM_CUSTOM indicating a custom transformation. The transformation specified by the
CustomTransform attribute is used.
CustomTransform
A customized transformation is used when the
Transform attribute has the value
TRANSFORM_CUSTOM. A custom transform is an object implementing the
Transform interface. It defines a mapping from the interval specified by the
Window attribute to and from the interval
[0,1]. See the section
Custom Transform for more information.
The class
TransformDate implements the
Transform interface. It maps from a regular calendar to one without weekends, which is useful for charting stock prices that are defined only on weekdays.
Autoscale
Autoscaling is used to automatically determine the attribute Window (the range of numbers along an axis) and the attribute Number (the number of major tick marks). The goal is to adjust the attributes so that the data fits on the axes and the axes have “nice” numbers as labels.
Autoscaling is done in two phases. In the first (“input”) phase the actual range is determined. In the second (“output”) phase chart attributes are updated.
Attribute AutoscaleInput
The action of the input phase is controlled by the value of attribute AutoscaleInput in the axis node. It can have one of three values.
AUTOSCALE_DATA scans the values in the
Data nodes that are attached to the axis to determine the data range. This is the default value.
AUTOSCALE_WINDOW uses the value of the Window attribute to determine the data range.
Attribute AutoscaleOutput
The value of the AutoScaleOutput attribute can be the bitwise combination of the following values.
AUTOSCALE_NUMBER updates the value of the
Number attribute. This is the number of major tick marks along the axis.
AUTOSCALE_WINDOW updates the value of the
Window attribute. This is the range of numbers displayed along the axis.
The default is AUTOSCALE_NUMBER ∣ AUTOSCALE_WINDOW; both the attributes Number and Window are adjusted.