Chapter 14: Contouring

This chapter describes routines for contouring three-dimensional functions of the form Z = F(X,Y). Contours can be generated with the routine CONPTS or with other software packages and plotted with the routine CONCRV or can be calculated and plotted by DISLIN with the routines CONMAT, CONTUR and CONSHD.

14.1 Plotting Contours

C O N C R V

CONCRV plots contours generated by other software packages.

The call is:
CALL CONCRV (XRAY, YRAY, N, ZLEV) - level 2, 3

XRAY, YRAY
are arrays containing the X- and Y-coordinates of a contour line.
N
is the number of points.
ZLEV
is a function value used for labels.
C O N T U R

The routine CONTUR calculates and plots contours of the function Z = F(X,Y).

The call is:
CALL CONTUR (XRAY, N, YRAY, M, ZMAT, ZLEV) - level 2, 3

XRAY
is an array containing X-coordinates.
N
is the dimension of XRAY.
YRAY
is an array containing Y-coordinates.
M
is the dimension of YRAY.
ZMAT
is a matrix of the dimension (N, M) containing function values.
ZLEV
is a function value that defines the contour line to be calculated. ZLEV can be used for labels.
C O N M A T

The routine CONMAT plots contours of the function Z = F(X,Y). The function values correspond to a linear grid in the XY-plane.

The call is:
CALL CONMAT (ZMAT, N, M, ZLEV) - level 2, 3

ZMAT
is a matrix of the dimension (N, M) containing the function values. If XA, XE, YA and YE are the axis limits in GRAF or values defined with the routine SURSZE, the connection of grid points and matrix elements can be described by the formula:

ZMAT(I,J) = F(X,Y) where

X = XA + (I - 1) * (XE - XA) / (N - 1) , I = 1,..,N and

Y = YA + (J - 1) * (YE - YA) / (M - 1) , J = 1,..,M.

N, M
define the dimension of ZMAT.
ZLEV
is a function value that defines the contour line to be calculated. The value can be used for labels.
Additional notes: C O N T R I

The routine CONTRI plots contours from triangulated data that can be calculated by the routine TRIANG from a set of irregularily distributed data points.

The call is:
CALL CONTRI (XRAY, YRAY, ZRAY, N, I1RAY, I2RAY, I3RAY, NTRI, ZLEV) - level 2, 3

XRAY
is an array containing the X-coordinates of data points.
YRAY
is an array containing the Y-coordinates of data points.
ZRAY
is an array containing the Z-coordinates of data points.
N
is the number of data points.
I1RAY, I2RAY, I3RAY
is the Delaunay triangulation of the points (XRAY, YRAY) calculated by the routine TRIANG.
NTRI
is the number of triangles in I1RAY, I2RAY and I3RAY.
ZLEV
is a function value that defines the contour line to be calculated.

14.2 Plotting Filled Contours

C O N S H D

The routine CONSHD plots filled contours of the function Z = F(X,Y). Two algorithms can be selected for contour filling: a cell filling algorithm and a polygon filling algorithm. For a polygon filling, only closed contours can be filled. The algorithm can be defined with the routine SHDMOD.

The call is:
CALL CONSHD (XRAY, N, YRAY, M, ZMAT, ZLVRAY, NLEV) - level 2, 3

XRAY
is an array containing X-coordinates.
N
is the dimension of XRAY.
YRAY
is an array containing Y-coordinates.
M
is the dimension of YRAY.
ZMAT
is a matrix of the dimension (N, M) containing function values.
ZLVRAY
is an array containing the levels. The levels must be sorted in ascending order if cell filling is selected. For polygon filling, the levels should be sorted in such a way that inner contours are plotted last.
NLEV
is the number of levels.
Additional note:
The colours of the filled contours are calculated from a fictive colour bar where the minimum and maximum of the contour levels are used for the lower and upper limits of the colour bar. The scaling of the colour bar can be modified with the routine ZSCALE while a colour bar can be displayed with the routine ZAXIS. If the colours of the filled contours should not be calculated from a colour bar, they can be defined directly with the routine CONCLR.

14.3 Generating Contours

C O N P T S

The routine CONPTS generates contours without plotting. Multiple curves can be returned for one contour level.

The call is:
CALL CONPTS (XRAY, N, YRAY, M, ZMAT, ZLEV, XPTRAY, YPTRAY, MAXPTS, IRAY, MAXCRV, NCURVS) - level 0, 1, 2, 3

