Advanced Graphics Java

import java.awt.*;
import java.applet.*;
import java.net.URL;
import graph.*;
/*************************************************************************
**
**    Applet example1a
**                                              Version 1.0   January 1996
**
**************************************************************************
**    Copyright (C) 1996 Leigh Brookshaw
**
**    This program is free software; you can redistribute it and/or modify
**    it under the terms of the GNU General Public License as published by
**    the Free Software Foundation; either version 2 of the License, or
**    (at your option) any later version.
**
**    This program is distributed in the hope that it will be useful,
**    but WITHOUT ANY WARRANTY; without even the implied warranty of
**    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**    GNU General Public License for more details.
**
**    You should have received a copy of the GNU General Public License
**    along with this program; if not, write to the Free Software
**    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**************************************************************************
**
**    This is a simple applet that demonstrates how to use the basic features
**    of the Plotting Class library. The data is calculated locally by
**    the applet
**
*************************************************************************/
public class example1a extends Applet {
      Graph2D graph1;
      Graph2D graph2;
      DataSet data1;
      DataSet data2;
      Axis    xaxis1;
      Axis    xaxis2;
      Axis    yaxis1;
      Axis    yaxis2;
      double data[];
      int np = 25;
      URL markersURL;
      Markers markers;
      Panel      panel;
      Label title;
      public void init() {
        int i;
        int j;
        double data[] = new double[2*np];
/*
**      Get the passed parameters
*/
        String st = "TITLE";
        String mfile    = "marker.txt";
/*
**      Create the Graph instance and modify the default behaviour
*/
        graph1 = new Graph2D();
        graph1.drawzero = false;
        graph1.drawgrid = false;
        graph1.borderRight = 0;
        graph1.setDataBackground(new Color(255,230,200));
        graph2 = new Graph2D();
        graph2.drawzero = false;
        graph2.drawgrid = false;
        graph2.borderLeft =  0;
        graph2.setDataBackground(new Color(230,230,230));
/*
**      Build the title
*/
        title = new Label(st, Label.CENTER);
        title.setFont(new Font("TimesRoman",Font.PLAIN,20));
/*
**      Load a file containing Marker definitions
*/
        try {
           markersURL = this.getClass().getResource(mfile);
           markers = new Markers(markersURL);
     /*
     ** Lets add our own marker to the marker list
           */
           int x[] = new int[12];
           int y[] = new int[12];
           boolean d[] = new boolean[12];
           x[0]=-2; y[0]= 4; d[0]=false;
           x[1]= 2; y[1]= 4; d[1]=true;
           x[2]= 0; y[2]= 4; d[2]=false;
           x[3]= 0; y[3]=-4; d[3]=true;
           x[4]=-2; y[4]=-4; d[4]=false;
           x[5]= 2; y[5]=-4; d[5]=true;
           x[6]=-4; y[6]= 0; d[6]=false;
           x[7]= 4; y[7]= 0; d[7]=true;
           x[8]=-4; y[8]= 2; d[8]=false;
           x[9]=-4; y[9]=-2; d[9]=true;
           x[10]=4; y[10]= 2; d[10]=false;
           x[11]=4; y[11]=-2; d[11]=true;
           markers.AddMarker(9,12,d,x,y);
        } catch(Exception e) {
            e.printStackTrace();
           System.out.println("Failed to create Marker URL!");
        }
        
 
        graph1.setMarkers(markers);
        graph2.setMarkers(markers);
        panel = new Panel();
        panel.setLayout( new GridLayout(0,2,0,0) );
        panel.add(graph1);
        panel.add(graph2);
        this.setLayout( new BorderLayout() );
        this.add("North", title);
        this.add("Center", panel);
/*
**      Calculate the first data Set.
*/
        for(i=j=0; i            data[j] = j-np;
            data[j+1] = 60000 * Math.pow( ((double)data[j]/(np-2) ), 2);
        }
        data1 = graph1.loadDataSet(data,np);
        data1.linecolor   =  Color.red;
        data1.linestyle = 1;
        data1.marker    = 9;
        data1.markerscale = 1.0;
        data1.markercolor = new Color(0,0,255);
        data1.legend(150,75,"y=6x10{^4}x^2");
        data1.legendColor(Color.black);
/*
**      Calculate the Second data Set.
*/
        for(i=j=0; i            data[j] = j-np;
            data[j+1] = Math.pow( ((double)data[j]/(np-2) ), 3);
        }
        data2 = graph2.loadDataSet(data, np);
        data2.linecolor   =  new Color(0,255,0);
        data2.marker      = 3;
        data2.markercolor = new Color(100,100,255);
        data2.legend(100,75,"y=x^3");
        data2.legendColor(Color.black);
/*
**      Attach data sets to the Xaxes
*/
        xaxis1 = graph1.createAxis(Axis.BOTTOM);
        xaxis1.attachDataSet(data1);
        xaxis1.setTitleText("Xaxis Left");
        xaxis1.setTitleFont(new Font("TimesRoman",Font.PLAIN,20));
        xaxis1.setLabelFont(new Font("Helvetica",Font.PLAIN,15));
        xaxis2 = graph2.createAxis(Axis.BOTTOM);
        xaxis2.attachDataSet(data2);
        xaxis2.setTitleText("Xaxis Right");
        xaxis2.setTitleFont(new Font("TimesRoman",Font.PLAIN,20));
        xaxis2.setLabelFont(new Font("Helvetica",Font.PLAIN,15));
/*
**      Attach the first data set to the Left Axis
*/
        yaxis1 = graph1.createAxis(Axis.LEFT);
        yaxis1.attachDataSet(data1);
        yaxis1.setTitleText("y=6x10{^4}x^2");
        yaxis1.setTitleFont(new Font("TimesRoman",Font.PLAIN,20));
        yaxis1.setLabelFont(new Font("Helvetica",Font.PLAIN,15));
        yaxis1.setTitleColor( new Color(0,0,255) );
        yaxis1.setTitleRotation(0);
/*
**      Attach the second data set to the Right Axis
*/
        yaxis2 = graph2.createAxis(Axis.RIGHT);
        yaxis2.attachDataSet(data2);
        yaxis2.setTitleText("y=x^3");
        yaxis2.setTitleFont(new Font("TimesRoman",Font.PLAIN,20));
        yaxis2.setLabelFont(new Font("Helvetica",Font.PLAIN,15));
        yaxis2.setTitleColor(new Color(100,100,255) );
        yaxis2.setTitleRotation(0);
      }
      public static void main(String[] a){
         javax.swing.JFrame f = new javax.swing.JFrame();
         Applet app = new example1a();
         app.init();
         
         f.getContentPane().add (app);
         f.pack();
         f.setSize (new Dimension (500, 500));
         f.setVisible(true);
      }
}
           
       
Graph-MathFunctionChart.zip( 190 k)