JMSL Chart Programmer's Guide
Charting 2D Types >> Error Bar Plot  Previous Page  Contents  Next Page

Error Bar Plot

Error bars are used to indicate the estimated error in a measurement. Errors bars indicate the uncertainty in the x and/or y values.

Vertical Error Bars

The most common error bar plot is one in which the errors are in the y-values. This example shows such an error bar plot. Note that the values of the low and high arguments are absolute y values, not relative or percentage values.









(Download Code)
import com.imsl.chart.*;
import java.awt.Color;
import com.imsl.stat.Random;

public class SampleErrorBar extends JFrameChart {

    public SampleErrorBar() {
        Random r = new Random(123457);
        
        Chart chart = getChart();
        AxisXY axis = new AxisXY(chart);
        
        // Generate a random data set, with random errors
        int n = 20;
        double x[] = new double[n];
        double y[] = new double[n];
        double low[] = new double[n];
        double high[] = new double[n];
        for (int k = 0;  k < n;  k++) {
            x[k] = k + 1;
            y[k] = r.nextDouble();
            low[k] = y[k] - 0.25*r.nextDouble();
            high[k] = y[k] + 0.25*r.nextDouble();
        }
        
        ErrorBar data = new ErrorBar(axis, x, y, low, high);
        data.setDataType(data.DATA_TYPE_ERROR_Y | data.DATA_TYPE_MARKER);
        data.setMarkerType(Data.MARKER_TYPE_FILLED_CIRCLE);
        data.setMarkerColor(Color.red);
    }
    
    public static void main(String argv[]) {
        new SampleErrorBar().setVisible(true);
    }
}

Horizontal Error Bars

It is also possible to have horizontal error bars, indicating errors in x, as shown in this example.
















(Download Code)
import com.imsl.chart.*;
import java.awt.Color;
import com.imsl.stat.Random;

public class SampleHorizontalErrorBar extends JFrameChart {

    public SampleHorizontalErrorBar() {
        Random r = new Random(123457);
        
        Chart chart = getChart();
        AxisXY axis = new AxisXY(chart);
        
        // Generate a random data set, with random errors in x
        int n = 20;
        double x[] = new double[n];
        double y[] = new double[n];
        double low[] = new double[n];
        double high[] = new double[n];
        for (int k = 0;  k < n;  k++) {
            x[k] = k;
            y[k] = r.nextDouble();
            low[k] = x[k] - 5.*r.nextDouble();
            high[k] = x[k] + 5.*r.nextDouble();
        }
        
        ErrorBar data = new ErrorBar(axis, x, y, low, high);
        data.setDataType(data.DATA_TYPE_ERROR_X | data.DATA_TYPE_MARKER);
        data.setMarkerType(Data.MARKER_TYPE_FILLED_CIRCLE);
        data.setMarkerColor("red");
    }
    
    public static void main(String argv[]) {
        new SampleHorizontalErrorBar().setVisible(true);
    }
}

Mixed Error Bars

To show errors in both x and y, it is necessary to create both vertical and horizontal error bar objects. This example shows such a chart.

(Download Code)
import com.imsl.chart.*;
import java.awt.Color;
import com.imsl.stat.Random;

public class SampleMixedErrorBar extends JFrameChart {

    public SampleMixedErrorBar() {
        Random r = new Random(123457);
        
        Chart chart = getChart();
        AxisXY axis = new AxisXY(chart);
        
        // Generate a random data set, with random errors in x
        int n = 20;
        double x[] = new double[n];
        double y[] = new double[n];
        double xlow[] = new double[n];
        double xhigh[] = new double[n];
        double ylow[] = new double[n];
        double yhigh[] = new double[n];
        for (int k = 0;  k < n;  k++) {
            x[k] = k;
            y[k] = r.nextDouble();
            xlow[k] = x[k] - r.nextDouble();
            xhigh[k] = x[k] + r.nextDouble();
            ylow[k] = y[k] - 0.25*r.nextDouble();
            yhigh[k] = y[k] + 0.25*r.nextDouble();
        }
        
        ErrorBar dataY = new ErrorBar(axis, x, y, ylow, yhigh);
        dataY.setDataType(dataY.DATA_TYPE_ERROR_Y | dataY.DATA_TYPE_MARKER);
        dataY.setMarkerType(Data.MARKER_TYPE_FILLED_CIRCLE);
        dataY.setMarkerColor("red");
        
        ErrorBar dataX = new ErrorBar(axis, x, y, xlow, xhigh);
        dataX.setDataType(dataY.DATA_TYPE_ERROR_X);
        dataX.setMarkerColor("red");
    }
    
    public static void main(String argv[]) {
        new SampleMixedErrorBar().setVisible(true);
    }
}


©  Visual Numerics, Inc.  All rights reserved.  Previous Page  Contents  Next Page