curvePic.java
package src;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import java.lang.*;
public class curvePic extends Applet {
static int LEN;
static int Xo,Yo;
static int X2,Y2;
final int X1=50,Y1=30;
int Yunit,Xunit;
float Unit;
String Xstr,Ystr;
String Xstring;
int[] Xval;
int[] Yval;
float[] Y=new float[5];
int[] X=new int[8];
float[] temp=new float[1];
int Xmax,Xmin;
float Ymax,Ymin;
int[] Yvalue;
int[] Xvalue;
int xpar=0;
public void init() {
}
public void start() {
int width=this.getBounds().width;
int height=this.getBounds().height;
setSize(width,height);
Xstr=getParameter("xValue");
Ystr=getParameter("yValue");
Xstring=getParameter("xStr");
Xval=Substr(Xstr);
Yval=Substr(Ystr);
LEN=Xval.length;
Yvalue=new int[LEN];
Xvalue=new int[LEN];
Xo=50;
Yo=height-30;
X2=width-30;
Y2=Yo;
Yunit=(height-100)/4;
Ymax=getMaxVal(Yval);
Ymin=0;
Xmax=getMaxVal(Xval);
Xmin=0;
if(Ymax==Ymin){
Ymin=0;
}
if(Xmax==Xmin){
Xmin=0;
}
float tempy=((float)Ymax-(float)Ymin)/4;
Y[0]=0;
Y[1]=(Ymin+tempy)/100;
Y[2]=(Ymin+tempy*2)/100;
Y[3]=(Ymin+tempy*3)/100;
Y[4]=(Ymax)/100;
xpar=(int)(Xmax/100)+1;
Xunit=(width-100)/xpar;
float Xtempy=0;
X[0]=0;
int xi;
for(xi=1;xi<=xpar;xi++){
X[xi]=xi;
if(xi==xpar){
Xtempy=100;
}
}
Yvalue=getY(Yunit,tempy,Ymin,Yval);
Xvalue=getX(Xunit,Xtempy,Xmin,Xval,width,xpar);
}
public static int[] getY(int unit,float diff,float ymin,int[] value){
int I=0;
int[] result=new int[LEN];
for(I=0;I<LEN;I++)
result[I]=(int)(Yo-((4*unit)/(diff*4))*(value[I]-ymin));
return result;
}
public static int[] getX(int unit,float diff,float xmin,int[] value,int wideth,int xaxis){
int I=0;
int[] result=new int[LEN];
for(I=0;I<LEN;I++)
result[I]=(int)(X2-((unit)/(diff))*(value[I]));
return result;
}
public void paint(Graphics g){
java.text.DecimalFormat df1 = new java.text.DecimalFormat("##0");
g.setColor(Color.red);
g.drawLine(Xo,Yo,X1,Y1);
int I;
for(I=0;I<5;I++){
g.drawLine(Xo-5,Yo-Yunit*I,Xo,Yo-Yunit*I);
g.drawString( df1.format(Y[I]),Xo-38,Yo-Yunit*I);
}
g.drawLine(X1,Y1,X1-5,Y1+5);
g.drawLine(X1,Y1,X1+5,Y1+5);
g.drawLine(Xo,Yo,X2,Y2);
for(I=0;I<=xpar;I++){
g.drawLine(Xo+Xunit*I,Yo,Xo+Xunit*I,Yo+5);
g.drawString(Integer.toString(X[I]),Xo+Xunit*I-6,Yo+20);
}
g.drawLine(X2,Y2,X2-5,Y2-5);
g.drawLine(X2,Y2,X2-5,Y2+5);
g.setColor(Color.blue);
g.drawString("Öµ(value)",X1-50,Y1);
g.drawString(Xstring,X2-20,Y2+20);
for(I=0;I<LEN;I++){
if(Ymax==0){
g.drawLine(Xo,Yo,Xo+Xunit*xpar,Yo);
}
else if(I==LEN-1){
g.drawLine(X2+50-Xvalue[0],Yvalue[0],X2+50-Xvalue[I],Yvalue[I]);
}
else{
g.drawLine(X2+50-Xvalue[I],Yvalue[I],X2+50-Xvalue[I+1],Yvalue[I+1]);
}
}
}
public static int[] Substr(String str){
int I=0;
StringTokenizer st = new StringTokenizer(str,";");
int len=st.countTokens();
int[] val=new int[len];
while(st.hasMoreTokens()){
float midtemp=Float.parseFloat(st.nextToken())*100;
val[I]=Math.round(midtemp);
I++;
}
return val;
}
public static int getMaxVal(int[] Maxval){
int I,result;
result=Maxval[0];
for(I=0;I<Maxval.length;I++){
if(result<Maxval[I])
result=Maxval[I];
}
return result;
}
public static int getMinVal(int[] Minval){
int I,result;
result=Minval[0];
for(I=0;I<Minval.length;I++){
if(result>Minval[I])
result=Minval[I];
}
return result;
}
}
test.html
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<html>
<APPLET height=300 width=500 code=curvePic.class>
<PARAM NAME="xValue" VALUE=2.07;2.17;2.25;2.34;2.45;2.52;2.63;2.71;2.80;2.91;2.99;3.05;3.15;3.23;3.31;3.37;3.43;3.53;3.56;3.62;3.72;3.75;3.81;3.87;3.89;3.96;3.98;4.02;4.05;4.08;4.11;4.12;4.14;4.16;4.17;4.17;4.18;4.19;4.19;4.19;4.20;4.19;4.19;4.19;4.18;4.17;4.10;4.08;4.06;4.04;4.01;3.97;3.93;3.91;3.84;3.79;3.75;3.67;3.65;3.59;3.54;3.49;3.41;3.34;3.30;3.26;3.13;3.10;3.01;2.91;2.87;2.79;2.69;2.62;2.53;2.46;2.35;2.22;2.20;2.05;1.96;1.89;1.77;1.70;1.59;1.49;1.45;1.27;1.20;1.17;.97;.94;.90;.73;.70;.63;.52;.48;.41;.34;.29;.24;.20;.15;.12;.10;.06;.04;.04;.02;.01;.00;.00;.00;.02;.03;.04;.09;.13;.18;.22;.27;.33;.38;.45;.50;.57;.64;.72;.79;.88;.96;1.03;1.13;1.20;1.29;1.39;1.47;1.56;1.66;1.76;1.83;1.93;2.02;>
<PARAM NAME="yValue" VALUE=15;15;15;15;15;100;15;15;16;15;15;15;15;15;15;15;15;16;15;15;15;15;16;16;15;15;15;16;15;15;15;15;16;15;15;15;15;15;15;15;15;15;15;15;15;16;15;16;16;16;18;17;18;19;19;20;19;19;19;20;22;21;20;22;22;23;22;21;21;22;23;23;21;20;21;21;20;20;20;20;20;18;17;18;18;18;17;16;17;16;16;16;15;16;16;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;16;16;16;17;17;18;17;16;16;17;17;18;17;16;16;16;16;16;16;16;16;15;15;15;15;16;15;>
<PARAM NAME="xStr" VALUE=时间(T)>
</APPLET>
</html>