JMSL Chart Programmer’s Guide
Log and SemiLog Plot
In a semilog plot the y-axis is logarithmically scaled, while the x-axis is linearly scaled. In a log-log plot both axes are logarithmically scaled.
SemiLog Plot
In this example, data is plotted as lines and markers on a semilog axis.
To set up the y-axis as a logarithmic axis:
*the Transform attribute is set to TRANSFORM_LOG.
*the Density attribute is set to 9. Density is the number of minor ticks between major ticks. It is 9 because base 10 is used and the major tick marks are not counted.
The TextFormat, used by AxisLabel, is changed to use scientific notation (see Text Attributes). The default decimal format would result in large numbers written with many zeros.
View code file
 
import com.imsl.chart.*;
import java.awt.Color;
 
public class SampleSemiLog extends JFrameChart {
 
public SampleSemiLog() {
Chart chart = getChart();
AxisXY axis = new AxisXY(chart);
axis.getAxisY().setTransform(axis.TRANSFORM_LOG);
axis.getAxisY().setDensity(9);
axis.getAxisY().setTextFormat(new java.text.DecimalFormat("0.E0"));
double y[] = {4e2, 6e6, 2e3, 1e4, 8e1};
Data data = new Data(axis, y);
data.setDataType(Data.DATA_TYPE_LINE | Data.DATA_TYPE_MARKER);
data.setLineColor(Color.blue);
data.setMarkerType(Data.MARKER_TYPE_FILLED_SQUARE);
}
public static void main(String argv[]) {
new SampleSemiLog().setVisible(true);
}
}
Log-Log Plot
A log-log plot is set up in much the same way as a semilog plot, except that the changes must be made to both the x-axis and the y-axis. In this example, the changes are made to the axis node and inherited by both the x and y-axis nodes.
View code file
 
import com.imsl.chart.*;
import java.awt.Color;
 
public class SampleLogLog extends JFrameChart {
 
public SampleLogLog() {
Chart chart = getChart();
AxisXY axis = new AxisXY(chart);
axis.setTransform(axis.TRANSFORM_LOG);
axis.setDensity(9);
axis.setTextFormat(new java.text.DecimalFormat("0.E0"));
double x[] = {1e1, 1e2, 1e3, 1e4, 1e5};
double y[] = {4e2, 6e6, 2e3, 1e4, 8e1};
Data data = new Data(axis, x, y);
data.setDataType(Data.DATA_TYPE_LINE | Data.DATA_TYPE_MARKER);
data.setLineColor(Color.blue);
data.setMarkerType(Data.MARKER_TYPE_FILLED_SQUARE);
}
public static void main(String argv[]) {
new SampleLogLog().setVisible(true);
}
}