XRAY
is an array containing X-coordinates.
N
is the dimension of XRAY.
YRAY
is an array containing Y-coordinates.
M
is the dimension of YRAY.
ZMAT
is a matrix of the dimension (N, M) containing function values.
ZLEV
is a function value that defines the contour line to be calculated.
XPTRAY, YPTRAY
are returned arrays containing the calculated contour. The arrays can contain several curves.
MAXPTS
is the maximal number of points that can be passed to XPTRAY and YPTRAY.
IRAY
is a returned integer array that contains the number of points for each generated contour curve.
MAXCRV
is the maximal number of entries that can be passed to IRAY.
NCURVS
is the returned number of generated curves.
C O N C L R

The routine CONCLR defines colours for filled contour lines.

The call is:
CALL CONCLR (NCRAY, N) - level 1, 2, 3
NCRAY
is an integer array containing colour numbers.
N
is the number of entries in NCRAY.
Example:

The following statements generate from some arrays XRAY, YRAY and ZMAT contours and plot them with the routine CURVE.

      PARAMETER (N=100, MAXPTS=1000,MAXCRV=10)
      REAL ZMAT(N,N),XRAY(N),YRAY(N),XPTS(MAXPTS),YPTS(MAXPTS)
      INTEGER IRAY(MAXCRV)
      .....
      DO I=1,12
        ZLEV=0.1+(I-1)*0.1
        CALL CONPTS(XRAY,N,YRAY,N,ZMAT,ZLEV,XPTS,YPTS,MAXPTS,
     *              IRAY,MAXCRV,NCURVS)
        K=1
        DO J=1,NCURVS
          CALL CURVE(XPTS(K),YPTS(K),IRAY(J))
          K=K+IRAY(J)
        END do
      END DO                                   

14.4 Parameter Setting Routines

L A B E L S

The routine LABELS defines contour labels.

The call is:
CALL LABELS (COPT, 'CONTUR') - level 1, 2, 3

COPT
is a character string defining the labels.
= 'NONE'
means that no labels will be plotted.
= 'FLOAT'
means that the level value will be used for labels.
= 'CONLAB'
means that labels defined with the routine CONLAB will be plotted. Default: COPT = 'NONE'.

Additional note:
The number of decimal places in contour labels can be defined with CALL LABDIG (NDIG, 'CONTUR'). The default value for NDIG is 1.
L A B D I S

The routine LABDIS defines the distance between contour labels.

The call is:
CALL LABDIS (NDIS, 'CONTUR') - level 1, 2, 3

NDIS
is the distance between labels in plot coordinates. Default: NDIS = 500
L A B C L R

The routine LABCLR defines the colour of contour labels.

The call is:
CALL LABCLR (NCLR, 'CONTUR') - level 1, 2, 3

NCLR
is a colour number between -1 and 255. If NCLR = -1, the contour labels will be plotted with the current colour. Default: NCLR = -1
C O N L A B

The routine CONLAB defines a character string which will be used for labels if the routine LABELS is called with the parameter 'CONLAB'.

The call is:
CALL CONLAB (CLAB) - level 1, 2, 3

CLAB
is a character string containing the label. Default: CLAB = ' '.
C O N M O D

The routine CONMOD modifies the appearance of contour labels. By default, DISLIN suppresses the plotting of labels at a position where the contour is very curved. To measure the curvature of a contour for an interval, DISLIN calculates the ratio between the arc length and the length of the straight line between the interval limits. If the quotient is much greater than 1, the contour line is very curved in that interval.

The call is:
CALL CONMOD (XFAC, XQUOT) - level 1, 2, 3

XFAC
defines the length of intervals (>= 0). The curvature of contours will be tested in intervals of the length (1 + XFAC) * W where W is the label length.
XQUOT
defines an upper limit for the quotient of arc length and length of the straight line (> 1). If the quotient is greater than XQUOT, the plotting of labels will be suppressed in the tested interval. Default: (0.5, 1.5).
C O N G A P

The routine CONGAP defines the distance between contour lines and labels.

The call is:
CALL CONGAP (XFAC) - level 1, 2, 3

XFAC
is a real number used as a scaling factor. The distance between contour lines and labels is set to XFAC * NH where NH is the current character height. Default: XFAC = 0.5.
S H D M O D

The routine SHDMOD defines an algorithm used for contour filling.

The call is:
CALL SHDMOD (COPT, 'CONTUR') - level 1, 2, 3

COPT
is a character string defining the algorithm.
= 'CELL'
defines cell filling.
= 'POLY'
defines polygon filling. Default: COPT = 'CELL'.

14.5 Examples


Next | Previous | Contents