The AxisLabel node controls the labeling of an axis. The drawing of this node is controlled by the Text Attributes.
If the values along an axis are large, scientific notation is more readable than a decimal format with many zeros. In this example the y-axis is labeled with scientific notation where each number has exactly two fractional digits displayed. This format pattern is "0.00E0". See DecimalFormat for details on number formatting patterns.
If the TextFormat attribute for an axis is an instance of DateFormat, then the axis is scaled and labeled as a date/time axis, instead of as a real axis.
Date information passed to the Date constructor must be a double number representing the number of milliseconds since the standard base time known as “the epoch”, namely January 1, 1970, 00:00:00 GMT. This is used by the constructor for Date.
An additional feature of Date axes is the ability to skip weekends. This feature is often needed for charting stock price data.
To skip weekends it is necessary to adjust the autoscaling for weekdays-only. This is done by setting the attribute SkipWeekends to true. It is also necessary to set a custom transformation, TransformDate, on the axis.
import com.imsl.chart.*;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
public class SampleWeekend extends JFrameChart {
public SampleWeekend() {
Chart chart = getChart();
AxisXY axis = new AxisXY(chart);
Axis1D axisX = axis.getAxisX();
axisX.getAxisLabel().setTextFormat(new SimpleDateFormat("EEE MM/d/yy"));
axisX.getAxisLabel().setTextAngle(90);
// Skip weekends
axisX.setSkipWeekends(true);
axisX.setTransform(Axis1D.TRANSFORM_CUSTOM);
axisX.setCustomTransform(new TransformDate());
GregorianCalendar t[] = {
new GregorianCalendar(2001, GregorianCalendar.OCTOBER, 10),
new GregorianCalendar(2001, GregorianCalendar.OCTOBER, 11),
new GregorianCalendar(2001, GregorianCalendar.OCTOBER, 12),
new GregorianCalendar(2001, GregorianCalendar.OCTOBER, 15),
new GregorianCalendar(2001, GregorianCalendar.OCTOBER, 16)
};
double x[] = new double[5];
for (int k = 0; k < x.length; k++) x[k] = t[k].getTime().getTime();
double y[] = {4, 2, 3, 9, 2};
Data data = new Data(axis, x, y);
data.setLineColor(java.awt.Color.blue);
axis.setViewport(0.2, 0.9, 0.1, 0.7);
}
public static void main(String argv[]) {
new SampleWeekend().setVisible(true);
}
}
Skipping weekends is intended only for data sets where no weekend data exists. It will not give the expected results if the data set contains weekend data.
Any array of strings can be used to label the tick marks using the setLabels(String[]) method. The setLabels(String[]) method sets the Number attribute to the number of strings.
PHONE: 713.784.3131 FAX:713.781.9260 |