Appendix B: Examples B.1 Demonstration of CURVE PROGRAM EXA_1 C USE DISLIN for Fortran 90 PARAMETER (N=301) DIMENSION XRAY(N),Y1RAY(N),Y2RAY(N) PI=3.1415926 FPI=PI/180. STEP=360./(N-1) DO I=1,N XRAY(I)=(I-1)*STEP X=XRAY(I)*FPI Y1RAY(I)=SIN(X) Y2RAY(I)=COS(X) END DO CALL DISINI CALL PAGERA CALL COMPLX CALL AXSPOS(450,1800) CALL AXSLEN(2200,1200) CALL NAME('X-axis','X') CALL NAME('Y-axis','Y') CALL LABDIG(-1,'X') CALL TICKS(10,'XY') CALL TITLIN('Demonstration of CURVE',1) CALL TITLIN('SIN(X), COS(X)',3) CALL GRAF(0.,360.,0.,90.,-1.,1.,-1.,0.5) CALL TITLE CALL CURVE(XRAY,Y1RAY,N) CALL CURVE(XRAY,Y2RAY,N) CALL DASH CALL XAXGIT CALL DISFIN END B.2 Polar Plots PROGRAM EXA_2 C USE DISLIN for Fortran 90! PARAMETER (N=300, M=10) REAL XRAY1(N),YRAY1(N),XRAY2(M),YRAY2(M) XPI=3.1415927 STEP=360./(N-1) DO I=1,N A=(I-1)*STEP A=A*XPI/180 YRAY1(I)=A XRAY1(I)=SIN(5*A) END DO DO I=1,M XRAY2(I)=I YRAY2(I)=I END DO CALL SETPAG('DA4P') CALL METAFL('CONS') CALL DISINI CALL PAGERA CALL HWFONT CALL TITLIN ('Polar Plots', 2) CALL TICKS(3,'Y') CALL AXENDS('NOENDS','X') CALL LABDIG(-1,'Y') CALL AXSLEN(1000,1000) CALL AXSORG(1050,900) CALL POLAR(1.,0., 0.2, 0., 30.) CALL CURVE(XRAY1,YRAY1,N) CALL HTITLE(50) CALL TITLE CALL ENDGRF CALL LABDIG(-1,'X') CALL AXSORG(1050,2250) CALL LABTYP('VERT','Y') CALL POLAR(10.,0.,2.,0.,30.) CALL BARWTH(-5.) CALL POLCRV('FBARS') CALL CURVE(XRAY2,YRAY2,M) CALL DISFIN END B.3 Symbols PROGRAM EXA_2 C USE DISLIN for Fortran 90 CHARACTER*20 CTIT,CSTR*2 CTIT='Symbols' CALL SETPAG('DA4P') CALL DISINI CALL COMPLX CALL PAGERA CALL PAGHDR('H. Michels (',')',2,0) CALL HEIGHT(60) NL=NLMESS(CTIT) CALL MESSAG(CTIT,(2100-NL)/2,200) CALL HEIGHT(50) CALL HSYMBL(120) NY=150 DO I=0,23 IF(MOD(I,4).EQ.0) THEN NY=NY+400 NXP=550 ELSE NXP=NXP+350 END IF IF(I.LT.10) THEN WRITE(CSTR,'(I1)') I ELSE WRITE(CSTR,'(I2)') I END IF NL=NLMESS(CSTR)/2 CALL MESSAG(CSTR,NXP-NL,NY+150) CALL SYMBOL(I,NXP,NY) END DO CALL DISFIN END B.4 Logarithmic Scaling PROGRAM EXA_3 C USE DISLIN for Fortran 90 CHARACTER*60 CTIT,CLAB(3)*5 DATA CLAB/'LOG','FLOAT','ELOG '/ CTIT='Logarithmic Scaling' CALL SETPAG('DA4P') CALL DISINI CALL PAGERA CALL COMPLX CALL AXSLEN(1400,500) CALL NAME('X-axis','X') CALL NAME('Y-axis','Y') CALL AXSSCL('LOG','XY') CALL TITLIN(CTIT,2) DO I=1,3 NYA=2650-(I-1)*800 CALL LABDIG(-1,'XY') IF(I.EQ.2)THEN CALL LABDIG(1,'Y') CALL NAME(' ','X') END IF CALL AXSPOS(500,NYA) CALL MESSAG('Labels: '//CLAB(I),600,NYA-400) CALL LABELS(CLAB(I),'XY') CALL GRAF(0.,3.,0.,1.,-1.,2.,-1.,1.) IF(I.EQ.3) THEN CALL HEIGHT(50) CALL TITLE END IF CALL ENDGRF END DO CALL DISFIN END B.5 Interpolation Methods PROGRAM EXA_4 C USE DISLIN for Fortran 90 DIMENSION X(16), Y(16) CHARACTER*8 CPOL(6),CTIT*60 DATA X/0.,1.,3.,4.5,6.,8.,9.,11.,12.,12.5,13., * 15.,16.,17.,19.,20./ * Y/2.,4.,4.5,3.,1.,7.,2.,3.,5.,2.,2.5,2.,4.,6., * 5.5,4./ * CPOL/'SPLINE','STEM','BARS','STAIRS', * 'STEP','LINEAR'/ NYA/2700/ CTIT='Interpolation Methods' CALL SETPAG('DA4P') CALL DISINI CALL PAGERA CALL COMPLX CALL INCMRK(1) CALL HSYMBL(25) CALL TITLIN(CTIT,1) CALL AXSLEN(1500,350) CALL SETGRF('LINE','LINE','LINE','LINE') DO I=1,6 CALL AXSPOS(350,NYA-(I-1)*350) CALL POLCRV(CPOL(I)) CALL MARKER(0) CALL GRAF(0.,20.,0.,5.,0.,10.,0.,5.) NX=NXPOSN(1.) NY=NYPOSN(8.) CALL MESSAG(CPOL(I),NX,NY) CALL CURVE(X,Y,16) IF(I.EQ.6) THEN CALL HEIGHT(50) CALL TITLE END IF CALL ENDGRF END DO CALL DISFIN END B.6 Line Styles PROGRAM EXA_5 C USE DISLIN for Fortran 90 DIMENSION X(2),Y(2) CHARACTER*6 CTYP(8) DATA X/3.,9./, * CTYP/'SOLID','DOT','DASH','CHNDSH', * 'CHNDOT','DASHM','DOTL','DASHL'/ CALL SETPAG('DA4P') CALL DISINI CALL PAGERA CALL COMPLX CALL CENTER CALL CHNCRV('LINE') CALL NAME('X-axis','X') CALL NAME('Y-axis','Y') CALL TITLIN('Demonstration of CURVE',1) CALL TITLIN('Line Styles',3) CALL GRAF(0.,10.,0.,2.,0.,10.,0.,2.) CALL TITLE DO I=1,8 Y(1)=9.5-I Y(2)=9.5-I NY=NYPOSN(Y(1)) NX=NXPOSN(1.0) CALL MESSAG(CTYP(I),NX,NY-20) CALL CURVE(X,Y,2) END DO CALL DISFIN END B.7 Legends PROGRAM EXA_6 C USE DISLIN for Fortran 90 PARAMETER(N=301) DIMENSION XRAY(N),Y1RAY(N),Y2RAY(N) CHARACTER*14 CBUF FPI=3.1415926/180. STEP=360./(N-1) DO I=1,N XRAY(I)=(I-1)*STEP X=XRAY(I)*FPI Y1RAY(I)=SIN(X) Y2RAY(I)=COS(X) END DO CALL DISINI CALL PAGERA CALL COMPLX CALL AXSPOS(450,1800) CALL AXSLEN(2200,1200) CALL NAME('X-axis','X') CALL NAME('Y-axis','Y') CALL TITLIN('Demonstration of CURVE',1) CALL TITLIN('Legend',3) CALL LABDIG(-1,'X') CALL TICKS(10,'XY') CALL GRAF(0.,360.,0.,90.,-1.,1.,-1.,0.5) CALL TITLE CALL XAXGIT CALL CHNCRV('LINE') CALL CURVE(XRAY,Y1RAY,N) CALL CURVE(XRAY,Y2RAY,N) CALL LEGINI(CBUF,2,7) ! Legend statements NX=NXPOSN(190.) NY=NYPOSN(0.75) CALL LEGPOS(NX,NY) CALL LEGLIN(CBUF,'sin (x)',1) CALL LEGLIN(CBUF,'cos (x)',2) CALL LEGTIT('Legend') CALL LEGEND(CBUF,3) CALL DISFIN END B.8 Shading Patterns (AREAF) PROGRAM EXA_7 C USE DISLIN for Fortran 90 DIMENSION IXP(4),IYP(4),IX(4),IY(4) CHARACTER*60 CTIT,CSTR*2 DATA IX/0,300,300,0/IY/0,0,400,400/ CTIT='Shading Patterns (AREAF)' CALL DISINI CALL PAGERA CALL COMPLX CALL HEIGHT(50) NL=NLMESS(CTIT) NX=(2970-NL)/2 CALL MESSAG(CTIT,NX,200) NX0=335 NY0=350 DO I=1,3 NY=NY0+(I-1)*600 DO J=1,6 NX=NX0+(J-1)*400 II=(I-1)*6+J-1 CALL SHDPAT(II) WRITE(CSTR,'(I2)') II DO K=1,4 IXP(K)=IX(K)+NX IYP(K)=IY(K)+NY END DO CALL AREAF(IXP,IYP,4) NL=NLMESS(CSTR) NX=NX+(300-NL)/2 CALL MESSAG(CSTR,NX,NY+460) END DO END DO CALL DISFIN END B.9 Vectors PROGRAM EXA_8 C USE DISLIN for Fortran 90 DIMENSION IVEC(20) CHARACTER*60 CTIT,CNUM*4 DATA IVEC/0,1111,1311,1421,1531,1701,1911, * 3111,3311,3421,3531,3703,4221,4302, * 4413,4522,4701,5312,5502,5703/ CTIT='Vectors' CALL DISINI CALL PAGERA CALL COMPLX CALL HEIGHT(60) NL=NLMESS(CTIT) NX=(2970-NL)/2 CALL MESSAG(CTIT,NX,200) CALL HEIGHT(50) NX=300 NY=400 DO I=1,20 IF(I.EQ.11) THEN NX=NX+2970/2 NY=400 END IF WRITE(CNUM,'(I4)') IVEC(I) NL=NLMESS(CNUM) CALL MESSAG(CNUM,NX-NL,NY-25 ) CALL VECTOR(NX+100,NY,NX+1000,NY,IVEC(I)) NY=NY+160 END DO CALL DISFIN END B.10 Shading Patterns (PIEGRF) PROGRAM EXA_9 C USE DISLIN for Fortran 90 DIMENSION XRAY(18) CHARACTER*60 CTIT,CBUF*36,CSTR*2 DATA XRAY/18*1./ CTIT='Shading Patterns (PIEGRF)' CALL SETPAG('DA4P') CALL DISINI CALL PAGERA CALL COMPLX CALL AXSPOS(250,2700) CALL AXSLEN(1600,2200) CALL TITLIN(CTIT,3) CALL HEIGHT(50) CALL LEGINI(CBUF,18,2) DO I=1,18 WRITE(CSTR,'(I2)') I-1 CALL LEGLIN(CBUF,CSTR,I) END DO CALL LABELS('NONE','PIE') CALL PIEGRF(CBUF,1,XRAY,18) CALL TITLE CALL DISFIN END B.11 3-D Bar Graph / 3-D Pie Chart PROGRAM EXA_10 C USE DISLIN for Fortran 90! CHARACTER*80 CBUF REAL XRAY(5),Y1RAY(5),Y2RAY(5) INTEGER IC1RAY(5),IC2RAY(5) DATA XRAY/2.,4.,6.,8.,10./,Y1RAY/0.,0.,0.,0.,0./, * Y2RAY/3.2,1.5,2.0,1.0,3.0/ DATA IC1RAY/50,150,100,200,175/, * IC2RAY/50,150,100,200,175/ CALL METAFL('POST') CALL SETPAG('DA4P') CALL DISINI CALL PAGERA CALL HWFONT CALL TITLIN('3-D Bar Graph / 3-D Pie Chart', 2) CALL HTITLE(40) CALL SHDPAT(16) CALL AXSLEN(1500,1000) CALL AXSPOS(300,1400) CALL BARWTH(0.5) CALL BARTYP('3DVERT') CALL LABELS('SECOND','BARS') CALL LABPOS('OUTSIDE','BARS') CALL LABCLR(255,'BARS') CALL GRAF(0.,12.,0.,2.,0.,5.,0.,1.) CALL TITLE CALL COLOR('RED') CALL BARS(XRAY,Y1RAY,Y2RAY,5) CALL ENDGRF CALL SHDPAT(16) CALL LABELS('DATA','PIE') CALL LABCLR(255,'PIE') CALL CHNPIE('NONE') CALL PIECLR(IC1RAY,IC2RAY,5) CALL PIETYP('3D') CALL AXSPOS(300,2700) CALL PIEGRF(CBUF,0,Y2RAY,5) CALL DISFIN END B.12 Surface Plot (SURFUN) PROGRAM EXA_10 C USE DISLIN for Fortran 90 CHARACTER*60 CTIT1,CTIT2 EXTERNAL ZFUN CTIT1='Surface Plot (SURFUN)' CTIT2='F(X,Y) = 2*SIN(X)*SIN(Y)' CALL SETPAG('DA4P') CALL DISINI CALL PAGERA CALL COMPLX CALL AXSPOS(200,2600) CALL AXSLEN(1800,1800) CALL NAME('X-axis','X') CALL NAME('Y-axis','Y') CALL NAME('Z-axis','Z') CALL TITLIN(CTIT1,2) CALL TITLIN(CTIT2,4) CALL VIEW3D(-5.,-5.,4.,'ABS') CALL GRAF3D(0.,360.,0.,90.,0.,360.,0.,90., * -3.,3.,-3.,1.) CALL HEIGHT(50) CALL TITLE CALL SURFUN(ZFUN,1,10.,1,10.) CALL DISFIN END FUNCTION ZFUN(X,Y) FPI=3.14159/180. ZFUN=2*SIN(X*FPI)*SIN(Y*FPI) END B.13 Map Plot PROGRAM EXA_11 C USE DISLIN for Fortran 90 DIMENSION XC(9),YC(9) CHARACTER*12 CSTR(9) DATA XC/-22.,18.,37.5,0.,2.5,12.5,23.5,-3.75, * 14.25/, * YC/64.,59.6,56.,51.5,48.5,42.,38.,40.3, * 50.1/, * CSTR/'Reykjavik','Stockholm','Moskau', * 'London','Paris','Rom','Athen','Madrid', * 'Prag'/ CALL METAFL('POST') CALL DISINI CALL PAGERA CALL HWFONT CALL AXSPOS(500,1850) CALL AXSLEN(2200,1400) CALL LABDIG(-1,'xy') CALL TICKS(1,'xy') CALL NAME('Longitude','x') CALL NAME('Latitude','y') CALL TITLIN('Map Plot',3) CALL INCMRK(-1) CALL LABELS('MAP','xy') CALL PROJCT('LAMBERT') CALL FRAME(3) CALL GRAFMP(-40.,60.,-40.,20.,35.,70.,40.,10.) CALL WORLD CALL CURVMP(XC,YC,9) DO I=1,9 CALL POS2PT(XC(I),YC(I),XP,YP) NXP=XP+30 NYP=YP CALL MESSAG(CSTR(I),NXP,NYP) END DO CALL GRIDMP(1,1) CALL HEIGHT(50) CALL TITLE CALL DISFIN END