10  COM X[61],Y[60]
20  REM X,Y=ARRAYS TO BE PLOTTED. X(61) CONTAINS NO. OF POINTS(60 MAX.)
30  REM U,V WILL CONTAIN SORTED AND SCALED DATA
35  REM HP CONTRIBUTED LIBRARY, 2/75
40  DIM U[60],V[60],W[60]
50  REM W SHOWS PLOT POSITIONS
55  LET Z9=40
60  LET N=X[61]
70  FOR I=1 TO N
80  LET U[I]=X[I]
90  LET V[I]=Y[I]
100  NEXT I
110  REM NOW SORT V, CARRY ALONG CORRESPONDING U
120  FOR I=1 TO N
130  LET K=I
140  FOR J=I TO N
150  IF V[J] <= V[K] THEN 170
160  LET K=J
170  NEXT J
180  LET T=V[I]
190  LET V[I]=V[K]
200  LET V[K]=T
210  LET T=U[I]
220  LET U[I]=U[K]
230  LET U[K]=T
240  NEXT I
250  REM MIN,MAX,RANGE OF U AND V
260  REM H1=MAX U, H2=MAX V,L1=MIN U,L2=MIN V
270  REM R1=RANGE U,R2=RANGE V
280  LET H2=V[1]
290  LET L2=V[N]
300  LET J=K=1
310  FOR I=1 TO N
320  IF U[I]<U[J] THEN 340
330  LET J=I
340  IF U[I]>U[K] THEN 360
350  LET K=I
360  NEXT I
370  LET H1=U[J]
380  LET L1=U[K]
390  LET R1=H1-L1
400  LET R2=H2-L2
410  REM P1=PRINT POSITIONS FOR X. MUST=60 FOR PROPER SPACING.
420  REM P2=PRINT POSITIONS FOR Y. MAY BE CHANGED.
430  LET P1=60
440  LET P2=Z9
450  REM S1=SCALE FACTOR FOR X
460  REM S2=SCALE FACTOR FOR Y
470  LET S1=(P1-1)/R1
480  LET S2=(P2-1)/R2
490  REM NOW REPLACE U AND V WITH SCALED DATA
500  FOR I=1 TO N
510  LET U[I]=INT((U[I]-L1)*S1)+1
520  LET V[I]=INT((V[I]-L2)*S2)+1
530  NEXT I
540  REM NOW START PRINTING
550  LET J=P2
560  PRINT 
570  PRINT 
580  PRINT TAB(11);"I";
590  FOR I=13 TO 72
600  PRINT "-";
610  NEXT I
620  PRINT 
630  LET K=1
640  REM J=SCALED VALUE OF Y ON CURRENT LINE
650  REM K=POSITION IN ARRAY Y BEING WORKED ON
660  FOR I=1 TO P2
670  PRINT TAB(11);"I";
680  IF V[K]#J THEN 1020
690  FOR L=1 TO P1
700  LET W[L]=0
710  NEXT L
720  LET M=U[K]
730  LET W[M]=W[M]+1
740  LET K=K+1
750  IF K>N THEN 780
760  IF V[K]=J THEN 720
770  REM ABOVE PUTS POINTERS TO X'S ON CURRENT LINE
780  LET P8=P1
790  FOR L=1 TO P1
800  IF W[P8]#0 THEN 840
810  LET P8=P8-1
820  NEXT L
830  LET P8=1
840  FOR L=1 TO P8
850  IF W[L]=0 THEN 910
860  IF W[L]=1 THEN 930
870  IF W[L]=2 THEN 950
880  IF W[L]=3 THEN 970
890  PRINT "+";
900  GOTO 980
910  PRINT " ";
920  GOTO 980
930  PRINT "*";
940  GOTO 980
950  PRINT "2";
960  GOTO 980
970  PRINT "3";
980  NEXT L
990  PRINT 
1000  REM ABOVE ACTUALLY PRINTS THE LINE
1010  GOTO 1030
1020  PRINT 
1030  LET J=J-1
1040  NEXT I
1050  PRINT TAB(11);"I";
1060  FOR I=13 TO 72
1070  PRINT "-";
1080  NEXT I
1090  PRINT 
1100  PRINT 
1110  PRINT 
1120  PRINT TAB(11);"NO.OBS.";N
1130  PRINT TAB(11);"MIN. X=";L1
1140  PRINT TAB(11);"MAX. X=";H1
1150  PRINT TAB(11);"MIN. Y=";L2
1160  PRINT TAB(11);"MAX. Y=";H2
1170  PRINT 
1180  PRINT 
1190  PRINT 
1200  PRINT "DO YOU WANT ANOTHER COPY,(1=YES,0=NO)";
1210  INPUT Z9
1220  IF Z9#1 THEN 1300
1230  PRINT 
1240  PRINT "NO OF LINES FOR Y-AXIS,(40 FOR SAME SCALE AS FIRST GRAPH)";
1250  INPUT Z9
1260  IF Z9=P2 THEN 550
1270  IF Z9<1 THEN 1300
1290  GOTO 70
1300  END 
