Main Frame

This page uses frames, but your browser doesn't support them.

Follow this link to see a non-frames version of this page.


Preface

This page uses frames, but your browser doesn't support them.


Preface

SIMPLEPLOT is a library of Fortran functions for plotting graphs. A wide variety of graphs can be drawn as well as more general pictures and diagrams. Facilities are biased towards the graphical representation of data, in particular, scientific data. SIMPLEPLOT was originally designed for programmers who wanted to draw pictures of their data with minimum programming effort. Although it still achieves this goal, SIMPLEPLOT has developed into a much more powerful tool for professional software engineers. Six separate sections constitute the complete SIMPLEPLOT Mark 2:
  • The basic package for conventional graph plotting -- x-yplots and polar plots.
  • Additional functions for three-dimensional plotting -- contour maps and surface pictures of 3-D data.
  • Additional functions for presentation graphics -- bar charts, histograms and pie charts.
  • Volumes -- perspective pictures of 4-dimensional data.
  • Maps -- for representing data based on geographical coordinate systems.
  • ViSualization -- for full colour modelling of functions of two, three and four variables. SIMPLEPLOT-PLUS refers to a SIMPLEPLOT library which is made up from the first three sections and contains many additional facilities.

    Graphics device interface

    The SIMPLEPLOT library is independent of any single graphics system but, rather than describe SIMPLEPLOT as either device independent or device dependent, it is more appropriate to describe it as device sensitive with a device independent interface for the user. This means that the user is protected from having to know about the features of the target output device, but SIMPLEPLOT makes as much use of these features as possible. The SIMPLEPLOT library is usually supplied with the BUSS Single Entry Point (S.E.P.) device driver system; this includes interfaces to a large number of graphics devices, and the range of validated device drivers is constantly being extended. Moreover, SIMPLEPLOT can address graphics devices directly, or through a separate low-level graphics systems (eg. GKS, CGM) or graphics languages (eg. PostScript).


Access to Examples

This page uses frames, but your browser doesn't support them.


Access to Primer Examples

This page uses frames, but your browser doesn't support them.


Access to Primer Examples

Example Set 1. Primer Examples

Primer 1. | Simple plotting
Primer 2. | A simple x-y plot
Primer 3. | A scattergram
Primer 4. | Different shaded areas for open curves
Primer 5. | Curves from user-defined functions
Primer 6. | A simple polar plot
Primer 7. | A part-cycle polar plot
Primer 8. | Straight lines from point to point
Primer 9. | Marking individual points
Primer 10. | Range plotting
Primer 11. | Line diagrams
Primer 12. | Circles
Primer 13. | Boxes and arrows
Primer 14. | A simple bar chart
Primer 15. | Alternative bar chart formats
Primer 16. | Alternative types of bar chart
Primer 17. | A simple histogram
Primer 18. | Shading and the range of histogram scales
Primer 19. | Alternative histograms and the direction of scales
Primer 20. | A simple pie chart
Primer 21. | Pie chart label contents and omitting segments
Primer 22. | Pie chart labels and exploding segments
Primer 23. | Drawing axes
Primer 24. | Drawing keys and captions
Primer 25. | Multi-line titles and polynomials
Primer 26. | Curve fitting by regression
Primer 27. | Multiple scales on an x-y plot
Primer 28. | Missing data
Primer 29. | Marker symbols
Primer 30. | Text in pictures - alternative character sets
Primer 31. | Text in pictures - controlling number format
Primer 32. | Bar chart
Primer 33. | Bar chart and pie chart
Primer 34. | Circular chart
Primer 35. | Thickened lines


Example prim01

This page uses frames, but your browser doesn't support them.


Example prim01

Primer 1. Simple plotting

Picture of Output
  SUBROUTINE PRIM01
  use spmodule

  INTEGER, PARAMETER :: NARR = 8
  REAL, DIMENSION(NARR) :: XARR = (/0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0/)
  REAL, DIMENSION(NARR) :: YARR = (/0.0, 0.8, 0.5, 0.14, 0.8, 0.8, 0.35, 0.9/)
!
  CALL BeginPage('A Simple X/Y Curve')
  CALL SCALES(0.0, 10.0, 1, 0.0, 1.0, 1)   ! specify plotting scales
  CALL AXES7('x-axis', 'y-axis')           ! start picture & draw pair of axes
  CALL BRKNCV(XARR, YARR, NARR, 0)         ! draw curve of data
  CALL ENDPAG                              ! terminate plotting
  END SUBROUTINE PRIM01


Example prim02

This page uses frames, but your browser doesn't support them.


Example prim02

Primer 2. A simple x-y plot

Picture of Output
  SUBROUTINE PRIM02
  use spmodule

  REAL, PARAMETER :: X1=1.0, DX=1.0
  INTEGER, PARAMETER :: NARR=10, NSTEP=1
  REAL, DIMENSION(NARR) :: DARR = (/0.9,0.7,1.0,0.6,0.8,0.4,0.2,0.3,0.5,0.1/)
!
  CALL BeginPage('A simple curve with markers')
  CALL SCALES(0.0, 10.0, 1, 0.0, 1.0, 1)  ! specify plotting scales
  CALL AXES7('Distance', 'Speed')         ! start picture & draw pair of axes
  CALL BRKNAR(X1, DX, DARR, NARR, 0)      ! draw curve of data
  CALL MARKAR(X1, DX, DARR, NARR, 1, NSTEP) ! marker symbols @ each data value
  CALL ENDPAG
  END SUBROUTINE PRIM02


Example prim03

This page uses frames, but your browser doesn't support them.


Example prim03

Primer 3. A scattergram

Picture of Output
  SUBROUTINE PRIM03
  use spmodule

  INTEGER, PARAMETER :: NARR=100, NSTEP=1
  REAL, DIMENSION(NARR) :: XARR, YARR
  INTEGER I
!
  CALL BeginPage('A log-scale scattergram')
  OPEN(UNIT=10, FILE='prim03.dat', STATUS='OLD')  ! read (x, y) data from file
  DO I=1, NARR
    READ(10, *)XARR(I), YARR(I)
  ENDDO
  CLOSE(10)
  CALL SCALES(0.0, 10.0, 1, 1.0, 100.0, 2)   ! specify plotting scales
  CALL AXES7('x-axis', 'y-axis')             ! start picture & draw framework
  CALL MARKCV(XARR, YARR, NARR, 3, NSTEP)    ! draw symbol at every point
  CALL CVTYPE(4)                     ! plot linear regression curve through data
  CALL BRKNCV(XARR, YARR, NARR, 0)
  CALL ENDPAG
  END SUBROUTINE PRIM03


Example prim04

This page uses frames, but your browser doesn't support them.


Example prim04

Primer 4. Different shaded areas for open curves

Picture of Output
  SUBROUTINE PRIM04
  use spmodule

  INTEGER, PARAMETER :: NARR = 8
  REAL, PARAMETER :: X1=1.0, DX=1.0
  REAL, DIMENSION(NARR) :: DARR = (/0.0, 0.4, 0.5, 0.62, 0.72, 0.78, 0.85, 0.9/)
!
  CALL BeginPage('Shading under a curve')
  CALL GROUP(2, 1)        ! specify layout with 2 pictures side-by-side
  CALL SCALES(0.0, REAL(NARR+1), 1, 0.0, 1.0, 1)   ! specify plotting scales
  CALL AXES7('Time', 'Efficiency')     ! start first picture & draw axes
  CALL SHTYPE(0)
  CALL SHDEAR(X1, DX, DARR, NARR, 7)
  CALL AXES7('Time', 'Efficiency')     ! start second picture & draw axes
  CALL SHTYPE(2)
  CALL SHDEAR(X1, DX, DARR, NARR, 7)
  CALL ENDPAG
  END SUBROUTINE PRIM04


Example prim05

This page uses frames, but your browser doesn't support them.


Example prim05

Primer 5. Curves from user-defined functions

Picture of Output
  SUBROUTINE PRIM05
  use spmodule

  CALL BeginPage('Curves from user functions')
  CALL SCALES(0.0, 4.0, 1, 0.0, 2.0, 1)    ! specify plotting scales
  CALL AXES7('x', 'F(x)')                  ! start picture & draw pair of axes
  CALL BRKNFN(FUN1, -1)            ! draw broken (dashed) curve of function FUN1
  CALL FNRNGE(0.1, 4.0)            ! draw shaded curve of FUN2 avoiding X=0.0
  CALL SHDEFN(FUN2, 11)
  CALL ENDPAG

CONTAINS

REAL FUNCTION FUN1(X)
  REAL, INTENT(IN) :: X

  FUN1=2.0*ABS(SIN(X))
END FUNCTION FUN1

REAL FUNCTION FUN2(X)
  REAL, INTENT(IN) :: X
!
  FUN2=0.2/ABS(X)
END FUNCTION FUN2

  END SUBROUTINE PRIM0


Example prim06

This page uses frames, but your browser doesn't support them.


Example prim06

Primer 6. A simple polar plot

Picture of Output
  SUBROUTINE PRIM06
  use spmodule

  REAL, PARAMETER :: RADIUS=8.5, THETA1=0.0, DTHETA=50.0
  INTEGER, PARAMETER :: NARR=8, NSTEP=1
  REAL, DIMENSION(NARR) :: RARR = (/0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0/)
  CALL BeginPage('A simple Polar plot')
  CALL POLAR7(RADIUS, 'r-axis')    ! start picture, draw polar framework
  CALL MARKAR(THETA1, DTHETA, RARR, NARR, 4, NSTEP)  ! draw marker symbols
  CALL BRKNAR(THETA1, DTHETA, RARR, NARR, 0)         ! plot solid curve of data
  CALL ENDPAG
  END SUBROUTINE PRIM06


Example prim07

This page uses frames, but your browser doesn't support them.


Example prim07

Primer 7. A part-cycle polar plot

Picture of Output
  SUBROUTINE PRIM07
  use spmodule

  REAL, PARAMETER :: RSTART=1.0, RSTOP=9.0, THSTRT=320.0, THSTOP=220.0, &
                     RADIUS=5.0
  CALL BeginPage('A part-cycle Polar plot')
! specify plotting scales in degrees
  CALL EQSCAL(RSTART, RSTOP, THSTRT, THSTOP, 1)
! start picture & draw polar framework
  CALL POLAR7(RADIUS, 'r values')
! change coordinate interpretation to polar in radians
  CALL COORDS(2)
  CALL SHDEFN(FUN, 3)
  CALL ENDPAG
!
CONTAINS

REAL FUNCTION FUN(THETA)
  REAL, INTENT(IN) :: THETA
  FUN=7.0 * ABS(SIN(4.0*THETA)) + 1.0
END FUNCTION FUN

  END SUBROUTINE PRIM0


Example prim08

This page uses frames, but your browser doesn't support them.


Example prim08

Primer 8. Straight lines from point to point

Picture of Output
  SUBROUTINE PRIM08
  use spmodule

  INTEGER NCURVE, JCURVE, I, NPTS
  REAL X, Y
!
  OPEN(UNIT=10, FILE='prim08.dat', STATUS='OLD')
  CALL BeginPage('Join points with straight lines')
  CALL SCALES(0.0, 5.0, 1, -10.0, 10.0, 1)   ! specify plotting scales
  CALL AXES7('Distance', 'Temperature')      ! start picture & draw pair of axes
  READ(10, *)NCURVE
  DO JCURVE=1, NCURVE                        ! read & plot data sets
    READ(10, *)NPTS                          ! read # points in set
    DO I=1, NPTS
      READ(10, *)X, Y                        ! read pair of coordinates
      CALL BRKNPT(X, Y, JCURVE-1)            ! draw straight line to point
    ENDDO
    CALL BREAK                               ! raise pen after curve is complete
  ENDDO
  CALL ENDPAG
  CLOSE(10)
  END SUBROUTINE PRIM08


Example prim09

This page uses frames, but your browser doesn't support them.


Example prim09

Primer 9. Marking individual points

Picture of Output
  SUBROUTINE PRIM09
  use spmodule

  INTEGER, PARAMETER :: NPTS=22
  REAL, PARAMETER :: XEYE=22.0, YEYE=14.0
  CHARACTER*10 STR
  INTEGER I
  REAL, DIMENSION(NPTS) :: XDUCK = (/                                 &
     0.0, 4.0, 8.0, 12.0, 16.4, 17.3, 18.5, 22.0, 26.0, 29.0, 27.2,   &
     21.1, 22.8, 25.1, 24.2, 20.0, 16.0, 12.0, 8.0, 4.2, 1.3, 0.0/)
  REAL, DIMENSION(NPTS) :: YDUCK = (/                                 &
     8.8, 7.1, 8.0, 9.6, 9.4, 12.0, 16.1, 17.0, 13.9, 13.2, 11.5,     &
     10.5, 8.0, 5.1, 1.9, 0.9, 0.8, 1.0, 1.8, 2.9, 6.0, 8.8/)
  CALL BeginPage('Marking and numbering points')                  ! set up layout & scales
  CALL GROUP(2, 2)
  CALL EQSCAL(-2.0, 31.0, 1.0, 17.0, 0)
! start 1st picture, mark points with symbol & caption
  CALL NEWPIC
  DO I=1, NPTS-1
    CALL KNUMB(I, STR)
    CALL CP7PT(XDUCK(I), YDUCK(I), 3, STR)
  ENDDO
! start 2nd picture, mark points with symbol & draw curve
  CALL NEWPIC
  DO I=1, NPTS-1
    CALL MARKPT(XDUCK(I), YDUCK(I), 4)
  ENDDO
  CALL BRKNCV(XDUCK, YDUCK, NPTS, 0)
! start 3rd picture, draw curve through points, mark eye
  CALL NEWPIC
  CALL BRKNCV(XDUCK, YDUCK, NPTS, 0)
  CALL MARKPT(XEYE, YEYE, 58)
! start 4th picture, shade area & mark eye
  CALL NEWPIC
  CALL SHDECV(XDUCK, YDUCK, NPTS, 5)
  CALL MARKPT(XEYE, YEYE, 35)
  CALL ENDPAG
  END SUBROUTINE PRIM09


Example prim10

This page uses frames, but your browser doesn't support them.


Example prim10

Primer 10. Range plotting

Picture of Output
  SUBROUTINE PRIM10
  use spmodule

  INTEGER, PARAMETER :: NEXP=7
  INTEGER I
  REAL YMEAN
  REAL, DIMENSION(NEXP) :: YARR1=(/70.0, 50.0, 48.0, 40.0, 20.0, 30.0, 50.0/)
  REAL, DIMENSION(NEXP) :: YARR2=(/84.0, 70.0, 65.0, 60.0, 50.0, 70.0, 70.0/)
  CALL BeginPage('Simple range plotting')
  CALL SCALES(0.0, REAL(NEXP+0.5), 1, 0.0, 100.0, 1)  ! specify plotting scales
  CALL AXES7('Experiment', 'Germination(%)') ! start picture & draw pair of axes
  DO I=1, NEXP                           ! plot range & mean for each experiment
    YMEAN=(YARR1(I)+YARR2(I))/2
    CALL MARKPT(REAL(I), YMEAN, 1)
    CALL RANGE(REAL(I), YARR1(I), REAL(I), YARR2(I))
  ENDDO
  CALL ENDPAG
  END SUBROUTINE PRIM10


Example prim11

This page uses frames, but your browser doesn't support them.


Example prim11

Primer 11. Line diagrams

Picture of Output
  SUBROUTINE PRIM11
  use spmodule

  INTEGER, PARAMETER :: NPTS=9
  INTEGER I
  REAL, DIMENSION(NPTS):: DARR = (/4.0, 4.6, 5.2, 6.3, 7.5, 5.4, 3.1, 2.0, 0.8/)
  CALL BeginPage('Line diagrams')
  CALL GROUP(2, 1)
! specify plotting scales, start 1st picture & draw axes
  CALL SCALES(0.0, 10.0, 1, 0.0, 8.0, 1)
  CALL AXES7('X', 'Y')
! plot data as vertical lines
  DO I=1, NPTS
    CALL DRAWLN(REAL(I), DARR(I))
  ENDDO
! start 2nd picture, specify scale, draw polar framework
  CALL POLAR7(8.5, 'r-values')
  DO I=1, NPTS
    CALL DRAWLN(DARR(I), REAL(I)*30.0)      ! plot data as radial lines
  ENDDO
  CALL ENDPAG
  END SUBROUTINE PRIM11


Example prim12

This page uses frames, but your browser doesn't support them.


Example prim12

Primer 12. Circles

Picture of Output
  SUBROUTINE PRIM12
  use spmodule

  CALL BeginPage('Circles on different scales')
  CALL GROUP(2, 1)
! specify similar linear plotting scales
  CALL EQSCAL(0.0, 10.0, 0.0, 10.0, 0)
! start first picture & draw axes
  CALL AXES7('x-linear', 'y-linear')
! draw one shaded & two unshaded circles
  CALL SHDECL(5.0, 5.0, 3.0, 4)
  CALL BRKNCL(2.0, 2.0, 1.9, 0)
  CALL BRKNCL(3.0, 8.0, 5.0, -2)
  CALL PERIM                                      ! draw perimeter
! specify non-linear scales
  CALL SCALES(0.1, 10.0, 2, 0.1, 10.0, 3)
! start second picture & draw axes
  CALL AXES7('x-logarithmic', 'y-normal probability')
! draw one shaded & two unshaded circles
  CALL SHDECL(5.0, 5.0, 3.0, 4)
  CALL BRKNCL(2.0, 2.0, 1.9, 0)
  CALL BRKNCL(3.0, 8.0, 5.0, -2)
  CALL PERIM                                       ! draw perimeter
  CALL ENDPAG
  END SUBROUTINE PRIM12


Example prim13

This page uses frames, but your browser doesn't support them.


Example prim13

Primer 13. Boxes and arrows

Picture of Output
  SUBROUTINE PRIM13
  use spmodule

  CALL BeginPage('Boxes and arrows')
  CALL GROUP(2, 1)
! specify proportional Cartesian scales
  CALL EQSCAL(0.0, 10.0, 0.0, 10.0, 0)
  CALL AXES7('x', 'y')                        ! start first picture & draw axes
  CALL SHDEBX(1.0, 1.0, 9.0, 9.0, 4)          ! draw shaded box
! draw shaded box using rubout (if available)
  CALL SHDEBX(7.0, 7.0, 3.5, 2.5, 0)
  CALL BRKNBX(0.0, 0.0, 10.0, 10.0, 0)        ! draw box at scale limits
! specify polar scales & start second picture
  CALL EQSCAL(0.0, 10.0, 0.0, 360.0, 1)
  CALL NEWPIC
  CALL BRKNCL(0.0, 0.0, 8.0, 4)               ! draw circle & two arrows
  CALL ARROW(0.0, 0.0, 7.75, 90.0)
  CALL ARROW(0.0, 0.0, 6.5, -30.0)
  CALL SHDEBX(1.0, 180.0, 6.0, 270.0, 4)      ! draw shaded polar 'box'
  CALL COORDS(0)                              ! draw box at scale limits
  CALL BRKNBX(-10.0, -10.0, 10.0, 10.0, 0)
  CALL ENDPAG
  END SUBROUTINE PRIM13


Example prim14

This page uses frames, but your browser doesn't support them.


Example prim14

Primer 14. A simple bar chart

Picture of Output
  SUBROUTINE PRIM14
  use spmodule

  INTEGER, PARAMETER :: NARR=5, NSETS=1
  REAL, DIMENSION(NARR, NSETS) :: D2ARR = RESHAPE((/                     &
                 1486.0, 1301.0, 1499.0, 1658.0, 1723.0/), (/NARR,NSETS/))
  CHARACTER*4 :: LABARR(NARR) = (/'1969', '1970', '1971', '1972', '1973'/)
  DATA D2ARR/1486.0, 1301.0, 1499.0, 1658.0, 1723.0/
  CALL BeginPage('A simple Bar chart')
! start new picture
  CALL NEWPIC
! draw bar chart
  CALL BARCHT(D2ARR, LABARR, NARR, NSETS, 'Demolitions', 'Year')
  CALL ENDPAG
  END SUBROUTINE PRIM14


Example prim15

This page uses frames, but your browser doesn't support them.


Example prim15

Primer 15. Alternative bar chart formats

Picture of Output
  SUBROUTINE PRIM15
  use spmodule

  INTEGER, PARAMETER :: NARR=8, NSETS=2
  REAL, DIMENSION(NARR, NSETS) :: POP
  CHARACTER*3 :: AGE(NARR) = (/'0  ', '10 ', '20 ', '30 ', '40 ', '50 ',  &
    '60 ', '70+'/)
  DATA POP/                    &
     826.1, 654.3, 752.3, 570.9, 348.0, 548.4, 519.5, 337.2,  &
     787.2, 625.6, 742.3, 625.2, 564.0, 815.5, 723.9, 559.6/
  CALL BeginPage('Formatting bar charts')
  CALL GROUP(2, 1)
! start new picture, specify details & draw 1st barchart
  CALL NEWPIC
  CALL BARFMT('Preceding', 35)
  CALL BARCHT(POP, AGE, NARR, 1, 'population', 'age')
! start new picture, specify details & draw 2nd barchart
  CALL NEWPIC
  CALL BARFMT('Following', 70)
  CALL BARRNG(0.0, 900.0)
  CALL BARCHT(POP, AGE, NARR, NSETS, 'population', 'age')
  CALL ENDPAG
  END SUBROUTINE PRIM15


Example prim16

This page uses frames, but your browser doesn't support them.


Example prim16

Primer 16. Alternative types of bar chart

Picture of Output
  SUBROUTINE PRIM16
  use spmodule

  INTEGER, PARAMETER :: NARR=8, NSETS=2
  REAL, DIMENSION(NARR, NSETS) :: POP
  CHARACTER*3 :: AGE(NARR) = (/'0  ', '10 ', '20 ', '30 ', '40 ', '50 ',  &
     '60 ', '70+'/)
  DATA POP/                   &
     826.1, 654.3, 752.3, 570.9, 348.0, 548.4, 519.5, 337.2, &
     787.2, 625.6, 742.3, 625.2, 564.0, 815.5, 723.9, 559.6/
  CALL BeginPage('Clustered, stacked and pyramid bar charts')
  CALL GROUP(2, 3)
! default - vertical, clustered
  CALL NEWPIC
  CALL BARCHT(POP, AGE, NARR, NSETS, 'population', 'age')
! horizontal, clustered
  CALL NEWPIC
  CALL BARTYP('Horizontal', 1)
  CALL BARCHT(POP, AGE, NARR, NSETS, 'population', 'age')
! vertical, stacked
  CALL NEWPIC
  CALL BARTYP('Vertical', 2)
  CALL BARCHT(POP, AGE, NARR, NSETS, 'population', 'age')
! horizontal, stacked
  CALL NEWPIC
  CALL BARTYP('Horizontal', 2)
  CALL BARCHT(POP, AGE, NARR, NSETS, 'population', 'age')
! vertical, pyramid
  CALL NEWPIC
  CALL BARTYP('Vertical', 3)
  CALL BARCHT(POP, AGE, NARR, NSETS, 'population', 'age')
! horizontal, pyramid
  CALL NEWPIC
  CALL BARTYP('Horizontal', 3)
  CALL BARCHT(POP, AGE, NARR, NSETS, 'population', 'age')
  CALL ENDPAG
  END SUBROUTINE PRIM16


Example prim17

This page uses frames, but your browser doesn't support them.


Example prim17

Primer 17. A simple histogram

Picture of Output
  SUBROUTINE PRIM17
  use spmodule

  INTEGER, PARAMETER :: NDARR=30
  REAL, PARAMETER :: X1=0.0, DX=0.0
  REAL, DIMENSION(NDARR) :: DARR = (/                             &
     31.0, 56.0, 63.0, 45.0, 56.0, 73.0, 80.0, 54.0, 48.0, 51.0,  &
     63.0, 67.0, 52.0, 58.0, 75.0, 47.0, 42.0, 60.0, 50.0, 55.0,  &
     65.0, 39.0, 42.0, 55.0, 57.0, 66.0, 64.0, 71.0, 44.0, 54.0/)
  CALL BeginPage('A simple histogram')
! start new picture
  CALL NEWPIC
! draw axis framework & histogram
  CALL HSTGRM(DARR, NDARR, X1, DX, 'Scores', 'Frequency')
  CALL ENDPAG
  END SUBROUTINE PRIM17


Example prim18

This page uses frames, but your browser doesn't support them.


Example prim18

Primer 18. Shading and the range of histogram scales

Picture of Output
  SUBROUTINE PRIM18
  use spmodule

  INTEGER, PARAMETER :: NARR=214
  REAL, PARAMETER :: X1=0.0, DX=250.0
  INTEGER I
  REAL, DIMENSION(NARR) :: PEAKS
  CALL BeginPage('A shaded histogram')
! read frequency data from file
  OPEN(UNIT=10, FILE='prim15.dat', STATUS='OLD')
  READ(10, *) (PEAKS(I), I=1, NARR)
  CLOSE(10)
! start new picture & draw box around it
  CALL NEWPIC
  CALL PERIM
! specify range of histogram scales & shading pattern
  CALL HSTRNG(0.0, 3500.0, 0.0, 40.0)
  CALL HSTSHD(4)
! draw histogram
  CALL HSTGRM(PEAKS, NARR, X1, DX, 'Lake District Hills (feet)', 'Frequency')
  CALL ENDPAG
  END SUBROUTINE PRIM18


Example prim19

This page uses frames, but your browser doesn't support them.


Example prim19

Primer 19. Alternative histograms and the direction of scales

Picture of Output
  SUBROUTINE PRIM19
  use spmodule

  INTEGER, PARAMETER :: NARR=214
  REAL, PARAMETER :: X1=0.0, DX=200.0
  INTEGER I
  REAL, DIMENSION(NARR) :: PEAKS
  CALL BeginPage('A cumulative histogram')
! read frequency data from file
  OPEN(UNIT=10, FILE='prim15.dat', STATUS='OLD')
  READ(10, *) (PEAKS(I), I=1, NARR)
  CLOSE(10)
  CALL NEWPIC                          ! start new picture & draw box around it
  CALL PERIM
! specify type of histogram, direction of scales & shading pattern
  CALL HSTTYP(3)
  CALL HSTDIR(.TRUE., .FALSE.)
  CALL HSTSHD(8)
! draw histogram
  CALL HSTGRM(PEAKS, NARR, X1, DX, 'Lake District Hills (feet)',  &
              'Cumulative Frequency')
  CALL ENDPAG
  END SUBROUTINE PRIM19


Example prim20

This page uses frames, but your browser doesn't support them.


Example prim20

Primer 20. A simple pie chart

Picture of Output
  SUBROUTINE PRIM20
  use spmodule

  INTEGER, PARAMETER :: NSEGS=6
  CHARACTER*7, DIMENSION(NSEGS) :: LABARR = (/                     &
     'Sue    ', 'Adam   ', 'Aelred ', 'Phillip', 'Gladys ', 'John   '/)
  REAL, DIMENSION(NSEGS) :: DARR = (/ 83.0, 45.0, 152.0, 41.0, 72.0, 58.0/)
  CALL BeginPage('A simple Pie chart')
! start new picture
  CALL NEWPIC
! draw pie chart
  CALL PIECHT(DARR, LABARR, NSEGS)
  CALL ENDPAG
  END SUBROUTINE PRIM20


Example prim21

This page uses frames, but your browser doesn't support them.


Example prim21

Primer 21. Pie chart label contents and omitting segments

Picture of Output
  SUBROUTINE PRIM21
  use spmodule

  INTEGER, PARAMETER :: NSEGS=6
  CHARACTER*7, DIMENSION(NSEGS) :: NAMES = (/                 &
     'Sue    ', 'Adam   ', 'Aelred ', 'Phillip', 'Gladys ', 'John   '/)
  REAL, DIMENSION(NSEGS) :: FREQ = (/83.0, 45.0, 152.0, 41.0, 72.0, 58.0/)
  CALL BeginPage('Label contents and omiting segments')
  CALL GROUP(2, 1)
! start new picture, specify details & draw first pie chart
  CALL NEWPIC
  CALL PIINCL(.TRUE., .TRUE., .FALSE.)
  CALL PIECHT(FREQ, NAMES, NSEGS)
! start new picture, specify details & draw second pie chart
  CALL NEWPIC
  CALL PIPOSL(2)
  CALL PITILT(3, 2)
  CALL SGOMIT(.TRUE., 3)
  CALL PIINCL(.FALSE., .TRUE., .FALSE.)
  CALL PIECHT(FREQ, NAMES, NSEGS)
  CALL ENDPAG
  END SUBROUTINE PRIM21


Example prim22

This page uses frames, but your browser doesn't support them.


Example prim22

Primer 22. Pie chart labels and exploding segments

Picture of Output
  SUBROUTINE PRIM22
  use spmodule

  INTEGER, PARAMETER :: NSEGS=6
  CHARACTER*7, DIMENSION(NSEGS) :: NAMES = (/                 &
     'Sue    ', 'Adam   ', 'Aelred ', 'Phillip', 'Gladys ', 'John   '/)
  REAL, DIMENSION(NSEGS) :: FREQ = (/83.0, 45.0, 152.0, 41.0, 72.0, 58.0/)
  CALL BeginPage('Exploding segments')
  CALL GROUP(2, 1)
! start new picture, specify details & draw first pie chart
  CALL NEWPIC
  CALL PIPOSL(3)
  CALL PIINCL(.FALSE., .FALSE., .TRUE.)
  CALL PIECHT(FREQ, NAMES, NSEGS)
! start new picture, specify details & draw second pie chart
  CALL NEWPIC
  CALL PIPOSL(4)
  CALL PIDIAM(3.0)
  CALL PIBOXL(.FALSE.)
  CALL SGEXPL(30, 1)
  CALL SGEXPL(15, 5)
  CALL PIECHT(FREQ, NAMES, NSEGS)
  CALL ENDPAG
  END SUBROUTINE PRIM22


Example prim23

This page uses frames, but your browser doesn't support them.


Example prim23

Primer 23. Drawing axes

Picture of Output
  SUBROUTINE PRIM23
  use spmodule

  REAL, PARAMETER :: RADIUS=10.0
  CALL BeginPage('Different axes')
  CALL GROUP(2, 2)
! non-linear Cartesian axes
  CALL SCALES(1.0, 100.0, 2, 0.0, 10.0, 1)
  CALL AXLBLV('XCartesian', 1)
  CALL AXES7 ('X-axis', 'Y-axis')
! individual Cartesian axes
  CALL NEWPIC
  CALL AXLBLV('XCartesian', 3)
  CALL AXGRID('XCartesian', 2, -1)
  CALL AXIS7 ('XCartesian', 'X-axis')
  CALL AXSBDV('YCartesian', 1.0, 2.0)
  CALL AXIS7 ('YCartesian', 'Y-axis')
! polar axes using COORDS & POLAR7
  CALL COORDS(2)
  CALL CHMASK(.TRUE.)
  CALL AXLBGP('APolar', 0)
  CALL AXGRID('*Polar', 1, -1)
  CALL AXLBLV('APolar', 1)
  CALL POLAR7(RADIUS, ' ')
! polar axes using EQSCAL & AXES7
  CALL EQSCAL(0.0, RADIUS, 0.0, 60.0, 1)
  CALL AXLBLV('APolar', 2)
  CALL AXLBGP('RPolar', 0)
  CALL AXES7 ('R-axis (theta=0)', 'R-axis (theta=60)')
  CALL ENDPAG
  END SUBROUTINE PRIM23


Example prim24

This page uses frames, but your browser doesn't support them.


Example prim24

Primer 24. Drawing keys and captions

Picture of Output
  SUBROUTINE PRIM24
  use spmodule

  INTEGER, PARAMETER :: NPTS=8
  REAL,PARAMETER :: X1=1.0, DX=1.0
  REAL, DIMENSION(NPTS) :: YARR1 = (/                           &
     0.10, 0.63, 2.50, 10.00, 28.18, 63.10, 70.79, 28.18/)
  REAL, DIMENSION(NPTS) :: YARR2 = (/                           &
     0.32, 2.51, 10.00, 31.62, 89.13, 100.00, 50.00, 10.00/)
  CALL BeginPage('Keys')
! specify software shading & its characteristics
  CALL SHSET(1)
  CALL SHDESC(45, 45, 135, 135, 1, 0.05)
! specify linear vs logarithmic plotting scales
  CALL SCALES(0.0, 9.0, 1, 0.1, 100.0, 2)
! start picture & draw pair of axes
  CALL AXES7('Power', 'Volume')
! draw key box for 3 lines of 7 characters (max)
  CALL DEFKEY(2, 'B', 'R', 3, 7)
! plot curve of X vs YARR1 with shading pattern 2
  CALL SHDEAR(X1, DX, YARR1, NPTS, 2)
! plot curve of X vs YARR2 with shading pattern 3
  CALL SHDEAR(X1, DX, YARR2, NPTS, 3)
! enter caption in key area
  CALL ADDJST('Centre')
  CALL ADDCP7('Experimental Data')
! write keys to shading patterns
  CALL ADDJST('Left')
  CALL SHDEK7(2, 'Data 5')
  CALL SHDEK7(3, 'Data 12')
  CALL ENDPAG
  END SUBROUTINE PRIM24


Example prim25

This page uses frames, but your browser doesn't support them.


Example prim25

Primer 25. Multi-line titles and polynomials

Picture of Output
  SUBROUTINE PRIM25
  use spmodule

  REAL, DIMENSION(4) :: PARR = (/24.0, -35.0, 12.0, -1.0/)

  CALL BeginPage('Polynomial functions')
! specify character masking
  CALL CHMASK(.TRUE.)
! specify plotting scales
  CALL SCALES(0.0, 9.0, 1, -50.0, 30.0, 1)
! start picture & draw pair of axes
  CALL AXES7('x-values', 'Polynomial')
! pass polynomial coefficients to SIMPLEPLOT
  CALL POLIN(PARR, 4)
! draw shaded curve of polynomial function
  CALL SHDEFN(MYPOLY, 3)
! write 2 lines of title under the picture, centred
  CALL TEXTLF(1.1)
  CALL TITLE7('Under', 'Centre', 'Polynomial Function')
  CALL TITLE7('Under', 'Centre', 'y=24-35*x+12*x**2-x**3')
  CALL ENDPAG

CONTAINS

REAL FUNCTION MYPOLY(X)
  REAL, INTENT(IN) :: X
  MYPOLY = POLY(X)            ! Calls SIMPLEPLOT function
END FUNCTION MYPOLY

  END SUBROUTINE PRIM25


Example prim26

This page uses frames, but your browser doesn't support them.


Example prim26

Primer 26. Curve fitting by regression

Picture of Output
  SUBROUTINE PRIM26
  use spmodule

  INTEGER, PARAMETER :: NPTS=9
  REAL, PARAMETER :: YMIN=33.0
  INTEGER I
  REAL, DIMENSION(NPTS) :: XARR = (/                             &
     0.0, 0.3175, 0.6350, 0.9525, 1.270, 1.5875, 1.9050, 2.2225, 2.54/)
  REAL, DIMENSION(NPTS) :: Y1ARR = (/                            &
     142.0, 110.4, 81.6, 65.0, 54.0, 46.5, 41.3, 37.9, 36.1/)
  REAL, DIMENSION(NPTS) :: Y2ARR
  REAL, DIMENSION(2) :: PARR

  CALL BeginPage('Curve fitting by regression')               ! specify group of pictures - two across & one down
  CALL GROUP(2, 1)
! specify plotting scales linear vs logarithmic
  CALL SCALES(0.0, 3.5, 1, 1.0, 120.0, 2)
! start picture & draw pair of axes
  CALL AXES7('Gap width (mm)', 'Electric field increase')
! subtract saturation constant (YMIN) & plot
  DO I=1, NPTS
    Y2ARR(I)=Y1ARR(I)-YMIN
  ENDDO
  CALL MARKCV(XARR, Y2ARR, NPTS, 2, 1)
! compute & draw linear regression on log scale
  CALL CVTYPE(4)
  CALL BRKNCV(XARR, Y2ARR, NPTS, 0)
! get linear regression coefficients
  CALL POLOUT(PARR)
! change vertical scale to linear for original data
  CALL YSCALE(30.0, 150.0, 1)
! start second picture & draw pair of axes
  CALL AXES7('Gap width (mm)', 'Electric field (volts/mm)')
! draw the curve of function YFUN
  CALL BRKNFN(YFUN, 0)
! mark data points with symbols
  CALL MARKCV(XARR, Y1ARR, NPTS, 2, 1)
! draw title
  CALL TITLE7('Higher', 'Left', 'Curve Fitting by regression')
  CALL ENDPAG
!
CONTAINS

REAL FUNCTION YFUN(X)
  REAL, INTENT(IN) :: X
  YFUN=33.0+10.0**MYPOLY(X)
END FUNCTION YFUN

REAL FUNCTION MYPOLY(X)
  REAL, INTENT(IN) :: X
  MYPOLY = POLY(X)            ! Calls SIMPLEPLOT function
END FUNCTION MYPOLY

  END SUBROUTINE PRIM26


Example prim27

This page uses frames, but your browser doesn't support them.


Example prim27

Primer 27. Multiple scales on an x-y plot

Picture of Output
  SUBROUTINE PRIM27
  use spmodule

  INTEGER, PARAMETER :: NCH=24, NSH=15
  REAL, DIMENSION(NCH) :: CHOUGH = (/                             &
     6.0, 6.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 5.0, 5.0, 4.0,  &
     4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0/)
  REAL, DIMENSION(NSH) :: SHEEP = (/                              &
     0.0, 5.0, 10.0, 13.0, 20.0, 24.0, 45.0, 60.0, 56.0, 73.0,    &
    98.0, 118.0, 105.0, 95.0, 90.0/)
  CALL BeginPage('Multiple y-scales')
! specify scales & axis characteristics
  CALL SCALES(1958.0, 1985.0, 1, 0.0, 15.0, 1)
  CALL AXLBJS('*Cartesian', 'Centre')
  CALL AXRNGE('YCartesian', 0.0, 10.0)
! start picture & draw axes
  CALL AXES7('Year', 'Pairs of Choughs')
! specify straight lines & plot 'curves'
  CALL CVTYPE(3)
  CALL BRKNAR(1960.0, 1.0, CHOUGH, NCH, 0)
  CALL MARKAR(1960.0, 1.0, CHOUGH, NCH, 58, 1)
! specify new y-scale & y-axis characteristics
  CALL YSCALE(0.0, 120.0, 1)
  CALL AXLOCN('YCartesian', 'Following')
  CALL AXRNGE('YCartesian', 0.0, 0.0)
! draw second y-axis & plot second curve
  CALL AXIS7('YCartesian', 'Number of Sheep')
  CALL BRKNAR(1969.0, 1.0, SHEEP, NSH, -1)
  CALL MARKAR(1969.0, 1.0, SHEEP, NSH, 2, 1)
! define key area & add entries
  CALL DEFKEY(1, 'Top', 'Left', 2, 7)
  CALL BOTHK7(0, 58, 'Choughs')
  CALL BOTHK7(-1, 2, 'Sheep')
! draw perimeter
  CALL PERIM
  CALL ENDPAG
  END SUBROUTINE PRIM27


Example prim28

This page uses frames, but your browser doesn't support them.


Example prim28

Primer 28. Missing data

Picture of Output
  SUBROUTINE PRIM28
  use spmodule

  INTEGER, PARAMETER :: NPTS=61
  REAL, PARAMETER :: XSTART=0.0, XSTOP=60.0
  REAL, DIMENSION(NPTS) :: YARR = (/                                    &
     5.9, 3.4, 5.2, 2.6, 5.1, 5.8, 4.5, 2.6, 6.6, 6.6, 3.5, -1.0, 3.9,  &
     3.0, 6.4, 3.8, 3.3, 5.5, 4.4, 8.6, 5.3, 5.6, 4.4, 4.4, 6.4, -1.0,  &
     -1.0, -1.0, 4.7, -1.0, 4.2, -1.0, -1.0, -1.0, -1.0, -1.0, 4.6,     &
     3.5, -1.0, -1.0, 5.9, 3.1, 5.7, 7.4, 6.2, 5.2, 6.1, 3.3, 5.0, 6.0, &
     7.2, 5.5, 5.3, 4.4, 5.6, 1.9, 4.1, 6.3, 6.5, 5.0, 5.2/)
! specify layout
  CALL BeginPage('Missing data')
  CALL GROUP(2, 1)
  CALL XSCALE(XSTART, XSTOP, 1)     ! specify X scale
  CALL PIC(YARR, NPTS)              ! plot curve including 'missing data' points
  CALL NODATA(-1.0)
  CALL PIC(YARR, NPTS)              ! plot curve excluding 'missing data' points
  CALL ENDPAG
!
  END SUBROUTINE PRIM28
  SUBROUTINE PIC(YARR, NARR)
    INTEGER, INTENT(IN) :: NARR
    REAL, DIMENSION(NARR), INTENT(IN) :: YARR
    CHARACTER*20 CAP
    REAL DATMIN, DATMAX
    REAL YSTART, YSTOP, YDIV
! find limits of data
    CALL LIMEXC(YARR, NARR, DATMIN, DATMAX)
! convert data limits to whole subdivisions
    CALL KSCALE(DATMIN, DATMAX, 0.0, YSTART, YSTOP, YDIV)
! specify y-scale & axis characteristics
    CALL YSCALE(YSTART, YSTOP, 1)
    CALL AXSBDV('YCartesian', 1.0, YDIV)
    CALL AXCRSS('XCartesian', YSTART)
! start new picture & draw axes
    CALL AXES7('Time (secs)', 'Sampled value')
! plot data & title
    CALL BRKNAR(0.0, 1.0, YARR, NARR, 0)
    CALL MARKAR(0.0, 1.0, YARR, NARR, 1, 1)
    WRITE(CAP, '(F4.1, A3, F4.1)') DATMIN, ' to', DATMAX
    CALL TITLE7('Top', 'Right', 'Data range: '//CAP)
  END SUBROUTINE PIC


Example prim29

This page uses frames, but your browser doesn't support them.


Example prim29

Primer 29. Marker symbols

Picture of Output
  SUBROUTINE PRIM29
  use spmodule

  INTEGER, PARAMETER :: NE=5
  INTEGER I
  REAL, DIMENSION(NE) :: EVRGRN = (/151.76, 415.36, 47.39, 642.75, 63.71/)
  CHARACTER*5, DIMENSION(NE) :: ENAMES=(/ &
       'Larch', 'Pine ', 'Fir  ', 'Sitka', 'Other'/)
  CALL BeginPage('Marker symbols')
! specify scales & start new picture
  CALL SCALES(1.0, REAL(NE), 1, 0.0, 1.0, 1)
  CALL NEWPIC
! specify axis characteristics, draw axis & add labels
  CALL AXLBJS('XCartesian', 'Centre')
  CALL AXCLR('XCartesian', 1)
  CALL AXIS7('XCartesian', 'Conifers')
  CALL AXTXT7('XCartesian', 1.0, 1.0, ENAMES, NE)
! draw marker symbols
  CALL MKMASK(.TRUE.)
  DO I=1, NE
    CALL MKSIZE(EVRGRN(I)/500.0)
    CALL MARKPT(REAL(I), 0.5, 54)
  ENDDO
! define caption area & add caption as a title
  CALL DEFCAP(1, 'Over', 'Centre', 1, 30)
  CALL ADDCP7('Area of high forest in Britain')
! draw perimeter
  CALL PERIM
  CALL ENDPAG
  END SUBROUTINE PRIM29


Example prim30

This page uses frames, but your browser doesn't support them.


Example prim30

Primer 30. Text in pictures - alternative character sets

Picture of Output
  SUBROUTINE PRIM30
  use spmodule

  CALL BeginPage('Software fonts')
! start picture
  CALL NEWPIC
! specify caption characteristics & define caption area
  CALL BOXCAP(.TRUE.)
  CALL ADDJST('Centre')
  CALL CHSET(8)                ! Select font for longest line
  CALL DEFCAP(1, 'Centre', 'Centre', 20, 40)
! add blank lines & captions
  CALL BLNKKY
  CALL CHSET(7)
  CALL THCKMG('Text', 2.5)      ! Thicken up text for title
  CALL ADDCP7('*** Today''s menu ***')
  CALL BLNKKY
! first course
  CALL THCKMG('*', 1.0)
  CALL ADDCP7('-- APPETISERS --')
  CALL BLNKKY
  CALL CHSET(8)
  CALL ADDCP7('Whitebait & tartar sauce')
  CALL ADDCP7('or Tortilla chips & cheese dip')
  CALL ADDCP7('or Garlic mushrooms')
  CALL BLNKKY
! second course
  CALL CHSET(7)
  CALL ADDCP7('-- MAIN COURSE --')
  CALL BLNKKY
  CALL CHSET(8)
  CALL ADDCP7('Trout')
  CALL ADDCP7('or Pork in cider')
  CALL ADDCP7('served with ratatouille & parsnips')
  CALL BLNKKY
! third course
  CALL CHSET(7)
  CALL ADDCP7('-- SWEET --')
  CALL BLNKKY
  CALL CHSET(8)
  CALL ADDCP7('Toffee pudding')
  CALL ADDCP7('Cheese & biscuits')
  CALL ENDPAG
  END SUBROUTINE PRIM30


Example prim31

This page uses frames, but your browser doesn't support them.


Example prim31

Primer 31. Text in pictures - controlling number format

Picture of Output
  SUBROUTINE PRIM31
  use spmodule

  INTEGER NROW
  REAL X
  CALL BeginPage('Controling number format')
  CALL BOXCAP(.TRUE.)
  CALL NEWPIC
  CALL DEFCAP(1, 'Centre', 'Centre', 20, 65)
! add column headings
  CALL PUTCP7(2, 4, 'x')
  CALL PUTCP7(2, 11, 'x*x')
  CALL PUTCP7(2, 17, 'sqrt(x)')
  CALL PUTCP7(2, 26, 'exp(x)')
  CALL PUTCP7(2, 36, 'sin(x)')
  CALL PUTCP7(2, 45, 'cos(x)')
  CALL PUTCP7(2, 52, 'sin(x)+cos(x)')
! enter numbers row-by-row
  DO NROW=4, 19
    X = REAL(NROW-4)
    CALL ENTRY('Following', 1, 3, 'D', 'D', NROW, 2, X)
    CALL ENTRY('Following', 3, 0, 'D', 'D', NROW, 11, X*X)
    CALL ENTRY('E', 1, 2, 'D', 'D', NROW, 17, SQRT(X))
    CALL ENTRY('G', 2, 2, ' ', '+', NROW, 26, EXP(X))
    CALL ENTRY('Following', 1, 3, '+', '+', NROW, 36, SIN(X))
    CALL ENTRY('Following', 1, 3, ' ', ' ', NROW, 45, COS(X))
    CALL ENTRY('Following', 1, 3, 'D', 'D', NROW, 55, SIN(X)+COS(X))
  ENDDO
  CALL ENDPAG
!
  END SUBROUTINE PRIM31
!
! subroutine to draw table entry
  SUBROUTINE ENTRY(CHFM, NINT, NDEC, SIGN, ESIGN, IROW, ICOL, XVAL)
    CHARACTER, INTENT(IN) :: CHFM, SIGN, ESIGN
    INTEGER, INTENT(IN) :: NINT, NDEC, IROW, ICOL
    REAL, INTENT(IN) :: XVAL
!
    CHARACTER STRING*20
! specify format of number & sign
    CALL FIGFMT(CHFM, NINT, NDEC)
    CALL FIGSGN(SIGN, ESIGN)
! convert number to string & enter in table
    CALL KREAL(XVAL, STRING)
    CALL PUTCP7(IROW, ICOL, STRING)
  END SUBROUTINE ENTRY


Example prim32

This page uses frames, but your browser doesn't support them.


Example prim32

Primer 32. Bar chart

Picture of Output
  SUBROUTINE PRIM32
  use spmodule

  INTEGER, PARAMETER :: NCLASS=4, NPARTY=4
  REAL, DIMENSION(NPARTY, NCLASS) :: VOTES
  CHARACTER*2, DIMENSION(NCLASS) :: CLSLAB =(/'AB', 'C1', 'C2', 'DE'/)
  CHARACTER*7, DIMENSION(NPARTY) ::  PARTY =(/ &
     'Con    ', 'Lab    ', 'Lib/SDP', 'Others '/)
  DATA VOTES/ &
     54.0, 13.0, 30.0, 3.0, &
     47.0, 24.0, 26.0, 2.0, &
     42.0, 35.0, 21.0, 2.0, &
     31.0, 46.0, 20.0, 3.0/
  CALL BeginPage('Bar charts and axes')
! specify picture & axis characteristics
  CALL BOXPIC(.TRUE.)
  CALL AXLBGP('NB', 0)
  CALL AXLBJS('NB', 'Centre')
  CALL AXGRID('NB', 1, -1)
  CALL AXGRID('LB', 1, 0)
! specify bar chart characteristics
  CALL BARFMT('Centre', 50)
  CALL BARRNG(0.0, 55.0)
! start new picture
  CALL NEWPIC
! draw key to shading patterns in a blanked area
  CALL SHKEYS('Top', 'Right', CLSLAB, NCLASS, 'Class code')
! draw bar chart
  CALL BARCHT(VOTES, PARTY, NPARTY, NCLASS, 'Votes (%)', 'Party')
! add title
  CALL TITLE7('Top', 'Centre', 'How Britain voted (1987)')
  CALL ENDPAG
  END SUBROUTINE PRIM32


Example prim33

This page uses frames, but your browser doesn't support them.


Example prim33

Primer 33. Bar chart and pie chart

Picture of Output
  SUBROUTINE PRIM33
  use spmodule

  INTEGER, PARAMETER :: NCOLS=9, NTUBES=3
  CHARACTER*6, DIMENSION(NCOLS) :: NAMES = (/                              &
     'White ', 'Lilac ', 'Red   ', 'Pink  ', 'Brown ', 'Orange', 'Yellow', &
     'Blue  ', 'Green '/)
  REAL, DIMENSION(NCOLS, NTUBES) :: FREQ
  REAL, DIMENSION(NCOLS) :: TOTAL = (/                                     &
     19.0, 10.0, 12.0, 13.0, 14.0, 11.0, 18.0, 17.0, 6.0/)
  INTEGER, DIMENSION(NCOLS) :: ICOLS = (/-1, 10, 2, 9, 3, 8, 4, 5, 7/)
  DATA FREQ/                              &
     8.0, 3.0, 7.0, 1.0, 4.0, 5.0, 8.0, 4.0, 2.0, 5.0, 2.0, 1.0, 5.0, 7.0, &
     1.0, 6.0, 10.0, 2.0, 6.0, 5.0, 4.0, 7.0, 3.0, 5.0, 4.0, 3.0, 2.0/
  CALL BeginPage('Bar chart and Pie chart')
  CALL GROUP(2, 1)
! specify bar chart characteristics
  CALL AXLOCN('NB', 'Preceding')
  CALL BARTYP('Horizontal', 2)
  CALL SHPATT(-1, 2)
! start picture & draw bar chart
  CALL NEWPIC
  CALL BARCHT(FREQ, NAMES, NCOLS, 3, 'Frequency', ' ')
! specify pie chart characteristics
  CALL MARGDV('Other')
  CALL FIGFMT('Following', 2, 1)
  CALL SQSHAD(ICOLS, NCOLS)
  CALL PIPOSL(3)
  CALL PIINCL(.TRUE., .FALSE., .TRUE.)
! start picture & draw pie chart
  CALL NEWPIC
  CALL PIECHT(TOTAL, NAMES, NCOLS)
! draw title
  CALL TITLE7('Higher', 'Centre', 'Colours in 3 tubes of Smarties')
  CALL ENDPAG
  END SUBROUTINE PRIM33


Example prim34

This page uses frames, but your browser doesn't support them.


Example prim34

Primer 34. Circular chart

Picture of Output
  SUBROUTINE PRIM34
  use spmodule

  INTEGER, PARAMETER :: NARR=25
  REAL, DIMENSION(NARR) :: TEMP = (/                                      &
     2.5, 2.0, 2.0, 2.0, 1.5, 0.0, 1.25, 2.0, 4.5, 6.5, 8.0, 13.5, 16.0,  &
     18.5, 18.0, 17.0, 14.5, 12.5, 12.0, 10.5, 10.0, 8.5, 7.75, 5.0, 0.0/)
  CHARACTER*6, DIMENSION(4) :: SEASON=(/'Winter', 'Spring', 'Summer', 'Autumn'/)
  CALL BeginPage('Circular charts')
! create a closed curve
  TEMP(NARR)=TEMP(1)
! specify scales & polar coordinate convention
  CALL EQSCAL(-5.0, 25.0, 0.0, 360.0, 1)
  CALL POLZER(-5.0, 0, 90.0, -1)
! start new picture
  CALL NEWPIC
! specify axis characteristics & draw each axis
  CALL CHMASK(.TRUE.)
  CALL AXGRID('RPolar', 1, -1)
  CALL AXLBJS('RPolar', 'Following')
  CALL AXIS7 ('RPolar', 'Temperature')
  CALL AXCLR ('APolar', 1)
  CALL AXGRID('APolar', 1, 0)
  CALL AXIS7 ('APolar', ' ')
! add angular axis labels
  CALL AXLBJS('APolar', 'B')
  CALL AXTXT7('APolar', 0.0, 90.0, SEASON, 4)
! specify curve type & software shading
  CALL CVTYPE(2)
  CALL SHSET(1)
! draw curve & shade area enclosed by it
  CALL SHDEAR(0.0, 15.0, TEMP, NARR, 4)
! add title
  CALL TITLE7('Bottom', 'Centre', 'A Circular Graph')
  CALL ENDPAG
  END SUBROUTINE PRIM34


Example prim35

This page uses frames, but your browser doesn't support them.


Example prim35

Primer 35. Thickened lines

Picture of Output
  SUBROUTINE PRIM35
  use spmodule

  INTEGER, PARAMETER :: NMONTH=12, NX=20, NVOL=NMONTH*NX, N100=NMONTH*NX/2+1
  INTEGER I
  CHARACTER*3, DIMENSION(NMONTH) :: MONTHS = (/ &
     'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan',  &
     'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'/)
  REAL, DIMENSION(NVOL ) :: VOLUME
  REAL, DIMENSION(N100) :: FTSE
  OPEN(UNIT=10, FILE='prim35.dat', STATUS='OLD')
  READ(10, *)VOLUME, FTSE
  CLOSE(10)
  CALL BeginPage('Thickening lines')
! specify shading & general plotting characteristics
  DO I=1, NX
    CALL SHPATT(2, I)
  ENDDO
  CALL AXLBGP('**', 0)
  CALL AXLBJS('**', 'Centre')
  CALL THCKMG('Lines', 3.0)
! start new picture & define key
  CALL NEWPIC
  CALL DEFKYW(6)
  CALL BOXKY(.FALSE.)
  CALL DEFKEY(1, 'Top', 'Left', 2, 8)
! draw bar chart
  CALL AXLOCN('NBar', 'Following')
  CALL AXSBDV('NBar', 0.0, 5.0)
  CALL BARFMT('Centre', 100)
  CALL BARRNG(5.0, 30.0)
  CALL BARCHT(VOLUME, MONTHS, NMONTH, NX, 'Volume (millions)', ' ')
  CALL SHDEK7(2, 'Volume')
! draw x-y plot with a thick line
  CALL SCALES(0.0, REAL(N100-1), 1, 1500.0, 1750.0, 1)
  CALL AXIS7('YCartesian', 'FTSE100')
  CALL BRKNAR(0.0, 1.0, FTSE, N100, 0)
  CALL LINEK7(0, 'FTSE100')
! draw title & terminate plotting
  CALL TITLE7('Top', 'Centre', 'UK Market Daily Volume')
  CALL ENDPAG
  END SUBROUTINE PRIM35


Access to 3D Examples

This page uses frames, but your browser doesn't support them.


Access to 3D Examples

Example Set 2. 3D Examples

3D 1. | Shaded contour map
3D 2. | Line contours
3D 3. | Individual contours
3D 4. | Contour maps of tartan-gridded data
3D 5. | Contour maps of a user-defined function
3D 6. | A simple surface picture
3D 7. | Isometric drawing
3D 8. | Surface pictures of tartan-gridded data
3D 9. | Surface pictures of a user-defined function
3D 10. | Surface pictures of ungridded data
3D 11. | A simple waterfall chart
3D 12. | Drawing individual waterfall curves
3D 13. | Distinguishing between data levels on a waterfall chart
3D 14. | Conversion on waterfall charts
3D 15. | Scales on contour maps and map keys
3D 16. | Contour maps of ungridded data
3D 17. | Extra labelling on contour maps
3D 18. | Sequences on contour maps
3D 19. | Labelling contour curves
3D 20. | Polar contour map
3D 21. | Waterfall charts and cascade surface pictures
3D 22. | Shaded contour maps and surfaces
3D 23. | Drawing a cross section


Example 3d01

This page uses frames, but your browser doesn't support them.


Example 3d01

3D 1. Shaded contour map

Picture of Output
  SUBROUTINE Cont1
  use spmodule

  INTEGER, PARAMETER :: NX = 10, NY = 10
  REAL, DIMENSION(NX, NY) :: z2Arr

  REAL zMin, zMax
! Read data
  OPEN(10, FILE='sp3dc1.dat', STATUS='OLD')
    READ(10, *)z2Arr
  CLOSE(10)
  CALL BeginPage('CONT1: A simple shaded contour plot with key')	! Set up default environment.
  CALL NEWPIC                             ! Start Picture
  CALL LIMEXC(z2Arr, NX*NY, zMin, zMax)   ! Find data range
  CALL MPK7H('Under', 'Centre', zMin, zMax, 'Data level')  ! Draw key
  CALL RGSHDS(z2Arr, NX, NY)              ! Draw shaded contours
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Cont


Example 3d02

This page uses frames, but your browser doesn't support them.


Example 3d02

3D 2. Line contours

Picture of Output
  SUBROUTINE Cont2
  use spmodule

  INTEGER, PARAMETER :: NX = 10, NY = 10
  REAL, DIMENSION(NX, NY) :: z2Arr
! read data
  OPEN(10, FILE='sp3dc1.dat', STATUS='OLD')
    READ(10, *) z2Arr
  CLOSE(10)
  CALL BeginPage('CONT2: A simple line contour plot')
! specify scales to relate to data:
  CALL SCALES(0.0, REAL(NX-1), 1, 0.0, REAL(NY-1), 1)
  CALL AXES7('x-axis', 'y-axis')          ! start new 2-D picture and draw axes
  CALL RGCNTS(z2Arr, NX, NY)              ! draw contours
  CALL PERIM                              ! draw perimeter
  CALL TITLE7('Over', 'Centre', 'Set of contour lines')  ! Add title
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Cont2


Example 3d03

This page uses frames, but your browser doesn't support them.


Example 3d03

3D 3. Individual contours

Picture of Output
  SUBROUTINE Cont3
  use spmodule

  INTEGER, PARAMETER :: NX = 10, NY = 10
!
  REAL, DIMENSION(NX, NY) :: z2Arr
! read data
  OPEN(10, FILE='sp3dc1.dat', STATUS='OLD')
    READ(10, *)z2Arr
  CLOSE(10)
  CALL BeginPage('CONT3: Drawing and filling your own levels')
  CALL NEWPIC                             ! Start new picture
  CALL RGCONT(35.0, z2Arr, NX, NY)        ! Draw single contour level
  CALL RGCONT(75.0, z2Arr, NX, NY)
  CALL RGSHAD(40.0, 50.0, 4, z2Arr, NX, NY)    ! shade contour bands
  CALL RGSHAD(60.0, 70.0, 7, z2Arr, NX, NY)
  CALL PERIM                              ! Draw perimeter of picture
  CALL TITLE7('Over', 'Centre', 'Individual contour levels')
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Cont3


Example 3d04

This page uses frames, but your browser doesn't support them.


Example 3d04

3D 4. Contour maps of tartan-gridded data

Picture of Output
  SUBROUTINE Cont4
  use spmodule

  INTEGER, PARAMETER :: NX = 6, NY = 5, NZ = 5
  REAL, PARAMETER :: Y1 = 0.0, DY = 1.0
!
  REAL, DIMENSION(NX, NY) :: Z2ARR
  REAL, DIMENSION(NX) :: XARR
  REAL, DIMENSION(NZ) :: HEIGHT
  DATA Z2ARR /0.5, 1.3, 1.8, 3.0, 5.7, 6.8,      &
              0.9, 2.8, 3.9, 4.4, 4.5, 4.9,      &
              1.3, 3.2, 5.8, 4.7, 2.4, 1.4,      &
              1.0, 2.5, 4.4, 4.0, 1.6, 0.3,      &
              0.0, 0.8, 2.0, 2.2, 0.7, 0.0/
  DATA XARR  /0.0, 2.0, 3.0, 5.0, 8.0, 10.0/
  DATA HEIGHT/1.0, 3.0, 4.0, 4.5, 5.0/

  CALL BeginPage('CONT4: Contours from tartan grids')
  CALL GROUP(2, 1)                        ! 2 pictures across page, 1 down
  CALL SCALES(XARR(1), XARR(NX), 1, Y1, Y1+(NY-1)*DY, 1)  ! Define user scales

  CALL AXES7('X', 'Y')                    ! Start picture & draw axes
  CALL SQZVAL(HEIGHT, NZ)                 ! Unequally spaced contour intervals
  CALL XSHDS(Z2ARR, NX, NY, XARR)         ! Draw shaded contours
  CALL TITLE7('Over', 'Centre', 'Unequally-spaced contours')

  CALL AXES7('X', 'Y')                    ! Start 2nd picture & draw axes
  CALL XSHAD(HEIGHT(1), HEIGHT(2), 4, Z2ARR, NX, NY, XARR)  ! Draw 1 contour
  CALL TITLE7('Over', 'Centre', 'Shaded region')
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Cont4


Example 3d05

This page uses frames, but your browser doesn't support them.


Example 3d05

3D 5. Contour maps of a user-defined function

Picture of Output
  SUBROUTINE Cont5
  use spmodule

  REAL, PARAMETER :: PI = 3.14159

  CALL BeginPage('CONT5: Contours from a user function')
  CALL GROUP(2, 1)                      ! 2 pictures across, 1 down
  CALL AXLOCN('*Cartesian', 'Previous') ! Cartesian axes to left & bottom
  CALL SFMESH(21, 21)                   ! Evaluate function on 21x21 mesh
  CALL SCALES(-PI, PI, 1, -PI, PI, 1)   ! Set user scales
  CALL AXES7('X-axis', 'Y-axis')        ! Draw axes
  CALL FNCNTS(COSPSN)                   ! Draw contour plot of function

! Draw 2nd picture with axis & function scales defined separately
  CALL AXES7('X-axis', 'Y-axis')        ! Start 2nd picture
  CALL FNAREA(-2.5, 2.5, -2.5, 2.5)     ! Evaluate function over specified range
  CALL FNCNTS(COSPSN)
  CALL ENDPAG                             ! terminate plotting

CONTAINS

  REAL FUNCTION COSPSN(X, Y)
! user-defined function of two REAL variables (a)
  REAL, INTENT(IN) :: X, Y

  COSPSN=COS(X)+SIN(Y)
  END FUNCTION COSPSN

  END SUBROUTINE Cont


Example 3d06

This page uses frames, but your browser doesn't support them.


Example 3d06

3D 6. A simple surface picture

Picture of Output
  SUBROUTINE Surf1
  use spmodule

  INTEGER, PARAMETER :: NX = 10, NY = 10
!
  REAL, DIMENSION(NX, NY) :: Z2ARR
  DATA Z2ARR/0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,     &
             0.0, -2.6, -3.8, -1.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
             0.0, -3.8, -5.9, -2.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
             0.0, -1.4, -2.3, -0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
             0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,     &
             0.0, 1.5, 1.7, 1.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,     &
             1.8, 1.4, 2.3, 0.4, 1.1, 0.0, 0.0, 8.0, 8.0, 0.0,     &
             2.2, 3.8, 5.9, 2.3, 1.7, 0.0, 0.0, 8.0, 8.0, 0.0,     &
             2.1, 2.6, 3.8, 1.4, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0,     &
             1.0, 2.1, 2.2, 1.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/
  CALL BeginPage('SURF1: A simple surface picture')
  CALL RGSURF(Z2ARR, NX, NY)            ! draw surface picture
  CALL TITLE7('Top', 'Centre', 'A simple surface outline')
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Surf1


Example 3d07

This page uses frames, but your browser doesn't support them.


Example 3d07

3D 7. Isometric drawing

Picture of Output
  SUBROUTINE Surf2
  use spmodule

  REAL, PARAMETER :: XMIN=0.0, XMAX=1.5, YMIN=0.0, YMAX=2.0, ZMIN=0.0, ZMAX=1.0
  CALL BeginPage('SURF2: Elementary isometric drawing')
  CALL FNAREA(XMIN, XMAX, YMIN, YMAX)     ! Specify (X, Y) scale
  CALL SFZSCL(ZMIN, ZMAX)                 ! Specify Z scale to be drawn
  CALL ISNEW                              ! Start new isometric
! draw frame
  CALL IsoLine(XMIN, YMIN, ZMIN, XMAX, YMIN, ZMIN, 0)
  CALL IsoLine(XMAX, YMIN, ZMIN, XMAX, YMIN, ZMAX, 0)
  CALL IsoLine(XMAX, YMIN, ZMAX, XMAX, YMAX, ZMAX, 0)
  CALL IsoLine(XMAX, YMAX, ZMAX, XMIN, YMAX, ZMAX, 0)
  CALL IsoLine(XMIN, YMAX, ZMAX, XMIN, YMAX, ZMIN, 0)
  CALL IsoLine(XMIN, YMAX, ZMIN, XMIN, YMIN, ZMIN, 0)
! draw front lines
  CALL IsoLine(XMIN, YMIN, ZMAX, XMAX, YMIN, ZMAX, 1)
  CALL IsoLine(XMIN, YMIN, ZMAX, XMIN, YMIN, ZMIN, 1)
  CALL IsoLine(XMIN, YMIN, ZMAX, XMIN, YMAX, ZMAX, 1)
! draw back lines
  CALL IsoLine(XMAX, YMAX, ZMIN, XMAX, YMAX, ZMAX, -1)
  CALL IsoLine(XMAX, YMAX, ZMIN, XMAX, YMIN, ZMIN, -1)
  CALL IsoLine(XMAX, YMAX, ZMIN, XMIN, YMAX, ZMIN, -1)
  CALL ENDPAG                             ! terminate plotting

CONTAINS
! =============================================================================
! subroutine to draw a line using isometric coordinates
  SUBROUTINE IsoLine(X31, Y31, Z31, X32, Y32, Z32, LTYPE)
  REAL, INTENT(IN) :: X31, Y31, Z31, X32, Y32, Z32
  INTEGER, INTENT(IN) :: LTYPE
  REAL xC1, yC1, xC2, yC2

  CALL KISXY(X31, Y31, Z31, xC1, yC1)
  CALL KISXY(X32, Y32, Z32, xC2, yC2)
  CALL BREAK
  CALL BRKNPT(xC1, yC1, LTYPE)
  CALL BRKNPT(xC2, yC2, LTYPE)
  CALL BREAK
  END SUBROUTINE IsoLine

  END SUBROUTINE Surf


Example 3d08

This page uses frames, but your browser doesn't support them.


Example 3d08

3D 8. Surface pictures of tartan-gridded data

Picture of Output
  SUBROUTINE Surf3
  use spmodule

  INTEGER, PARAMETER :: NX = 6, NY = 5, NLEVEL=5
!
  REAL, DIMENSION(NX, NY) :: Z2ARR
  REAL, DIMENSION(NY) :: YARR
  REAL, DIMENSION(NLEVEL) :: HEIGHT

  DATA Z2ARR/ 0.5, 1.3, 1.8, 3.0, 5.7, 6.8,     &
              0.9, 2.8, 3.9, 4.4, 4.5, 4.9,     &
              1.3, 3.2, 5.8, 4.7, 2.4, 1.4,     &
              1.0, 2.5, 4.4, 4.0, 1.6, 0.3,     &
              0.0, 0.8, 2.0, 2.2, 0.7, 0.0/
  DATA YARR  /0.0, 2.0, 3.0, 5.0, 10.0/
  DATA HEIGHT/1.0, 3.0, 4.0, 4.5, 5.0/

  CALL BeginPage('SURF3: Surface pictures from tartan data')
  CALL GROUP(2, 1)                     ! 2 pictures across, 1 down
  CALL ISANG(45.0)                     ! Specify isometric view angle
  CALL ISVIEW(1)                       ! Specify corner from which to view
  CALL SFEQX(0.0, 3.0)                 ! x-scale from 0 with intervals of 3
  CALL YSURF(Z2ARR, NX, NY, YARR)      ! draw surface
  CALL YCONT(1.0, Z2ARR, NX, NY, YARR) ! Add contours on surface ....
  CALL YCONT(3.0, Z2ARR, NX, NY, YARR)
  CALL TITLE7('Over', 'Centre', 'Contours on surface')

  CALL ISTYPE(2)                       ! draw surfaces with contours
  CALL ISAXES(.TRUE.)                  ! Add axes when isometric picture started
  CALL SQZVAL(HEIGHT, NLEVEL)          ! Specify contour levels
  CALL YSURF(Z2ARR, NX, NY, YARR)      ! Start picture & draw surface
  CALL TITLE7('Over', 'Centre', 'Unequally-spaced contours')
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Surf3


Example 3d09

This page uses frames, but your browser doesn't support them.


Example 3d09

3D 9. Surface pictures of a user-defined function

Picture of Output
  SUBROUTINE Surf4
  use spmodule

  CALL BeginPage('SURF4: Surfaces from a user-defined function')
  CALL GROUP(2, 2)                     ! 2x2 pictures on page
  CALL ISAXES(.TRUE.)                  ! Add axes when isometric picture started
  CALL ISTYPE(3)                       ! Cross-hatched picture
  CALL FNSURF(COSPSN)                  ! draw surface of function:default limits

  CALL FNAREA(-2.5, 2.5, -2.5, 2.5)    ! Specify alternative function limits
  CALL FNSURF(COSPSN)                  ! draw 2nd picture

  CALL ISMESH(42)                      ! Specify finer mesh
  CALL FNSURF(COSPSN)                  ! Draw 3rd picture

  CALL SFMESH(11, 21)                  ! Specify x-y mesh proportions
  CALL FNSURF(COSPSN)                  ! Draw 4th picture
  CALL ENDPAG                             ! terminate plotting

CONTAINS

  REAL FUNCTION COSPSN(X, Y)
! user-defined function of two REAL variables (a)
  REAL, INTENT(IN) :: X, Y

  COSPSN=COS(X)+SIN(Y)
  END FUNCTION COSPSN

  END SUBROUTINE Surf


Example 3d10

This page uses frames, but your browser doesn't support them.


Example 3d10

3D 10. Surface pictures of ungridded data

Picture of Output
  SUBROUTINE Surf5
  use spmodule

  INTEGER, PARAMETER :: NPTS=12, NODES=3, ISIZE=25, MX=20, MY=20
  REAL, DIMENSION(NPTS) :: XA, YA, ZA
  REAL, DIMENSION(MX, MY) :: z2Arr
  INTEGER, DIMENSION(NODES, ISIZE) :: i2Arr, n2Arr
  INTEGER nElems
  REAL rNoDat
  DATA XA/0.0, 1.0, 2.0, 4.0, 4.0, 6.0, 7.0, 8.0, 10.0, 10.0, 11.0, 12.0/
  DATA YA/6.0, 3.0, 8.0, 0.0, 5.0, 10.0, 2.0, 7.0, 4.0, 9.0, 1.0, 6.0/
  DATA ZA/2.5, 3.8, 3.2, 1.2, 8.3, 3.5, 2.4, 4.6, 2.9, 3.0, 1.8, 2.5/

  CALL BeginPage('SURF5: Surface pictures from ungridded data')
  CALL GROUP(2, 1)
  CALL ISTYPE(3)                        ! Specify cross-hatched isometric
  CALL ISANG(35.26)                     ! Specify viewing angle
  CALL ISAXES(.TRUE.)                   ! Add axes when isometric started
  CALL QNODAT(rNoDat)                   ! Find current NODATA value
  ZA(1)=rNoDat                          ! Set single NODATA value
  CALL SFMESH(MX, MY)                   ! Specify drawn mesh
! triangulate data and draw surface of ungridded data
  CALL ZZORDR(XA, YA, NPTS, i2Arr, n2Arr, nElems, ISIZE)
  CALL ZZSURF(XA, YA, ZA, NPTS, i2Arr, n2Arr, NODES, nElems)
  CALL TITLE7('Top', 'Centre', 'Ungridded data, 20x20 mesh')
! convert data and draw surface of gridded data
  CALL KZZRG(XA, YA, ZA, NPTS, i2Arr, n2Arr, NODES, nElems, z2Arr, MX, MY)
  CALL RGSURF(z2Arr, MX, MY)
  CALL TITLE7('Top', 'Centre', 'Converted data, 20x20 grid')
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Surf5


Example 3d11

This page uses frames, but your browser doesn't support them.


Example 3d11

3D 11. A simple waterfall chart

Picture of Output
  SUBROUTINE Water1
  use spmodule

  INTEGER, PARAMETER :: NPTS=73, NCURVES=18
  REAL, DIMENSION(NPTS, NCURVES) :: z2Arr

  OPEN(10, FILE='sp3dw1.dat', status='OLD')
    READ(10, *) z2Arr
  CLOSE(10)
  CALL BeginPage('WATER1: A simple waterfall chart')
  CALL GROUP(2, 1)                       ! 2x1 pictures on page
  CALL NEWPIC                            ! Start picture
  CALL WFCHT(z2Arr, NPTS, NCURVES, 'Numeric axis', 'Label axis') ! Draw Waterfall

  CALL WFEQN(-180.0, 5.0)                ! Numeric scale from 180; steps of 5
  CALL AXCLR('LWater', 1)                ! Clear Label Waterfall scales
  CALL NEWPIC                            ! Start 2nd picture
  CALL WFCHT(z2Arr, NPTS, NCURVES, 'Numeric axis', ' ')          ! Draw Waterfall
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Water1


Example 3d12

This page uses frames, but your browser doesn't support them.


Example 3d12

3D 12. Drawing individual waterfall curves

Picture of Output
  SUBROUTINE Water2
  use spmodule

  INTEGER, PARAMETER :: NX=130, NY=155
  REAL, DIMENSION(NX) :: ZARR
  INTEGER j

  CALL BeginPage('WATER2: Drawing separate curves')
  CALL WFNCVS(NY)                        ! Chart to hold NY curves
  CALL NEWPIC                            ! Start picture
  OPEN(10, FILE='sp3dw2.dat', STATUS='OLD')
  DO j=1, NY
    READ(10, *) ZARR                     ! Read row
    CALL WFDRAW(ZARR, NX)                ! Draw single line
  ENDDO
  CLOSE(10)
  CALL AXIS7('NWater', 'Distance')       ! Add Numeric Waterfall axis
  CALL AXIS7('LWater', 'Time (minutes)') ! Add Lable Waterfall axis
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Water2


Example 3d13

This page uses frames, but your browser doesn't support them.


Example 3d13

3D 13. Distinguishing between data levels on a waterfall chart

Picture of Output
  SUBROUTINE Water3
  use spmodule

  INTEGER, PARAMETER :: NPTS=73, NCURVES=18
  REAL, DIMENSION(NPTS, NCURVES) :: z2Arr

! read data
  OPEN(10, FILE='sp3dw1.dat', status='OLD')
    READ(10, *) z2Arr
  CLOSE(10)
  CALL BeginPage('WATER3: Showing data levels')
  CALL GROUP(2, 1)                      ! 2x1 pictures on page
  CALL WFNSCL(-180.0, 180.0)            ! Set Numeric scale
  CALL WFSTEP(0.05)                     ! Set curve displacement

  CALL NEWPIC                           ! Start 1st picture
  CALL WFCHT(z2Arr, NPTS, NCURVES, ' ', ' ')  ! Draw Waterfall Chart
  CALL BUNLPR('SCT')                    ! Vary lines by Style, Colour, Thickness
  CALL WFPNS(1, -1, 2, -1)              ! Pen 1 for +ve vals; Pen 2 for -ve
  CALL WFZLEV(-10.0)                    ! mark points below -10.0 with pen 2

  CALL AXLOCN('LWater', 'Preceding')    ! Force LabelWaterfall axis Preceding
  CALL NEWPIC                           ! Start 2nd picture
  CALL WFCHT(z2Arr, NPTS, NCURVES, ' ', ' ')  ! Draw Waterfall chart
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Water3


Example 3d14

This page uses frames, but your browser doesn't support them.


Example 3d14

3D 14. Conversion on waterfall charts

Picture of Output
  SUBROUTINE Water4
  use spmodule

  INTEGER, PARAMETER :: NPTS=128, NCURVES=24
  REAL, DIMENSION(NPTS, NCURVES) :: z2Arr
  REAL zVal
  CHARACTER*2 iStr
  INTEGER iCurve

  OPEN(10, FILE='sp3dw4.dat', status='OLD')
    READ(10, *) z2Arr
  CLOSE(10)
  CALL BeginPage('WATER4: Find the position of a plot')
  CALL WFNSCL(-50.0, 260.0)            ! set numeric scales from -50.0 to 260.0
  CALL WFEQN(0.0, 2.0)                 ! set numeric data from 0.0 in steps of 2

  CALL NEWPIC                          ! Start picture
  CALL AXCLR('LWater', 1)              ! Specify axis label clear
  CALL WFCHT(z2Arr, NPTS, NCURVES, ' ', ' ')   ! Draw waterfall
  CALL LABJST('Centre', 'Right')       ! Label justification Centre Right
! label relative to first point of every second curve
  DO iCurve=2, NCURVES, 2
    CALL KWZVAL(iCurve, z2Arr(1, iCurve), zVal)
    CALL KNUMB(iCurve, iStr)
    CALL CP7LB(0.0, zVal, 'Curve '// iStr)
  ENDDO
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Water4


Example 3d15

This page uses frames, but your browser doesn't support them.


Example 3d15

3D 15. Scales on contour maps and map keys

Picture of Output
  SUBROUTINE Extra1
  use spmodule

  REAL, PARAMETER :: PI=3.141593, ZMIN=-2.0, ZMAX=2.0, ZINT=0.5

  CALL BeginPage('EXTRA1: Controlling Z scales')
  CALL GROUP(1, 2)                          ! 1x2 graphs on page
  CALL EQSCAL(-2.0*PI, 2.0*PI, -PI, PI, 0)  ! Specify User scales
  CALL SFEQZ(ZMIN, ZINT)                    ! Specify contour intervals
  CALL SFZSCL(ZMIN, ZMAX)                   ! Specify z scale

  CALL NEWPIC                               ! Start picture
  CALL MPK7V('Centre', 'Preceding', ZMAX-ZINT, ZMIN, 'Before and..')  ! Add key
  CALL FNSHDS(COSPSN)                       ! Draw contour map

  CALL SFLIMS(-1.0, 1.0)                    ! Specify limits
  CALL NEWPIC                               ! Start 2nd picture
  CALL MPK7V('Centre', 'Preceding', ZMIN, ZMAX, 'after SFLIMS')       ! Add key
  CALL FNSHDS(COSPSN)                       ! Draw contour map
  CALL ENDPAG                             ! terminate plotting

CONTAINS

  REAL FUNCTION COSPSN(X, Y)
! user-defined function of two REAL variables (a)
  REAL, INTENT(IN) :: X, Y

  COSPSN=COS(X)+SIN(Y)
  END FUNCTION COSPSN

  END SUBROUTINE Extra


Example 3d16

This page uses frames, but your browser doesn't support them.


Example 3d16

3D 16. Contour maps of ungridded data

Picture of Output
  SUBROUTINE Extra2
  use spmodule

  INTEGER, PARAMETER :: NPTS=12, NODES=3, ISIZE=25, MX=20, MY=20
  REAL, DIMENSION(NPTS) :: XA, YA, ZA
  REAL, DIMENSION(MX, MY) :: z2Arr
  INTEGER, DIMENSION(NODES, ISIZE) :: i2Arr, n2Arr
  INTEGER nElems

  REAL rNoDat, xMin, xMax, yMin, yMax
  DATA XA/0.0, 1.0, 2.0, 4.0, 4.0, 6.0, 7.0, 8.0, 10.0, 10.0, 11.0, 12.0/
  DATA YA/6.0, 3.0, 8.0, 0.0, 5.0, 10.0, 2.0, 7.0, 4.0, 9.0, 1.0, 6.0/
  DATA ZA/2.5, 3.8, 3.2, 1.2, 8.3, 3.5, 2.4, 4.6, 2.9, 3.0, 1.8, 2.5/

  CALL BeginPage('EXTRA2: Contours from ungridded data')
  CALL QNODAT(rNoDat)                    ! Inquire no-data value
  ZA(1)=rNoDat                           ! Set data element NODATA
  CALL GROUP(2, 1)                       ! 2x1 pictures on page
  CALL LIMEXC(XA, NPTS, xMin, xMax)      ! Find range of data
  CALL LIMEXC(YA, NPTS, yMin, yMax)
  CALL SCALES(xMin, xMax, 1, yMin, yMax, 1)  ! Set User scales

  CALL NEWPIC                            ! Start picture
! triangulate data
  CALL ZZORDR(XA, YA, NPTS, i2Arr, n2Arr, nElems, ISIZE)
  CALL CHMASK(.TRUE.)                    ! Specify drawing clipped against text
  CALL CP7PT(XA(1), YA(1), 1, 'no data') ! Mark NODAT point
  CALL ZZELMS(XA, YA, NPTS, i2Arr, n2Arr, NODES, nElems)   ! Draw data structure
  CALL CTBRKN(-1)                        ! Draw contours with line pattern -1
! Draw contour lines:
  CALL ZZCNTS(XA, YA, ZA, NPTS, i2Arr, n2Arr, NODES, nElems)

  CALL NEWPIC                            ! Start 2nd picture
! Generate 2-d array from data, then draw filled contours:
  CALL KZZRG(XA, YA, ZA, NPTS, i2Arr, n2Arr, NODES, nElems, z2Arr, MX, MY)
  CALL RGSHDS(z2Arr, MX, MY)
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Extra2


Example 3d17

This page uses frames, but your browser doesn't support them.


Example 3d17

3D 17. Extra labelling on contour maps

Picture of Output
  SUBROUTINE Extra3
  use spmodule

  INTEGER, PARAMETER :: NN=3, NPTS=67, MAXE=NPTS*2+1, NVILL=5, NPK=2, NLEV=8
  REAL, DIMENSION(NPTS) :: X, Y, Z
  REAL, DIMENSION(NVILL) :: XVIL, YVIL
  INTEGER, DIMENSION(NN, MAXE) :: IARR, NBARR
  INTEGER, DIMENSION(NLEV) :: BKNSQ
  INTEGER, DIMENSION(NPK) :: IPEAK
  CHARACTER*8, DIMENSION(NVILL) :: CHVIL
  CHARACTER*6, DIMENSION(NLEV) :: LABSQ
  INTEGER nElems, i, n
  REAL xMin, xMax, yMin, yMax

  DATA XVIL /69.8, 87.1, 74.6, 81.0, 72.7/
  DATA YVIL /73.1, 76.8, 69.4, 72.0, 70.1/
  DATA IPEAK/11, 58/
  DATA BKNSQ/ -1, -1, 0, -1, -1, -1, 0, -1/
  DATA LABSQ/'      ', '      ', '1000ft', '      ',   &
             '      ', '      ', '2000ft', '      '/
  DATA CHVIL/'Ingleton', 'Foxup   ', 'Clapham ', 'Horton  ', 'Newby   '/

! read data
  OPEN(10, FILE='sp3de3.dat', STATUS='OLD')
    READ(10, *)X, Y, Z
  CLOSE(10)

  CALL BeginPage('EXTRA3: Labelling contour maps')
  CALL ZZORDR(X, Y, NPTS, IARR, NBARR, nElems, MAXE)  ! Triangulate data
  CALL LIMEXC(X, NPTS, xMin, xMax)                    ! evaluate limits
  CALL LIMEXC(Y, NPTS, yMin, yMax)
  CALL EQSCAL(xMin, xMax, yMin, yMax, 0)              ! X:y :: 1:1
! define labels, line styles and contour levels
  CALL CTLABS(5)                          ! Label contour lines
  CALL SQZLAB(LABSQ, NLEV)                ! Specify contour labels
  CALL SQBRKN(BKNSQ, NLEV)                ! Specify line styles
  CALL SFEQZ(500.0, 250.0)                ! Set base level & increment
  CALL CHMASK(.TRUE.)                     ! Mask lettering

  CALL NEWPIC                             ! Start picture
  DO i=1, NVILL
    CALL CP7PT(XVIL(i), YVIL(i), 32, CHVIL(i))        ! Label villages
  ENDDO
  CALL ZZCNTS(X, Y, Z, NPTS, IARR, NBARR, NN, nElems) ! Draw contour lines
  DO i=1, NPK
    n=IPEAK(i)
    CALL MARKPT(X(n), Y(n), 87)
  ENDDO
  CALL BRKNBX(xMin, yMin, xMax, yMax, 0)  ! Draw box around region
  CALL TITLE7('Top', 'Centre', 'Ingleborough & Pen-y-Ghent')
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Extra3


Example 3d18

This page uses frames, but your browser doesn't support them.


Example 3d18

3D 18. Sequences on contour maps

Picture of Output
  SUBROUTINE Extra4
  use spmodule

  INTEGER, PARAMETER :: NX=20, NY=20, NPATT=12, NLABS=12
  REAL, DIMENSION(NX, NY) :: z2Arr
  INTEGER, DIMENSION(NPATT) :: IBUNDL
  CHARACTER, DIMENSION(NLABS) :: LABELS
  REAL zMin, zMax, zLow, zHigh, zInt
  INTEGER nRows, nColumns, i
  DATA IBUNDL/1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1/
  DATA LABELS/'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'/

! read data
  OPEN(10, FILE='sp3de4.dat', STATUS='OLD')
    READ(10, *)z2Arr
  CLOSE(10)
  CALL BeginPage('EXTRA4: Sequences of contour levels')
  CALL BUNLPR('SCT')             ! Line bundles vary on Style, Colour, Thickness
  CALL LIMEXC(z2Arr, NX*NY, zMin, zMax)   ! Find data range
  CALL KSCALE(zMin, zMax, 6.0, zLow, zHigh, zInt)  ! Get 'nice' scale
  CALL SFEQZ(0.0, zInt)                   ! Set z base & interval
  CALL SFZSCL(zLow, zHigh)                ! Set z scale

  CALL NEWPIC                             ! Start new picture
  CALL DEFKYW(7)                          ! Restrict key width
  CALL QKYCAP(LABELS, NLABS, 1, nRows, nColumns)      ! Find width/height of key
  CALL DEFKEY(2, 'Centre', 'West', nRows+1, nColumns) ! Define Key
  CALL ADDCP7('Contours')
  DO i=1, NLABS
    CALL SETPNS(IBUNDL(i), 1, 1, 1)
    CALL LINEK7(-999, LABELS(i))
  ENDDO
  CALL SQPEN(IBUNDL, NPATT)               ! Specify Line sequence
  CALL SQZLAB(LABELS, NLABS)              ! Specify Label sequence
  CALL CTLABS(2)                          ! Request labels on contours
  CALL RGCNTS(z2Arr, NX, NY)              ! Draw contour map
  CALL ENDPAG                             ! terminate plotting
  END SUBROUTINE Extra4


Example 3d19

This page uses frames, but your browser doesn't support them.


Example 3d19

3D 19. Labelling contour curves

Picture of Output
  SUBROUTINE Extra5

  use spmodule

  INTEGER, PARAMETER :: MAXARR = 31
  REAL, PARAMETER :: FNMIN=0.2, FNMAX=3.3
  REAL, DIMENSION(MAXARR) :: XARR, YARR

  REAL fMin, fMax, zMin, zMax, zStep, zLev
  INTEGER nSteps, i, nPts
  CHARACTER zStr*5

  CALL BeginPage('EXTRA5: Labelling contour levels')
  CALL SFMESH(31, 31)                  ! increase mesh size
  CALL EQSCAL(0.0, 3.5, 0.0, 3.5, 0)   ! Set isotropic Cartesian scales
! specify area in which function is drawn:
  CALL FNAREA(FNMIN, FNMAX, FNMIN, FNMAX)
  CALL LIMSFN(COSXMY, fMin, fMax)      ! Inquire function range
! Calculate z limits/step:
  CALL KSCALE(fMin, fMax, 0.0, zMin, zMax, zStep)
  nSteps=INT((zMax-zMin)/zStep+0.5)

  CALL AXES7('X', 'Y')                 ! Start picture & draw axes
  CALL CTHOLD(2)                       ! Do not draw, but remember contours
  CALL CVLBJS('Centre', 'Centre')      ! Centre labels
  DO i=1, nSteps
    zLev=zMin+REAL(i)*zStep            ! Calculate contour level
    CALL FNCONT(zLev, COSXMY)          ! 'Draw' contour line
    CALL KREAL(zLev, zStr)             ! Convert level to string
10  CONTINUE                           !
      CALL QCURVE(MAXARR, XARR, YARR, nPts) ! Get coordinates of curve to label
      IF (nPts.NE.0) THEN
        CALL LABCV7(XARR, YARR, nPts, 0, zStr)  ! Label contour curve
      ENDIF
    IF(nPts .NE.0) GOTO 10
  ENDDO
  CALL BRKNBX(FNMIN, FNMIN, FNMAX, FNMAX, -1)   ! draw broken box around drawing
  CALL ENDPAG                            ! terminate plotting

CONTAINS

  REAL FUNCTION COSXMY(X, Y)
! user-defined function (b)
  REAL, INTENT(IN) :: X, Y

  COSXMY=COS(X)*COS(Y)
  END FUNCTION COSXMY

  END SUBROUTINE Extra5


Example 3d20

This page uses frames, but your browser doesn't support them.


Example 3d20

3D 20. Polar contour map

Picture of Output
  SUBROUTINE Extra6
  use spmodule

  INTEGER, PARAMETER :: NR=6, NTH=9, NH=5
  REAL, PARAMETER :: RSTART=1.0, THSTRT=0.0, RSTEP=1.0, THSTEP=35.0
  REAL, DIMENSION(NR, NTH) :: z2Arr(NR, NTH)
  REAL, DIMENSION(NH) :: ZHEIGH
  REAL rStop, thStop
  DATA ZHEIGH/0.5, 1.0, 1.5, 3.0, 4.0/

! read data
  OPEN(10, FILE='sp3de6.dat', STATUS='OLD')
    READ(10, *)z2Arr
  CLOSE(10)
  CALL BeginPage('EXTRA6: Polar contour maps')
  CALL GROUP(2, 1)                       ! 2x1 pictures on a page
  CALL SFEQX(RSTART, RSTEP)              ! Specify
  CALL SFEQY(THSTRT, THSTEP)
  rStop=RSTART+(NR-1)*RSTEP
  thStop=THSTRT+(NTH-1)*THSTEP
  CALL EQSCAL(RSTART, rStop, THSTRT, thStop, 1)
! start new 2-d picture and draw data grid
  CALL AXSBDV('RPolar', 0.0, RSTEP)      ! Specify base & interval Radial axis
  CALL AXSBDV('APolar', 0.0, THSTEP)     ! Specify base & interval Angular axis
  CALL AXGRID('*Polar', 1, -1)           ! Specify axis grids

  CALL AXES7(' ', ' ')                   ! Start picture & draw axes
  CALL RGCNTS(z2Arr, NR, NTH)            ! Draw line contour

  CALL NEWPIC                            ! Start new picture
  CALL SQZVAL(ZHEIGH, NH)                ! Specify sequence of Z values
  CALL SFMESH(NR, NTH*2)                 ! Specify mesh
  CALL RGSHDS(z2Arr, NR, NTH)            ! Draw shaded contours
  CALL TITLE7('Higher', 'Centre', 'Part-cycle polar contour map')
  CALL ENDPAG                            ! terminate plotting
  END SUBROUTINE Extra6


Example 3d21

This page uses frames, but your browser doesn't support them.


Example 3d21

3D 21. Waterfall charts and cascade surface pictures

Picture of Output
  SUBROUTINE Extra7
  use spmodule

  INTEGER, PARAMETER :: NX=19, NY=31
  REAL, DIMENSION(NX, NY) :: z2Arr(NX, NY)
  REAL zMin, zMax,  zStart,  zStop, zDiv
! read data
  OPEN(10, FILE='sp3de7.dat', STATUS='OLD')
    READ(10, *) z2Arr
  CLOSE(10)
  CALL BeginPage('EXTRA7: Cascading surface pictures')
  CALL GROUP(2, 1)                       ! 2x1 pictures on page
  CALL LIMEXC(z2Arr, NX*NY, zMin, zMax)  ! Find data limits
  CALL KSCALE(zMin, zMax, 0.0,  zStart,  zStop, zDiv)  ! Find 'nice' scale
! specify surface characteristics
  CALL SFZSCL( zStart,  zStop)
  CALL ISANG(30.0)
  CALL ISRISE(0.5)
  CALL ISDIAG(.FALSE.)
  CALL ISTYPE(4)

  CALL RGSURF(z2Arr, NX, NY)             ! Start picture & draw surface
  CALL ISAXD7('X-axis', 'Y-axis', 'Z-axis')  ! Add 3-d axes
  CALL TITLE7('Top', 'Centre', 'Cascade')

  CALL WFZSCL( zStart,  zStop)
  CALL WFSTEP(0.05)
  CALL AXRNGE('LWater', 1.0, REAL(NY))

  CALL NEWPIC                             ! Start picture
  CALL WFCHT(z2Arr, NX, NY, 'X', 'Y/Z')   ! Draw Waterfall chart
  CALL TITLE7('Top', 'Centre', 'Waterfall')
  CALL ENDPAG                            ! terminate plotting
  END SUBROUTINE Extra7


Example 3d22

This page uses frames, but your browser doesn't support them.


Example 3d22

3D 22. Shaded contour maps and surfaces

Picture of Output
  SUBROUTINE Extra8
  use spmodule

  INTEGER, PARAMETER :: NYEARS=16, NAGE=12
  REAL, DIMENSION(NYEARS, NAGE) :: z2Arr(NYEARS, NAGE)
  REAL zMin, zMax

! read data
  OPEN(10, FILE='sp3de8.dat', STATUS='OLD')
    READ(10, *) z2Arr
  CLOSE(10)

  CALL BeginPage('EXTRA8: Axes, contour maps and surfaces')
  CALL GROUP(2, 1)                      ! 2x1 pictures on page
  CALL SFEQX(1965.0, 1.0)
  CALL SFEQY(20.0, 5.0)
  CALL SCALES(1965.0, 1980.0, 1, 18.0, 80.0, 1)

! specify axis characteristics
  CALL AXSBDV('X*', 1965.0, 5.0)
  CALL AXLBGP('X*', 0)
  CALL AXLBJS('**', 'Centre')

! start new 2-D picture, draw axes and draw shaded contours
  CALL AXES7('Year', 'Age')
  CALL SHPATT(-1, 1)
  CALL RGSHDS(z2Arr, NYEARS, NAGE)

! specify surface characteristics
  CALL ISDIAG(.FALSE.)
  CALL ISTYPE(5)

! draw surface picture and add axes
  CALL RGSURF(z2Arr, NYEARS, NAGE)
  CALL ISAXD7('Year', 'Age', 'Incidence')
! draw key to shaded contours
  CALL LIMEXC(z2Arr, NYEARS*NAGE, zMin, zMax)
  CALL MPK7H('Over', 'Centre', zMin, zMax, 'Incidence')
  CALL ENDPAG                            ! terminate plotting
  END SUBROUTINE Extra8


Example 3d23

This page uses frames, but your browser doesn't support them.


Example 3d23

3D 23. Drawing a cross section

Picture of Output
  SUBROUTINE Extra9
  use spmodule

  INTEGER, PARAMETER :: NX = 9, NY = 6
  REAL, PARAMETER :: X1=5.0, Y1=5.4, X2=7.3, Y2=1.8, X0=1.0, DX=1.0, &
                     Y0=1.0, DY=1.0
  REAL, DIMENSION(NX, NY) :: z2Arr(NX, NY)
  REAL Dist, zMin, zMax

! read data
  OPEN(10, FILE='sp3de9.dat', STATUS='OLD')
    READ(10, *)z2Arr
  CLOSE(10)

  CALL BeginPage('EXTRA9: Drawing a cross-section')
  CALL GROUP(2, 1)
  CALL CTLABS(5)

! specify scales and relationship between data and the data grid
  CALL SFEQX(X0, DX)
  CALL SFEQY(Y0, DY)
  CALL SCALES(X0, X0+(NX-1)*DX, 1, Y0, Y0+(NY-1)*DY, 1)

! start new 2-D picture, draw axes and draw line contour map
  CALL AXES7('x-axis', 'y-axis')
  CALL RGCNTS(z2Arr, NX, NY)
  CALL PERIM
! draw range and mark end points
  CALL RANGE(X1, Y1, X2, Y2)
  CALL CP7PT(X1, Y1, 16, '(x1, y1)')
  CALL CP7PT(X2, Y2, 16, '(x2, y2)')
! find limits and specify scales for cross section
  Dist=SQRT((X2-X1)**2+(Y2-Y1)**2)
  CALL LIMEXC(z2Arr, NX*NY, zMin, zMax)
  CALL SCALES(0.0, Dist, 1, 0.0, zMax, 1)
  CALL AXGRID('YCartesian', 1, -1)
! start new 2-d picture, draw axes and draw cross section
  CALL AXES7('Distance along cut', 'z-value (height)')
  CALL RGCUT(X1, Y1, X2, Y2, z2Arr, NX, NY)
  CALL ENDPAG                            ! terminate plotting
  END SUBROUTINE Extra9


Access to Supplement Examples

This page uses frames, but your browser doesn't support them.


Access to Supplement Examples

Example Set 3. Supplement Examples

Supplement 1. | 3-D pie chart
Supplement 2. | Fine control of a 3-D pie chart
Supplement 3. | The Greek alphabet
Supplement 4. | Bundled attributes
Supplement 5. | Labelled curves
Supplement 6. | Storing and retrieving curve coordinates
Supplement 7. | Waterfall charts and pen usage
Supplement 8. | Waterfall charts drawn curve-by-curve
Supplement 9. | Controlling the scales on waterfall charts
Supplement 10. | Fine control of waterfall charts
Supplement 11. | Shaded surface pictures
Supplement 12. | Raster emulation and the painter's algorithm
Supplement 13. | Controlling shading patterns on shaded surfaces
Supplement 14. | Backdrops and bases
Supplement 15. | 3-D bar chart
Supplement 16. | Stacked 3-D barchart
Supplement 17. | Reversing the direction of 3-D bars
Supplement 18. | Drawing parametric functions


Example supp01

This page uses frames, but your browser doesn't support them.


Example supp01

Supplement 1. 3-D pie chart

Picture of Output
  SUBROUTINE Fift01
  use spmodule

    INTEGER, PARAMETER :: NSEGS=6
!
    CHARACTER*7, DIMENSION(NSEGS) :: LabelArray
    REAL, DIMENSION(NSEGS) :: DataArr
    DATA LabelArray/'Sue','Adam','Aelred','Phillip','Gladys','John'/
    DATA DataArr  /  83.0,  45.0,   152.0,     41.0,    72.0, 58.0 /
!
    CALL BeginPage('Simple 3-d pie charts')
    CALL SGEXPL(25, 4)     ! Exploded 4th segment by 25%
    CALL NEWPIC
    CALL PIE3D(DataArr,LabelArray,NSEGS)  ! Draw 3-D pie chart
  END SUBROUTINE Fift01


Example supp02

This page uses frames, but your browser doesn't support them.


Example supp02

Supplement 2. Fine control of a 3-D pie chart

Picture of Output
  SUBROUTINE Fift02
  use spmodule

    INTEGER, PARAMETER :: NSEGS=6
!
    CHARACTER*7, DIMENSION(NSEGS) :: LabelArray
    REAL, DIMENSION(NSEGS) :: DataArray
    DATA LabelArray/'Sue','Adam','Aelred','Phillip','Gladys','John'/
    DATA DataArray/  83.0,  45.0,   152.0,     41.0,    72.0, 58.0 /
!
    CALL BeginPage('3-d pie charts - setting properties')
    CALL PIPOSL(4)             ! Labels within segments
    CALL PIANG(45.0)           ! Tilt pie towards us
    CALL PIHGHT(0.5)           ! Increase height
    CALL NEWPIC
    CALL PIE3D(DataArray, LabelArray, NSEGS)  ! Draw 3-D pie chart
  END SUBROUTINE FIFT02


Example supp03

This page uses frames, but your browser doesn't support them.


Example supp03

Supplement 3. The Greek alphabet

Picture of Output
  SUBROUTINE THRT01
  use spmodule

    INTEGER, PARAMETER :: NCharacters=24
    INTEGER I
    CHARACTER*7, DIMENSION(NCharacters) :: NAME
    CHARACTER*5, DIMENSION(NCharacters) :: SOUND(NCharacters)
    CHARACTER, DIMENSION(NCharacters) :: LOWER, UPPER, OTHER
    DATA NAME /'alpha','beta','gamma','delta','epsilon','zeta', 'eta','theta', &
               'iota','kappa','lambda','mu','nu', 'xi','omicron','pi','rho',   &
               'sigma','tau','upsilon', 'phi','chi','psi','omega'/
    DATA SOUND/'a','b','g','d','e','z','e','th','i','k','l','m',     &
      'n','x, ks','o','p','r','s','t','u, y','ph','kh,ch','ps','o'/
    DATA LOWER/'a','b','c','d','e','f','g','h','i','j','k','l',      &
      'm','n','o','p','q','r','s','t','u','v','w','x'/
    DATA UPPER/'A','B','C','D','E','F','G','H','I','J','K','L',      &
      'M','N','O','P','Q','R','S','T','U','V','W','X'/
    DATA OTHER/' ',' ',' ','w',',',' ',' ','@',' ',' ',' ',' ',      &
      ' ',' ',' ',' ',' ',' ',' ',' ','%',' ',' ',' '/
! specify text and caption characteristics
    CALL CHSET(5)
    CALL STRLV(1)
    CALL BOXCAP(.TRUE.)
! start new picture, define caption area and add captions
    CALL BeginPage('Software fonts')
    CALL NEWPIC
    CALL DEFCAP(1,'T','C',25,27)
    CALL PUTCP7( 1,1,'!U[ Name   Sound  x  Greek   ]')
    DO I=1,24
     CALL ROW(I+2,NAME(I),SOUND(I),LOWER(I),UPPER(I),OTHER(I))
    ENDDO
    CALL TITLE7('O','C','It''s all !F14[Ekkgmija] to me')

CONTAINS

  SUBROUTINE ROW(IROW,NAME,SOUND,GREEKL,GREEKU,ALTER)
    INTEGER, INTENT(IN) :: IROW
    CHARACTER, INTENT(IN) ::  NAME*(*), SOUND*(*), GREEKU*1, GREEKL*1, ALTER*1
    CALL PUTCP7(IROW-1, 2,NAME)
    CALL PUTCP7(IROW-1,10,SOUND)
    CALL PUTCP7(IROW-1,17,GREEKL)
    CALL PUTCP7(IROW-1,20,'!F14['//GREEKU//']')
    CALL PUTCP7(IROW-1,23,'!F14['//GREEKL//']')
    CALL PUTCP7(IROW-1,26,'!F22['//ALTER//']')
  END SUBROUTINE ROW

  END SUBROUTINE THRT01


Example supp04

This page uses frames, but your browser doesn't support them.


Example supp04

Supplement 4. Bundled attributes

Picture of Output
  SUBROUTINE THRT02
  use spmodule

    INTEGER, PARAMETER :: NLINES=15
    INTEGER I
    CHARACTER ISTR*2
! specify plotting characteristics and scales
    CALL BeginPage('Bundled attributes')
    CALL BUNLPR('TCS')
    CALL SCALES(0.0,REAL(NLINES),1,REAL(NLINES)+0.5,0.5,1)
    CALL AXLOCN('*C','P')
    CALL AXLBJS('*C','C')
! start new picture and define key area
    CALL AXES7('x-axis','y-axis')
    CALL DEFKYW(6)
    CALL DEFKEY(2,'B','R',15,2)
! draw sequence of lines and key entries using different 'pens'
    DO I=1,NLINES
      CALL SETPNS(I,1,1,1)
      CALL BREAK
      CALL JOINPT(0.0,REAL(I))
      CALL JOINPT(REAL(I),REAL(I))
      CALL BREAK
      CALL MARKPT(REAL(I)/2.0,REAL(I),I)
      CALL KNUMB(I,ISTR)
      CALL BOTHK7(-999,I,ISTR)
    ENDDO
    CALL TITLE7('O','L','Bundles of line-drawing attributes')
  END SUBROUTINE THRT02


Example supp05

This page uses frames, but your browser doesn't support them.


Example supp05

Supplement 5. Labelled curves

Picture of Output
  SUBROUTINE THRT03
  use spmodule

    INTEGER, PARAMETER :: NPTS=10
    REAL, DIMENSION(NPTS) :: XARR, YARR1, YARR2, YARR3
    DATA XARR/ 1.0, 2.0, 3.0, 4.0, 5.0,6.0, 7.0, 8.0, 9.0, 10.0/
    DATA YARR1/1.31,0.19,0.19,1.31,2.0,1.31,0.19,0.19,1.31, 2.0/
    DATA YARR2/2.31,1.19,1.19,2.31,3.0,2.31,1.19,1.19,2.31, 3.0/
    DATA YARR3/3.31,2.19,2.19,3.31,4.0,3.31,2.19,2.19,3.31, 4.0/
! set scales, draw axes and first curve
    CALL BeginPage('Labelled curves')
    CALL SCALES(1.0,REAL(NPTS),1,0.0,4.0,1)
    CALL AXES7('x-axis','y-axis')
    CALL LABCV7(XARR,YARR1,NPTS,-1,'Simple labelled curve')
! centre justify label and draw thickened curve
    CALL THCKMG('L',3.0)
    CALL CVLBJS('C','C')
    CALL LABCV7(XARR,YARR2,NPTS,-2,'Centred label')
    CALL THCKMG('L',1.0)
! bottom-right justify label to final point of curve
    CALL CVLBPS(NPTS)
    CALL CVLBJS('B','R')
    CALL LABCV7(XARR,YARR3,NPTS,-1,'Justify to last point')
  END SUBROUTINE THRT03


Example supp06

This page uses frames, but your browser doesn't support them.


Example supp06

Supplement 6. Storing and retrieving curve coordinates

Picture of Output
  SUBROUTINE THRT04
  use spmodule

    INTEGER, PARAMETER :: NLONG=60, NLAT=31, MAXPTS=200
    REAL, DIMENSION(NLONG, NLAT) :: Z2ARR
    REAL, DIMENSION(MAXPTS) :: XARR1, YARR1, XARR2, YARR2
    INTEGER I,IMIN,IMAX,NPT
! read data in array Z2ARR and start a new picture
    OPEN(UNIT=10,FILE='thrt04.dat',STATUS='OLD')
    READ(10,*)Z2ARR
    CLOSE(10)
    CALL BeginPage('Labelling contour curves')
    CALL NEWPIC
! remember points for a contour curve at z=585.0
    CALL CTHOLD(2)
    CALL RGCONT(585.0,Z2ARR,NLONG,NLAT)
    CALL QCURVE(MAXPTS,XARR1,YARR1,NPT)
! reverse order of points to reverse direction of label
    DO I=1,NPT
      XARR2(I)=XARR1(NPT-I+1)
      YARR2(I)=YARR1(NPT-I+1)
    ENDDO
! find lowest value of XARR2 and start label there
    CALL LIMIDX(XARR2,NPT,IMIN,IMAX)
    CALL CVLBPS(IMIN)
! draw a labelled curve with line type -1 and magnification 5.0
    CALL THCKMG('L',5.0)
    CALL CVLBJS('B','L')
    CALL LABCV7(XARR2,YARR2,NPT,-1,'Atmospheric thickness = 585.0')
! draw a contour picture and a perimeter, then terminate plotting
    CALL RGCNTS(Z2ARR,NLONG,NLAT)
    CALL PERIM
  END SUBROUTINE THRT04


Example supp07

This page uses frames, but your browser doesn't support them.


Example supp07

Supplement 7. Waterfall charts and pen usage

Picture of Output
  SUBROUTINE THRT05
  use spmodule

    INTEGER, PARAMETER :: NPTS=101, NCURVS=101
    REAL Z2ARR(NPTS,NCURVS)
    INTEGER IPOINT,ICURVE

! set values in array Z2ARR
    DO IPOINT=1,NPTS
      DO ICURVE=1,NCURVS
        Z2ARR(IPOINT,ICURVE)=FUNXY(REAL(IPOINT),REAL(ICURVE))
      ENDDO
    ENDDO
! alter displacement between curves
    CALL WFSTEP(0.1)
! use different line styles above and below z=0.0
    CALL BUNLPR('S')
    CALL WFPNS(1,-1,2,-1)
! draw waterfall chart and terminate plotting
    CALL BeginPage('Waterfall charts')
    CALL NEWPIC
    CALL WFCHT(Z2ARR,NPTS,NCURVS,'numeric','label')

CONTAINS

REAL FUNCTION FUNXY(X,Y)
  REAL, INTENT(IN) :: X, Y
  REAL DIST
  DIST=(-1.0+0.02*X)**2+(-1.0+0.02*Y)**2
  FUNXY=COS(16.0*DIST)*EXP(-4.0*DIST)
END FUNCTION FUNXY

  END SUBROUTINE THRT05


Example supp08

This page uses frames, but your browser doesn't support them.


Example supp08

Supplement 8. Waterfall charts drawn curve-by-curve

Picture of Output
  SUBROUTINE THRT06
  use spmodule

    INTEGER, PARAMETER :: NPTS=500, NCURVE=50
    REAL ZARR(NPTS)
    INTEGER I,J

    CALL BeginPage('Waterfall charts - curves drawn separately')
! specify bundled style/thickness, displacement 0.05, NCURVE curves
    CALL BUNLPR('CST')
    CALL WFSTEP(0.05)
    CALL WFNCVS(NCURVE)
! start picture
    CALL NEWPIC
    DO J=1,NCURVE
! select new pen, set values in ZARR and draw next curve
      CALL WFPNS(J,-1,J,-1)
      DO I=1,NPTS
        ZARR(I)=WAVE(REAL(I),REAL(J))
      ENDDO
      CALL WFDRAW(ZARR,NPTS)
    ENDDO
    CALL AXIS7('NW','Numeric axis')
    CALL AXIS7('LW','Label axis')

CONTAINS

REAL FUNCTION WAVE(X,Y)
  REAL, INTENT(IN) ::  X,Y
  WAVE=(1.0-ABS(SIN((Y-(Y**2))+(X*0.0314))))*Y**(-0.5)
END FUNCTION WAVE

  END SUBROUTINE THRT06


Example supp09

This page uses frames, but your browser doesn't support them.


Example supp09

Supplement 9. Controlling the scales on waterfall charts

Picture of Output
  SUBROUTINE THRT07
  use spmodule

    INTEGER, PARAMETER :: NLONG=33, NLAT=18
    REAL Z2ARR(NLONG,NLAT),YVAL
    CHARACTER*25 CAPN,CAPL
    DATA CAPN/'Azimuthal angle, !F22%'/
    DATA CAPL/'Angle of Elevation, !F22@'/
! read values in array Z2ARR
    OPEN(UNIT=10,FILE='thrt07.dat',STATUS='OLD')
    READ(10,*)Z2ARR
    CLOSE(10)
! specify text and axis characteristics
    CALL BeginPage('Waterfall charts - setting scales')
    CALL STRLV(1)
    CALL AXCLR('LW',1)
    CALL AXGRID('NW',1,-2)
    CALL AXLOCN('LW','P')
! specify displacement and numerical scale
    CALL WFSTEP(0.1)
    CALL WFNSCL(-160.0,160.0)
! start new picture and draw waterfall chart
    CALL NEWPIC
    CALL WFCHT(Z2ARR,NLONG,NLAT,CAPN,CAPL)
! find value of y at centre of 1st curve, and add caption
    CALL KWZVAL(1,Z2ARR((NLONG+1)/2,1),YVAL)
    CALL LABJST('T','C')
    CALL CP7LB(0.0,YVAL,'!F22[% = 0.0]')
! add title
    CALL TITLE7('O','C','Antenna Radiation Pattern')
  END SUBROUTINE THRT07


Example supp10

This page uses frames, but your browser doesn't support them.


Example supp10

Supplement 10. Fine control of waterfall charts

Picture of Output
  SUBROUTINE THRT08
  use spmodule

    INTEGER, PARAMETER :: NPTS=100, NCURVS=10
    REAL Z2ARR(NPTS,NCURVS),ZMIN,ZMAX
    INTEGER ICURVE,IPT
! specify layout
    CALL BeginPage('Waterfall charts - setting properties')
    CALL GROUP(1,2)
! set values in array Z2ARR
    DO ICURVE=1,NCURVS
      DO IPT=1,NPTS
        Z2ARR(IPT,ICURVE)=SIN((12.56*IPT/NPTS)+REAL(ICURVE))
      ENDDO
    ENDDO
! distinguish between line styles around threshold Z=0.5
    CALL BUNLPR('TCS')
    CALL WFPNS(4,1,8,5)
    CALL WFZLEV(0.5)
! specify numeric scale from 1.0 with 10.0 units between points
    CALL WFEQN(1.0,10.0)
! start new picture and draw chart
    CALL NEWPIC
    CALL WFCHT(Z2ARR,NPTS,NCURVS,' ',' ')
! repeat with Z scale reversed
    CALL QWZSCL(ZMIN,ZMAX)
    CALL WFZSCL(ZMAX,ZMIN)
    CALL NEWPIC
    CALL WFCHT(Z2ARR,NPTS,NCURVS,' ',' ')
  END SUBROUTINE THRT08


Example supp11

This page uses frames, but your browser doesn't support them.


Example supp11

Supplement 11. Shaded surface pictures

Picture of Output
  SUBROUTINE THRT09
  use spmodule

    INTEGER, PARAMETER :: NX=10, NY=10
    REAL Z2ARR(NX,NY)
    DATA Z2ARR/6.0,6.0, 6.0,6.0,6.0,6.0,6.0,   6.0,   6.0,6.0,    &
               6.0,3.4, 2.2,4.6,6.0,6.0,6.0,-100.0,-100.0,6.0,    &
               6.0,2.2, 0.1,3.7,6.0,6.0,6.0,-100.0,-100.0,6.0,    &
               6.0,4.6, 3.7,5.6,6.0,6.0,6.0,   6.0,   6.0,6.0,    &
               6.0,6.0, 6.0,6.0,6.0,6.0,6.0,   6.0,   6.0,6.0,    &
               6.0,7.5, 7.7,7.1,6.0,6.0,6.0,   6.0,   6.0,6.0,    &
               7.8,7.4, 8.3,6.4,7.1,6.0,6.0,  14.0,  14.0,6.0,    &
               8.2,9.8,11.9,8.3,7.7,6.0,6.0,  14.0,  14.0,6.0,    &
               8.1,8.6, 9.8,7.4,7.5,6.0,6.0,   6.0,   6.0,6.0,    &
               7.0,8.1, 8.2,7.8,6.0,6.0,6.0,   6.0,   6.0,6.0/
    CALL BeginPage('Shaded surfaces')
    CALL ISDIAG(.FALSE.)
    CALL ISFULL(.TRUE.)
    CALL NODATA(-100.0)
! draw shaded surface using method 4 (slow) with skirts
    CALL FFSIZE(0.01,0.01)
    CALL ISSHAD(4)
    CALL ISSKRT(3)
    CALL RGSURF(Z2ARR,NX,NY)
    CALL ISAXD7('x-axis','y-axis','z-axis')
  END SUBROUTINE THRT09


Example supp12

This page uses frames, but your browser doesn't support them.


Example supp12

Supplement 12. Raster emulation and the painter's algorithm

Picture of Output
  SUBROUTINE THRT10
  use spmodule

    INTEGER, PARAMETER ::NX=10, NY=10
    REAL Z2ARR(NX,NY)
    INTEGER I
    CHARACTER*1 ISTR
! read data
    OPEN(UNIT=10,FILE='thrt10.dat',STATUS='OLD')
    READ(10,*)Z2ARR
    CLOSE(10)
    CALL BeginPage('Alternative shading sets')
    CALL GROUP(2,2)
! draw shaded surface with shading method 4 (accurate but slow)
    CALL ISSHAD(4)
! draw three surfaces using the raster emulation
    DO I=1,3
      CALL FFSET(I)
      CALL RGSURF(Z2ARR,NX,NY)
      CALL KNUMB(I,ISTR)
      CALL TITLE7('B','C','CALL FFSET('//ISTR//')')
    ENDDO
! specify the painter's algorithm
    CALL RASTER(0)
    CALL RGSURF(Z2ARR,NX,NY)
    CALL TITLE7('B','C','CALL RASTER(0)')
  END SUBROUTINE THRT10


Example supp13

This page uses frames, but your browser doesn't support them.


Example supp13

Supplement 13. Controlling shading patterns on shaded surfaces

Picture of Output
  SUBROUTINE THRT11
  use spmodule

    INTEGER, PARAMETER :: NX=19, NY=31
    REAL Z2ARR(NX,NY),ZMIN,ZMAX,ZSTART,ZSTOP,ZDIV
! read data
    OPEN(UNIT=10,FILE='thrt11.dat',STATUS='OLD')
    READ(10,*)Z2ARR
    CLOSE(10)
! specify layout and scales
    CALL BeginPage('Shaded surface keys')
    CALL LIMEXC(Z2ARR,NX*NY,ZMIN,ZMAX)
    CALL KSCALE(ZMIN,ZMAX,0.0,ZSTART,ZSTOP,ZDIV)
! specify surface characteristics
    CALL SFZSCL(ZSTART,ZSTOP)
    CALL ISFULL(.TRUE.)
    CALL ISDIAG(.FALSE.)
    CALL ISSHAD(4)
    CALL ISTYPE(0)
! draw key using a page-related position
    CALL MPTYPE(2)
    CALL MPK7V('C','E',ZMAX,ZMIN,'Key')
! start new picture and draw shaded surface
    CALL RGSURF(Z2ARR,NX,NY)
    CALL ISAXD7('X-axis','Y-axis','Z-axis')
    CALL TITLE7('T','C','Shaded surface with key')
  END SUBROUTINE THRT11


Example supp14

This page uses frames, but your browser doesn't support them.


Example supp14

Supplement 14. Backdrops and bases

Picture of Output
  SUBROUTINE THRT12
  use spmodule

    INTEGER, PARAMETER :: NX=10, NY=10
    REAL Z2ARR(NX,NY)
    INTEGER I
! read data
    OPEN(UNIT=10,FILE='thrt12.dat',STATUS='OLD')
    READ(10,*)Z2ARR
    CLOSE(10)
    CALL BeginPage('Backdrops and bases')
    CALL GROUP(2,2)
! specify shading 1 type (fastest) and backdrop type 1 (plain)
    CALL ISSHAD(1)
    CALL ISSBCK(1)
! specify surface type 0 (no outline) and disable raster emulation
    CALL ISTYPE(0)
    CALL RASTER(0)
! specify base filled with pattern 10 inside, pattern 5 outside
    CALL ISSBAS(2)
    CALL ISSPAT('GI',10)
    CALL ISSPAT('GO',5)
! draw set of shaded surfaces seen from different angles
    DO I=35,360,90
      CALL ISANG(REAL(I))
      CALL RGSURF(Z2ARR,NX,NY)
    ENDDO
  END SUBROUTINE THRT12


Example supp15

This page uses frames, but your browser doesn't support them.


Example supp15

Supplement 15. 3-D bar chart

Picture of Output
  SUBROUTINE FOURT01
  use spmodule

    INTEGER, PARAMETER ::NLONG=73, NLAT=18
    REAL U(NLONG, NLAT), UMIN, UMAX
    INTEGER ISHAD(NLAT), ICOL

    OPEN(10, FILE='fourt01.dat', STATUS='OLD')
      READ(10,*) U
    CLOSE(10)

    DO ICOL=1,NLAT                 ! For NLAT colours ...
      ISHAD(ICOL) = ICOL+1              ! ... start at 2 ...
    ENDDO

    CALL BeginPage('Stacked bar charts')
    CALL SQSHAD(ISHAD, NLAT)            ! .. for SHADing SeQuence
    CALL FFSIZE(2.54/150.0, 2.54/150.0)     ! Smaller fill characters
    CALL ISFULL(.TRUE.)                 ! Fill isometric picture

    CALL ISAXFC(15, 15, 15)             ! Colour for rear planes
    CALL ISBRFC(2)                    ! Fill Colours - columns

    CALL LIMEXC(U, NLONG*NLAT, UMIN, UMAX)    ! Find LIMits EXClusive
    CALL ISBRBZ(UMIN)                 ! Set BaR Base Z value
    CALL ISBRFL(U, NLONG, NLAT, 1)        ! BaR FiLl

    CALL ISAXD7('Azimuth', 'Elevation', 'Gain')  ! AXis DRaw
  END SUBROUTINE FOURT01


Example supp16

This page uses frames, but your browser doesn't support them.


Example supp16

Supplement 16. Stacked 3-D barchart

Picture of Output
  SUBROUTINE FOURT02
  use spmodule

    INTEGER, PARAMETER :: NSUBJ=15, NGRADE=5, NYEAR=2

    INTEGER I, J, K
    REAL GRADES(NSUBJ,NYEAR,NGRADE)
    CHARACTER*18 SUBJCT(NSUBJ)
    CHARACTER*1 GRADE(NGRADE)
    DATA GRADE/'A', 'B', 'C', 'D', 'E'/

    OPEN(UNIT=10,FILE='fourt02.dat',STATUS='OLD')
    DO I=1,NSUBJ                 ! Read data by subject
      READ(10,'(A)') SUBJCT(I)
      READ(10, *) ((GRADES(I,J,K), K=1,NGRADE), J=1,NYEAR)
    ENDDO
    CLOSE(10)

    CALL BeginPage('3-d bar charts - stacking direction')
    CALL AXSBDV('XI', 1.0, 1.0)             ! Set AXis x SuBDiVisions
    CALL AXSBDV('YI', 1.0, 1.0)             ! Set AXis y SuBDiVisions
    CALL ISAXFC(0, 0, 0)                ! IS AXis Fill Colour
    CALL ISAXGC(1, 1, 1)                ! Set Grid Colours

    CALL AXCLR('XI', 1)                 ! CLeaR isometric x AXis
    CALL SFZSCL(0.0, 100.0)               ! Set Z SCaLe
    CALL ISANG(35.0)                    ! Set viewing angle
    CALL SFEQY(1994.5, -1.0)              ! Set descending y scale

    CALL ISBRFC(3)                    ! Set BaR Fill Colour
    CALL ISBRSZ(0.3, 0.7, 0.3, 0.7)         ! ISometric BaR SiZe
    CALL ISBRFL(GRADES, NSUBJ, NYEAR, NGRADE)   ! FiLl BaRs

    CALL ISAXD7(' ', 'Year', 'percent')       ! AXis DRaw
    CALL AXTXT7('XI', 1.5, 1.0, SUBJCT, NSUBJ)  ! Draw AXis TeXT

    CALL SHKEYS('T', 'L', GRADE, NGRADE, 'A level Grade')  ! SHaded KEYS
  END SUBROUTINE FOURT02


Example supp17

This page uses frames, but your browser doesn't support them.


Example supp17

Supplement 17. Reversing the direction of 3-D bars

Picture of Output
  SUBROUTINE FOURT03
  use spmodule

    INTEGER, PARAMETER :: NSEX=2, NYEAR=2, NAGE=8
    INTEGER i, j, k
    REAL POP(NSEX, NYEAR, NAGE), ZLEV
    CHARACTER AGE(NAGE)*2, SEX(NSEX)*6, YEAR(NYEAR)*4

    CALL ISFULL(.TRUE.)

    OPEN(UNIT=10, FILE='fourt03.dat', STATUS='OLD')
    READ(10, '(A,4F8.3)')(AGE(I), ((POP(K,J,I), K=1,NSEX), J=1,NYEAR), I=1,NAGE)
    READ(10, '(2(A,1X))') (SEX(I), I=1,NSEX)
    READ(10, '(2(A,3X))') (YEAR(I), I=1,NYEAR)
    CLOSE(10)

    CALL BeginPage('3-d bar chart')
    CALL ISDIAG(.FALSE.)                ! Omit xyz diagram
    CALl ISAXFC(15, 15, 0)              ! Grey rear planes
    CALL ISAXGC(0, 0, 0)                ! Draw grids in background

    CALL ISBRFC(3)                    ! Colour according to set
    CALL ISBRSZ(0.3, 0.7, 0.3, 0.7)         ! BaR SiZe smaller
    CALL ISBRUP(1)                    ! Reverse driection of bar
    CALL ISBRFL(POP, NSEX, NYEAR, NAGE)     ! BaR FiLl

    CALL AXTXT7('XI', 1.3, 1.0, SEX, NSEX)    ! Annotate x-axis
    CALL AXTXT7('YI', 1.3, 1.0, YEAR, NYEAR)  ! Annotate y-axis
    CALL AXIS7('ZI', 'population (000s)')     ! Draw z-axis

    CALL AXCLR('ZI', 1)                 ! Clear z axis
    CALL AXLOCN('ZI', 'F')              ! Following the picture ...
    CALL AXIS7('ZI', 'AGE')             ! ... Draw second z-axis
    ZLEV = 0.0
    DO I=1,NAGE                   ! ... For each stack ...
      ZLEV = ZLEV + POP(NSEX, NYEAR, I)     ! ... find top of bar ..
      CALL AXLAB7('ZI', ZLEV, AGE(I))       ! ... and label
    ENDDO
  END SUBROUTINE FOURT03


Example supp18

This page uses frames, but your browser doesn't support them.


Access to Help Examples

This page uses frames, but your browser doesn't support them.


Access to Help Examples

Example Set 4. Help Examples

Help 1. | BUSS's Arrow Collection
Help 2. | Extra Axis Labels
Help 3. | Major And Minor Axis Labels
Help 4. | Axis Tick Mark Labelling
Help 5. | Circles And Boxes With Broken Lines
Help 6. | Page Rotation
Help 7. | Finding the height of a point
Help 8. | Ungridded Data
Help 9. | Labelling Points
Help 10. | BUSS's Collection Of Markers


Example helpex01

This page uses frames, but your browser doesn't support them.


Example helpex01

Help 1. BUSS's Arrow Collection

Picture of Output
SUBROUTINE arrows

use spmodule

    CALL INITSP                              ! reset to SIMPLEPLOT defaults
    CALL SCALES(0.0,100.0,1, 0.0,100.0,1)    ! set axes scales
    CALL CHSET(-5)                           ! Times Roman
    CALL AXES('X Axis',6, 'Y Axis',6)        ! start new picture and draw axes
    CALL CHSET(-11)                          ! Helvectica Bold
    CALL TITLE('N', 'C', 'BUSS''s ARROW Collection',23)    ! title top centre
    CALL ARROW(10.0,10.0, 50.0,60.0)         ! ARROW at co-ords (10,10 to 50,60)
    CALL ARHEAD(0.2)                         ! set ARROW to ARROW head ratio
    CALL ARROW(20.0,10.0, 90.0,10.0)         ! draw two ARROWs
    CALL ARROW(20.0,30.0, 30.0,30.0)
    CALL ARHEAD(0.7)                         ! set ARROW to ARROW head ratio
    CALL THCKMG('Lines',2.0)                 ! set line width
    CALL ARROW(50.0,40.0, 40.0,30.0)         ! draw two ARROWs
    CALL ARROW(50.0,50.0, 100.0,50.0)
    CALL ARSHFT(.false.)                     ! remove ARROW shaft
    CALL ARROW(90.0,90.0, 80.0,90.0)         ! draw two ARROWs
    CALL ARROW(80.0,90.0, 90.0,90.0)
    CALL THCKMG('Lines',1.0)                 ! reset line width

    CALL ENDFRM
END SUBROUTINE arrows


Example helpex02

This page uses frames, but your browser doesn't support them.


Example helpex02

Help 2. Extra Axis Labels

Picture of Output
SUBROUTINE axis_labels

use spmodule

    CALL INITSP                             ! reset to SIMPLEPLOT defaults
    CALL SCALES(0.0,100.0,1, 0.0,100.0,1)       ! set axes scales
    CALL NEWPIC                             ! draw new picture
    CALL CHSET(-5)                          ! change character set (font)
    CALL CHUNDL(3)                          ! set text underline three
    CALL TITLE('North', 'Centre', 'Extra Axis Labels',17)    ! title top centre
    CALL CHUNDL(0)                          ! reset default underline
    CALL AXIS('xc', 'Farenheight', 11)      ! draw x axis and label it 'Farenheight'
    CALL AXLBAN('xc','inside')              ! draw x axis labels on inside of axis
    CALL AXLAB('xc',32.0,'FREEZING',8)      ! draw x axis label 'FREEZING'
    CALL AXLBJS('xc','Centre')              ! centre justify axis label
    CALL AXLBSL('xc','h')                   ! axis label horizontal
    CALL AXLAB('xc',90.0,'BODY TEMP',9)     ! draw x axis label 'BODY TEMP'

    CALL ENDFRM
END SUBROUTINE axis_labels


Example helpex03

This page uses frames, but your browser doesn't support them.


Example helpex03

Help 3. Major And Minor Axis Labels

Picture of Output
SUBROUTINE maj_min

use spmodule

    CALL INITSP                              ! reset to SIMPLEPLOT defaults
    CALL SETPNS(1,1,3,4)                     ! set pen colours
    CALL SCALES(0.0,100.0,1, 0.0,100.0,1)    ! set axes scales
    CALL NEWPIC                              ! draw new picture
    CALL CHSET(-5)                           ! Times Roman
    CALL TITLE('North', 'Centre', 'Major And Minor Axis Labels',27)  ! draw title at top centre
    CALL AXSBMN('xc', 20.0, 5.0)             ! draw minor tick marks along x axis
    CALL AXIS('xc', 'Farenheight', 11)       ! draw x axis and label it 'Farenheight'
    CALL AXGRID('xc', 2, -1)                 ! draw grid lines for x axis
    CALL AXMIN('xc',32.0)                    ! draw the major and minor tick marks for x axis
    CALL AXMAJ('xc',90.0)
    CALL AXSUBS('yc', 2, 2)                  ! draw major and minor tick marks
    CALL AXSBTK('yc', 'a')                   ! tick marks straddling accross axis
    CALL AXIS('yc', 'Y Axis', 6)             ! draw y axis and label it 'Y Axis'

    CALL ENDFRM
END SUBROUTINE maj_min


Example helpex04

This page uses frames, but your browser doesn't support them.


Example helpex04

Help 4. Axis Tick Mark Labelling

Picture of Output
SUBROUTINE axis_ticks

use spmodule
    CHARACTER*7 Label(7) 	       ! y axis labels in an array
    DATA LABEL/'Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet'/

    CALL INITSP                    ! reset to SIMPLEPLOT defaults
    CALL PAGPOS(5.0, 3.0)          ! set page position
    CALL PAGE(15.0 ,20.0)          ! set page size
    CALL YSCALE(0.0, 7.0, 1)       ! set y axes scale
    CALL AXCLR('yc', 1)            ! clear all axis labels and tick marks
    CALL BOXPG2(1)                 ! set page boundry style
    CALL BOXPAG(.true.)            ! show page boundries
    CALL NEWPIC                    ! draw new picture
    CALL CHSET(-5)                 ! Times Roman
    CALL TITLE('N', 'C', 'Axis Tick Mark Labelling',24)  ! title at top centre
    CALL AXSUBS('yc', 2, 2)        ! draw major and minor tick marks
    CALL AXSBTK('yc', 'i')         ! tick marks facing inside axis
    CALL AXLOCN('yc', 'f')         ! set axis location
    CALL AXIS('yc', '', 0)         ! draw y axis with NULL label
    CALL AXLBSL('yc','h')          ! set direction of label text on axis
    CALL AXLBJS('yc','C')          ! set just of y axis labels to centre of ticks
    CALL AXTXT('yc', 0.5, 1.0, Label, 7, 6)  ! label y axis tickmarks
    CALL XSCALE(7.0, 0.0, 1)       ! set x axis scale to go backwards
    CALL AXIS('xc', 'X Axis', 6)   ! draw x axis with label 'X Axis'

    CALL ENDFRM
END SUBROUTINE axis_ticks


Example helpex05

This page uses frames, but your browser doesn't support them.


Example helpex05

Help 5. Circles And Boxes With Broken Lines

Picture of Output
SUBROUTINE broken_lines

use spmodule

    CALL INITSP                                 ! reset to SIMPLEPLOT defaults
    CALL SCALES(0.0,100.0,1, 0.0,100.0,1)       ! set scales for axes
    CALL CHSET(-5)                              ! Times Roman
    CALL AXES('X Axis',6, 'Y Axis',6)           ! start new picture and draw axes
    CALL CHSET(-9)                              ! Helvectica
    CALL TITLE('C', 'C', 'Circles And Boxes With Broken Lines',35)	! draw title at top centre
    CALL THCKMG('Lines', 3.0)                   ! set line width
    CALL BRKNCL(50.0, 50.0, 40.0, 3)            ! draw circle with broken line

    CALL THCKMG('Lines', 1.0)                   ! set line width
    CALL BRKNCL(25.0, 40.0, 20.0, 5)            ! draw circle with broken line

    CALL THCKMG('Lines', 2.0)                   ! set line width
    CALL BRKNBX(10.0, 10.0, 40.0, 30.0, 1)      ! draw box with broken line

    CALL THCKMG('Lines', 5.0)                   ! set line width
    CALL BRKNBX(100.0, 100.0, 60.0, 60.0, 6)    ! draw box with broken line

    CALL ENDFRM

END SUBROUTINE broken_lines


Example helpex06

This page uses frames, but your browser doesn't support them.


Example helpex06

Help 6. Page Rotation

Picture of Output
SUBROUTINE rotate

use spmodule

    CALL INITSP          ! reset to SIMPLEPLOT defaults

    CALL samplepage(4)        ! 'Landscape' page
    CALL samplepage(3)        ! 'Protrait' page
    CALL samplepage(6)        ! 'Upside Down Landcsape' page
    CALL samplepage(5)        ! 'Upside Down Protrait' page
    CALL PAGVW(0)
    CALL ENDFRM

CONTAINS

    SUBROUTINE samplepage(iView)

        INTEGER iView
                 ! set page orientation and draw 4 sets of AXES7
        CALL PAGVW(iView)
        CALL GROUP(2,2)          ! group 2x2 pictures on page
        CALL BOXGRP(.true.)      ! draw box around group
        CALL BOXPAG(.true.)
        CALL AXES7('X', 'Y')     ! start new picture and draw AXES7
        CALL AXES7('X', 'Y')
        CALL AXES7('X', 'Y')
        CALL AXES7('X', 'Y')
        CALL TITLE7('Higher', 'Centre', '|^| THIS WAY UP |^|')
        CALL ENDPAG						! finish page
    END SUBROUTINE samplepage

END SUBROUTINE rotate


Example helpex07

This page uses frames, but your browser doesn't support them.


Example helpex07

Help 7. Finding the height of a point

Picture of Output
SUBROUTINE find_height

use spmodule

  CHARACTER*20 Label
  REAL rHeight
  INTEGER i, j
  REAL Z2ARR(10, 10)

  OPEN(UNIT=10, FILE='sp3dc1.dat', STATUS='OLD')
  READ(10, *) Z2ARR
  CLOSE(10)

  CALL INITSP                              ! RESET TO SIMPLEPLOT DEFAULTS
  CALL SCALES(0.0, 10.0, 1, 0.0, 10.0, 1)  ! set scales */
  CALL AXES7('X-Axis', 'Y-Axis')           ! start new picture */
! ----------- draw contours --------------------------------------
  CALL RGCNTS(z2arr, 10, 10)               ! - Note contour map fills axes - */
! return height at (2.3, 3.6) and mark on map */
  rHeight = RGCALC(2.3, 3.6, z2arr, 10, 10)
  WRITE(Label, '(F6.2)') rHeight
  CALL CP7PT(2.3, 3.6, 3, Label)

  CALL ENDFRM
END SUBROUTINE find_height


Example helpex08

This page uses frames, but your browser doesn't support them.


Example helpex08

Help 8. Ungridded Data

Picture of Output
SUBROUTINE ungridded_data

use spmodule
INTEGER NPTS, MAXELEMS
PARAMETER(NPTS=12, MAXELEMS = NPTS * 2 + 1)
    REAL XA(NPTS), YA(NPTS), ZA(NPTS)
    DATA XA/0.0, 1.0, 2.0, 4.0, 4.0, 6.0, 7.0, 8.0, 10.0, 10.0, 11.0, 12.0 /
    DATA YA/6.0, 3.0, 8.0, 0.0, 5.0, 10.0, 2.0, 7.0, 4.0, 9.0, 1.0, 6.0/
    DATA ZA/2.5, 3.8, 3.2, 1.2, 8.3, 3.5, 2.4, 4.6, 2.9, 3.0, 1.8, 2.5/
    INTEGER I2ARR(3, MAXELEMS), N2ARR(3, MAXELEMS)
     INTEGER nelems
    REAL rHeight
    CHARACTER*20 Level

    CALL INITSP                          ! RESET TO SIMPLEPLOT DEFAULTS
    CALL ZZORDR(XA, YA, NPTS, i2arr, n2arr, nelems, MAXELEMS)
    CALL SCALES(0.0, 12.0, 1, 0.0, 10.0, 1)
    CALL AXES7('X Axis', 'Y Axis')
    CALL ZZCNTS(xa, ya, za, NPTS, i2arr, n2arr, 3, nelems)
    CALL TITLE7('t', 'c', 'Ungridded Data')
    rHeight = ZZCALC(4.0, 5.0, xa, ya, za, NPTS, i2arr, n2arr, 3, nelems)
    WRITE(LEVEL, '(F6.2)') rHeight
    CALL CP7PT(4.0, 5.0, 3, Level)
    CALL ENDFRM
END SUBROUTINE ungridded_dat


Example helpex09

This page uses frames, but your browser doesn't support them.


Example helpex09

Help 9. Labelling Points

Picture of Output
SUBROUTINE label_points

use spmodule

    CALL INITSP                               ! reset to SIMPLEPLOT defaults
    CALL SCALES(0.0, 10.0, 1, 0.0, 10.0, 1)   ! set scales
    CALL AXES7('X Axis', 'Y Axis')            ! start new picture and draw axes
    CALL LABJST('t', 'c')                     ! set label justification
    CALL CAPLBM(2.0, 8.0, 3, 'You', 3)        ! draw marker and label
    CALL LABJST('l', 't')                     ! set label justification
    CALL CAPLB(4.0, 6.0, 'Can', 3)            ! draw marker and label
    CALL LABJST('b', 'r')                     ! set label justification
    CALL CAPLBM(5.0, 5.0, 1, 'Label', 5)      ! draw marker and label
    CALL LABJST('d', 'r')                     ! set label justification to default
    CALL LABANG(45)                           ! set angle of label and marker
    CALL CAPLBM(3.0, 3.0, 49, 'Specific', 8)  ! draw marker and label
    CALL LABANG(180)                          ! set angle of label and marker
    CALL CAPLBM(1.0, 1.0, 53, 'Points', 6)    ! draw marker and label

    CALL ENDFRM
END SUBROUTINE label_points


Example helpex10

This page uses frames, but your browser doesn't support them.


Example helpex10

Help 10. BUSS's Collection Of Markers

Picture of Output
SUBROUTINE markers

use spmodule

    INTEGER iMarker
    INTEGER i
    INTEGER j

    CALL INITSP                       ! reset to SIMPLEPLOT defaults
    CALL SCALES(0.0, 12.0, 1, 0.0, 9.0, 1)
    CALL BOXPIC(.true.)
    CALL NEWPIC
    CALL CHSET(-20)
    CALL TITLE7('B', 'C', 'BUSS''s Collection Of Markers')

    DO j = 0, 8
        DO i = 0, 11
            CALL MARKPT(i+0.5, j+0.5, iMarker)
            iMarker = iMarker + 1
        ENDDO
    ENDDO
    CALL ENDFRM
END SUBROUTINE markers


Access to Maps Examples

This page uses frames, but your browser doesn't support them.


Access to Maps Examples

Example Set 5. Maps Examples

Maps 1. | A simple map
Maps 2. | Selecting a region
Maps 3. | Map projections
Maps 4. | Map lines
Maps 5. | Circles around the world
Maps 6. | Geographical text strings
Maps 7. | Alternative formats of text strings
Maps 8. | Graticule and perimeter
Maps 9. | Line styles and labels
Maps 10. | Underlying Cartesian scales
Maps 11. | Clipping against a rectangle
Maps 12. | Controlling the graticule
Maps 13. | Bearing and distance
Maps 14. | Shortest distance between two points
Maps 15. | Converting between (x,y) and long/lat coordinates
Maps 16. | Drawing contours
Maps 17. | Contouring on a projected region
Maps 18. | Hedgehog plots


Example maps01

This page uses frames, but your browser doesn't support them.


Example maps01

Maps 1. A simple map

Picture of Output
  SUBROUTINE GGST01
  use spmodule

  CALL PGSTRT
  CALL GROUP(1,2)
!
  CALL GGNEW       ! start new picture for maps
  CALL GGMAP(1)    ! draw coastlines
  CALL TITLE7('Over','Centre','The world...')
!
  CALL GGNEW       ! second picture
!
  CALL GGMAP(3)    ! draw coastlines and boundaries
  CALL TITLE7('Over','Centre','...with political boundaries')
!
  CALL PGSTOP      ! terminate plotting
  END SUBROUTINE GGST01


Example maps02

This page uses frames, but your browser doesn't support them.


Example maps02

Maps 2. Selecting a region

Picture of Output
  SUBROUTINE GGMP01
  use spmodule

  CALL PGSTRT
  CALL GROUP(1,2)
!
  CALL GGREGN(-12.5,35.0,30.0,75.0)   ! specify rectangular region
  CALL GGNEW
  CALL GGMAP(1)                       ! draw coastlines only
  CALL GGBRKN(-1)                     ! use line style -1 ...
  CALL GGMAP(2)                       ! ... to draw boundaries
  CALL GGBRKN(0)                      ! restore solid line style
  CALL TITLE7('Over','Centre','Europe')
!
  CALL GGRGCL(5000.0)                 ! specify circular region
  CALL GGNEW
  CALL GGMAP(1)
  CALL TITLE7('Over','Centre','A round Africa')
!
  CALL PGSTOP                         ! terminate plotting
  END SUBROUTINE GGMP01


Example maps03

This page uses frames, but your browser doesn't support them.


Example maps03

Maps 3. Map projections

Picture of Output
  SUBROUTINE GGMP02
  use spmodule

  CALL PGSTRT
  CALL GROUP(1,3)
!
  CALL GGPROJ(201)         ! Sanson-Flamsteed projection
  CALL GGNEW
  CALL GGMAP(1)
  CALL TITLE7('Over','Centre','Oval projection')
!
  CALL GGPROJ(300)         ! Simple Conic projection
  CALL GGNEW
  CALL GGMAP(1)
  CALL TITLE7('Over','Centre','Conical projection')
!
  CALL GGPROJ(401)         ! Transverse Mercator projection
  CALL GGNEW
  CALL GGMAP(1)
  CALL TITLE7('Over','Centre','Transverse projection')
!
  CALL PGSTOP              ! terminate plotting
  END SUBROUTINE GGMP02


Example maps04

This page uses frames, but your browser doesn't support them.


Example maps04

Maps 4. Map lines

Picture of Output
  SUBROUTINE GGMP03
  use spmodule

  CALL PGSTRT
  CALL GROUP(1,2)
!
  CALL GGREGN(-10.0,35.0,35.0,55.0)
  CALL GGPROJ(1)                  ! Mercator projection
  CALL LINES                      ! see subroutine below
  CALL GGPROJ(105)                ! Gnomonic projection
  CALL LINES                      ! see below
!
  CALL PGSTOP

CONTAINS

  SUBROUTINE LINES                ! subroutine to draw map and lines
!
  REAL BEAR, DIST
!
  CALL GGNEW
  CALL GGMAP(3)
!
  CALL GGBRKN(-1)                 ! Use broken line to draw ...
  CALL GGLLPT(-0.1,51.53)         ! ... line of ...
  CALL GGLLPT(28.97,41.03)        ! ... shortest distance
  CALL GGBRK
!
  CALL GGBRKN(0)                  ! Use solid line to draw ...
  CALL VGLLBD(-0.1,51.53,28.97,41.03,BEAR,DIST)
  CALL GGLLPT(-0.1,51.53)         ! ... line of ...
  CALL GGBDPT(BEAR,DIST)          ! ... constant bearing
  CALL GGBRK
  END SUBROUTINE LINES

  END SUBROUTINE GGMP03


Example maps05

This page uses frames, but your browser doesn't support them.


Example maps05

Maps 5. Circles around the world

Picture of Output
  SUBROUTINE GGMP04
  use spmodule

  REAL, PARAMETER :: CLONG=-112.0, CLAT=40.0
  INTEGER I
  CALL PGSTRT
  CALL GROUP(1,2)
  CALL GGNEW
  CALL GGMAP(1)
  DO I=2000, 10000, 2000            ! at 2000 km intervals
    CALL GGCIRC(CLONG,CLAT,REAL(I)) ! circles centred (CLONG,CLAT)
  ENDDO
!
  CALL GGPROJ(103)                  ! Satellite Projection
  CALL GGCENT(CLONG,CLAT)           ! centred CLONG,CLAT
  CALL GGNEW
  CALL GGMAP(1)
  DO I=2000, 10000, 2000
    CALL GGCIRC(CLONG,CLAT,REAL(I)) ! with same circles
  ENDDO
!
  CALL PGSTOP
  END SUBROUTINE GGMP04


Example maps06

This page uses frames, but your browser doesn't support them.


Example maps06

Maps 6. Geographical text strings

Picture of Output
  SUBROUTINE GGAD01
  use spmodule

  REAL, PARAMETER :: BRLONG=-1.7689, BRLAT=53.7928
  CHARACTER BRSTR*10,LNGSTR*25,LATSTR*25
  INTEGER IBEAR, LNGLEN, LATLEN
  REAL RLONG, RLAT
  CALL PGSTRT
  CALL CHSET(5)                      ! roman font
  CALL NEWPIC
  CALL DEFCAP(1,'Centre','Centre',20,40)       ! define centred caption area
!
  CALL ADDCP7('Bearing   Coordinates')
  DO IBEAR=0, 360, 20
    CALL VGBDLL(BRLONG,BRLAT,REAL(IBEAR),3000.0,RLONG,RLAT)
    CALL KGLONG(RLONG,LNGSTR,LNGLEN) ! convert longitude to string
    CALL KGLAT (RLAT, LATSTR,LATLEN) ! convert latitude to string
    CALL KNUMB (IBEAR,BRSTR)         ! convert bearing to string
    CALL ADDCP7(BRSTR//'('//LNGSTR//', '//LATSTR//')')
  ENDDO
!
  CALL PGSTOP
  END SUBROUTINE GGAD01


Example maps07

This page uses frames, but your browser doesn't support them.


Example maps07

Maps 7. Alternative formats of text strings

Picture of Output
  SUBROUTINE GGAD02
  use spmodule

  CHARACTER*5, DIMENSION(4) :: CAPS, BLANK
  CHARACTER*5, DIMENSION(2) :: SMALL
  CHARACTER*1, DIMENSION(1) :: DUMMY
  DATA CAPS/'NORTH','EAST ','SOUTH','WEST '/
  DATA SMALL/'North','East '/
  DATA BLANK/'     ', '    ', '    ', '    '/
!
  CALL PGSTRT
  CALL CHSET(5)                        ! roman font
!
  CALL NEWPIC
  CALL BOXCAP(.TRUE.)
  CALL DEFCAP(1,'Centre','Centre',13,50)
!
  CALL LLSTR(CAPS, 4,3,':', ':', ' ')  ! call LLSTR, below ...
  CALL LLSTR(SMALL,2,2,'.', '/D',' ')  ! ... with different arrays ...
  CALL LLSTR(BLANK,2,3,'/N','/N',' ')  ! ... number of strings ...
  CALL LLSTR(CAPS, 4,1,' ',' ', ' ')   ! ... no of components ...
  CALL LLSTR(BLANK,4,3,' deg ',' min ',' sec ')
  CALL LLSTR(DUMMY,0,0,'/D','/M','/S') ! ... and deg-min-sec symbols
  CALL PGSTOP

CONTAINS

  SUBROUTINE LLSTR(LABARR,NARR,NCOMP,CHDEGS,CHMINS,CHSECS)
  CHARACTER*(*), INTENT(IN) :: LABARR(*)
  INTEGER, INTENT(IN) :: NARR, NCOMP
  CHARACTER*(*), INTENT(IN) :: CHDEGS,CHMINS,CHSECS
!
  REAL, PARAMETER :: RLONG=-1.75, RLAT=58.7261
  CHARACTER*30 LNGSTR,LATSTR
  INTEGER LNGLEN, LATLEN
!
  CALL GGSLDA(LABARR,NARR)             ! load array of strings
  CALL GGSFMT(NCOMP,CHDEGS,CHMINS,CHSECS)! specify string format
!
  CALL KGLONG(RLONG,LNGSTR,LNGLEN)     ! convert longitude
  CALL KGLAT (RLAT, LATSTR,LATLEN)     ! convert latitude
!
  CALL BLNKKY                          ! add blank line
  CALL ADDCP7('('//LNGSTR(:LNGLEN)//', '//LATSTR(:LATLEN)//')')
  END SUBROUTINE LLSTR

  END SUBROUTINE GGAD02


Example maps08

This page uses frames, but your browser doesn't support them.


Example maps08

Maps 8. Graticule and perimeter

Picture of Output
  SUBROUTINE GGCK01
  use spmodule

  CALL PGSTRT
  CALL GGREGN(90.0,-5.0,145.0,45.0)
  CALL GGPROJ(5)                  ! Galls projection
  CALL GGNEW
  CALL GGMAP(1)
  CALL GGGRAT('LL')
  CALL GGPERI(1)
!
  CALL GGLLPT(131.9,43.0)         ! move to Vladivostok ...
  CALL GGLLPT(103.8,1.33)         ! ... draw to Singapore
!
  CALL PGSTOP
  END SUBROUTINE GGCK01


Example maps09

This page uses frames, but your browser doesn't support them.


Example maps09

Maps 9. Line styles and labels

Picture of Output
  SUBROUTINE GGCK02
  use spmodule
!
  REAL X, Y
!
  CALL PGSTRT
  CALL GGREGN(90.0,-5.0,145.0,45.0)
  CALL GGPROJ(106)                   ! Stereographic projection
  CALL GGCENT(114.2,22.7)            ! centred on Hong Kong
!
  CALL GGNEW
  CALL GGMAP(3)
  CALL GGGRAT('LL')
  CALL GGPERI(1)
!
  CALL GGBRKN(-1)                    ! using line style -1 ...
  CALL GGLLPT(131.9,43.0)            ! ... join from Vladivostok ...
  CALL GGLLPT(103.8,1.33)            ! ... to Singapore
!
  CALL KGLLXY(131.9,43.0,X,Y)        ! get(x,y) for Vladivostok ...
  CALL CP7PT(X,Y,41,'Vladivostok')   ! ... and label
  CALL KGLLXY(103.8,1.33,X,Y)        ! get(x,y) for Singapore ...
  CALL CP7PT(X,Y,41,'Singapore')     ! ... and label
!
  CALL PGSTOP
  END SUBROUTINE GGCK02


Example maps10

This page uses frames, but your browser doesn't support them.


Example maps10

Maps 10. Underlying Cartesian scales

Picture of Output
  SUBROUTINE GGCK03
  use spmodule
!
  REAL XMIN, XMAX, YMIN, YMAX
!
  CALL PGSTRT

  CALL BOXPIC(.TRUE.)
  CALL GGREGN(90.0,-5.0,145.0,45.0)
  CALL GGPROJ(300)                   ! Simple Conic projection
  CALL GGCENT(114.2,0.0)             ! Central Meridian 114.2
  CALL GGPARL(22.7,0.0)              ! Standard Parallel 22.7
!
  CALL GGNEW
  CALL GGMAP(1)
  CALL GGGRAT('LL')
  CALL GGPERI(1)
!
!
  CALL QGSCAL(XMIN,XMAX,YMIN,YMAX)   ! inquire underlying scales
  CALL LABJST('B','Centre')
  CALL CP7LB((XMIN+XMAX)*0.5,YMAX,'Centre over map')
  CALL LABJST('T','Centre')
  CALL CP7LB((XMIN+XMAX)*0.5,YMIN,'Centre under Map')
!
  CALL PGSTOP
  END SUBROUTINE GGCK03


Example maps11

This page uses frames, but your browser doesn't support them.


Example maps11

Maps 11. Clipping against a rectangle

Picture of Output
  SUBROUTINE GGCK04
  use spmodule

  REAL, PARAMETER :: XVLADI=131.9, YVOSTK=43.0, XSINGA=103.8, YPORE=1.33, &
                     XHONG=114.2, YKONG=22.7
  REAL X, Y
!
  CALL PGSTRT
  CALL GGREGN(90.0,-5.0,145.0,45.0)
  CALL GGPROJ(101)                         ! Equidistant Azimuthal
  CALL GGCENT(XHONG,YKONG)                 ! centred on Hong Kong
  CALL GGCLIP(2)                           ! clip type 2 (rectangular)
  CALL CHMASK(.TRUE.)                      ! specify masked text ...
  CALL MKMASK(.TRUE.)                      ! ... and markers
  CALL GGNEW
!
  CALL KGLLXY(XVLADI,YVOSTK,X,Y)           ! Get (x,y) for Vladivostok ...
  CALL CP7PT(X,Y,41,'Vladivostok')         ! ... and add marker 41
  CALL KGLLXY(XSINGA,YPORE,X,Y)            ! Get (x,y) for Singapore ...
  CALL CP7PT(X,Y,35,'Singapore')           ! ... and add marker 35
  CALL KGLLXY(XHONG,YKONG,X,Y)             ! Get (x,y) for Hong Kong ...
  CALL CP7PT(X,Y,29,'Hong Kong')           ! ... and add marker 29
!
  CALL GGMAP(1)
  CALL GGBRKN(-1)
  CALL GGGRAT('LL')
  CALL GGBRKN(0)
  CALL GGPERI(2)
!
  CALL PGSTOP
  END SUBROUTINE GGCK04


Example maps12

This page uses frames, but your browser doesn't support them.


Example maps12

Maps 12. Controlling the graticule

Picture of Output
  SUBROUTINE GGCK05
  use spmodule

  REAL X, Y
  REAL XMIN, XMAX, YMIN, YMAX
!
  CALL PGSTRT
  CALL GGPROJ(100)                    ! General Azimuthal projection
  CALL GGCENT(0.0,15.0)
  CALL GGHGHT(5.0)                    ! Origin 5.0
  CALL GGCLIP(3)                      ! clip type 3 :
  CALL GGREGN(-20.0,30.0,110.0,50.0)  ! corners (-20,30) and (110,50)
!
  CALL GGNEW
  CALL CHMASK(.TRUE.)                 ! specify masked text
  CALL TEXTMG(2.0)                    ! double text size
  CALL QGSCAL(XMIN,XMAX,YMIN,YMAX)    ! inquire underlying scales ...
  CALL CP7LB(XMIN,YMIN,'BUSS')        ! ... and add label bottom left
  CALL CHMASK(.FALSE.)                ! cancel masked text
  CALL TEXTMG(0.0)                    ! restore text size
!
  CALL KGLLXY(-1.75,53.78,X,Y)        ! inquire (x,y) for Bradford ...
  CALL ARROW(XMIN,YMIN,X,Y)           ! ... and draw arrow
  CALL GGMAP(3)
  CALL GGPERI(2)
!
  CALL GGBRKN(-1)                     ! using line style -1 ...
  CALL GGGRDV('LL',0.0,10.0)          ! ... at 10 degree intervals ...
  CALL GGGRAT('LL')                   ! ... draw graticule
!
  CALL PGSTOP
  END SUBROUTINE GGCK05


Example maps13

This page uses frames, but your browser doesn't support them.


Example maps13

Maps 13. Bearing and distance

Picture of Output
  SUBROUTINE GGCK06
  use spmodule

  REAL X, Y
  INTEGER I
  REAL BEAR, DIST
  CHARACTER*10, DIMENSION(5) :: NAME
  REAL, DIMENSION(5) :: RLONG, RLAT
  DATA NAME/'Wellington','Tomsk     ','Bulgaria  ','Tobermory ','Orinoco   '/
  DATA RLONG/174.77,85.08,23.33,-6.07,-63.60/
  DATA RLAT/-41.32,56.50,42.75,56.62,8.25/
!
  CALL PGSTRT
  CALL GGREGN(-200.0,-65.0,160.0,85.0)
  CALL GGPROJ(1)                        ! Mercator projection
  CALL CHMASK(.TRUE.)
  CALL GGNEW
!
  DO I=1,5                              ! for each place ...
    CALL KGLLXY(RLONG(I),RLAT(I),X,Y)   ! ... calculate (x,y) ...
    CALL CP7PT(X,Y,41,NAME(I))          ! ... and add label
  ENDDO
!
  CALL GGBRK                            ! break ...
  CALL GGLLPT(RLONG(1),RLAT(1))         ! ... Wellington ...
  CALL GGLLPT(RLONG(2),RLAT(2))         ! ... Tomsk ...
  CALL GGLLPT(RLONG(3),RLAT(3))         ! ... Bulgaria
!
  CALL GGBRK
  CALL VGLLBD(RLONG(4),RLAT(4),RLONG(5),RLAT(5),BEAR,DIST)
  CALL GGLLPT(RLONG(4),RLAT(4))         ! Tobermory ...
  CALL GGBDPT(BEAR,DIST)                ! ... Orinoco
!
  CALL GGMAP(1)
  CALL GGBRKN(-1)
  CALL GGGRAT('LL')
  CALL GGBRKN(0)
  CALL GGPERI(2)
!
  CALL TITLE7('Over','Centre','Underground,overground,...')
  CALL PGSTOP
  END SUBROUTINE GGCK06


Example maps14

This page uses frames, but your browser doesn't support them.


Example maps14

Maps 14. Shortest distance between two points

Picture of Output
  SUBROUTINE GGCK07
  use spmodule

  REAL CLONG,CLAT,RLONG,RLAT,DIST,X,Y
  INTEGER MARKER, J, I
  CHARACTER CITY*40
  DATA CLONG,CLAT/3.933,7.383/              ! centre at Ibadan
!
  CALL PGSTRT
  CALL GGREGN(-20.0,0.0,20.0,25.0)
  CALL GGPROJ(202)                          ! Hammer projection
  CALL CHMASK(.TRUE.)
  CALL GGNEW
!
  OPEN(UNIT=10,FILE='ggck07.dat',STATUS='OLD')
  DO J=1,17                                 ! For each city ...
    READ(10,*)RLONG,RLAT                    ! ... read (long,lat)
    READ(10,'(A)')CITY                      ! ... read name
    CALL VGLLSD(CLONG,CLAT,RLONG,RLAT,DIST) ! ... distance from centre
    MARKER=INT(DIST)/250 + 70               ! ... select marker
    CALL KGLLXY(RLONG,RLAT,X,Y)             ! ... convert to (x,y)
    CALL CP7PT(X,Y,MARKER,CITY)             ! ... write marker/label
  ENDDO
  CLOSE(10)
!
  CALL GGMAP(3)
  CALL GGPERI(2)
  CALL GGGRAT('LL')
!
  DO I=250, 2000, 250                       ! At 250 km intervals ...
    CALL GGCIRC(CLONG,CLAT,REAL(I))         ! .... draw circle
  ENDDO
!
  CALL PGSTOP
  END SUBROUTINE GGCK07


Example maps15

This page uses frames, but your browser doesn't support them.


Example maps15

Maps 15. Converting between (x,y) and long/lat coordinates

Picture of Output
  SUBROUTINE GGCK08
  use spmodule

  REAL X, Y, RLONG, RLAT
  INTEGER KBHIT, IHIT
  CALL PGSTRT
  CALL GGREGN(-20.,33.,20.,70.)
  CALL GGPROJ(402)               ! Cassini projection
  CALL GGNEW
!
  CALL GGMAP(1)
  CALL GGPERI(2)
  CALL GGGRAT('LL')
  CALL TITLE7('Over','Centre','Press left mouse button or ''P''')
  CALL TITLE7('Over','Centre','To join points on map')
!
  KBHIT=ICHAR('P')               ! 'P' for GIN from keyboard
10   CALL GETXY(X,Y,IHIT)           ! graphics input: left button or 'P'
    IF(IHIT.EQ.-1.OR.IHIT.EQ.KBHIT) THEN
      CALL KGXYLL(X,Y,RLONG,RLAT)  ! convert to long,lat ...
      CALL GGLLPT(RLONG,RLAT)      ! ... join ...
      CALL MARKPT(X,Y,3)           ! ... and mark point
      CALL OUTBUF                  ! update picture
  GOTO 10
    ENDIF
  CALL PGSTOP
  END SUBROUTINE GGCK08


Example maps16

This page uses frames, but your browser doesn't support them.


Example maps16

Maps 16. Drawing contours

Picture of Output
  SUBROUTINE GGCK09
  use spmodule

  INTEGER, PARAMETER :: NLONG=240, NLAT=121, NX=100, NY=100
  REAL, DIMENSION(NLONG, NLAT) :: ZARR
  REAL, DIMENSION(NX, NY) :: THICK
!
  OPEN(UNIT=10, STATUS='OLD', FILE='ggck09.dat')
  READ(10,*) ZARR
  CLOSE(10)
!
  CALL PGSTRT
  CALL GGPROJ(103)                         ! Satellite
  CALL GGCENT(0.0, 30.0)
  CALL GGNEW
!
  CALL KGLLRG(ZARR,NLONG,NLAT,THICK,NX,NY) ! convert to x,y ...
  CALL RGSHDS(THICK,NX,NY)                 ! ... draw contours
  CALL PEN(0)                              ! background pen ...
  CALL GGMAP(3)                            ! ... to draw map
!
  CALL PGSTOP
  END SUBROUTINE GGCK09


Example maps17

This page uses frames, but your browser doesn't support them.


Example maps17

Maps 17. Contouring on a projected region

Picture of Output
  SUBROUTINE GGCK10
  use spmodule

  INTEGER, PARAMETER :: NLONG=26, NLAT=16, NX=26, NY=16
  REAL, DIMENSION(NLONG, NLAT) :: ZVALS
  REAL, DIMENSION(NX, NY) :: XYVALS
!
  OPEN(UNIT=10,FILE='ggck10.dat',STATUS='OLD')
  READ(10,*)ZVALS
  CLOSE(UNIT=10)
!
  CALL PGSTRT
  CALL GGREGN(-15.0,25.0,45.0,65.0)
  CALL GGEQLL(-10.0,2.0,60.0,-2.0)  ! -10..40 long , 60..30 lat
  CALL GGPROJ(201)                  ! Sanson-Flamsteed
!
  CALL GGNEW
  CALL GGMAP(3)
  CALL GGPERI(1)
!
  CALL KGLLRG(ZVALS,NLONG,NLAT,XYVALS,NX,NY)
  CALL CTNUMB(.TRUE.)               ! specify labelled contours
  CALL THCKMG('L',5.0)              ! 5 x line thickness
  CALL RGCNTS(XYVALS,NX,NY)         ! line contours
!
  CALL TITLE7('Over', 'Centre', 'Field Strength from Daventry')
  CALL PGSTOP
  END SUBROUTINE GGCK10


Example maps18

This page uses frames, but your browser doesn't support them.


Example maps18

Maps 18. Hedgehog plots

Picture of Output
  SUBROUTINE GGCK11
  use spmodule

  INTEGER, PARAMETER :: NPTS = 24
  REAL, PARAMETER :: ROFF = 0.5, FACT = 1.0 + ROFf
  INTEGER I
  REAL X1,X2,Y1,Y2,ZILCH,RDASH,X,Y
  REAL, DIMENSION(NPTS) :: RARR, RLONG, RLAT
!
  OPEN(UNIT=10,FILE='ggck11.dat',STATUS='OLD')
  READ(10,*)(RARR(I),RLONG(I),RLAT(I),I=1,NPTS)
  CLOSE(10)
!
  CALL PGSTRT
  CALL GGPROJ(104)                                ! Orthographic
  CALL GGCENT(-30.0,0.0)
  CALL GGNEW
!
  CALL QGSCAL(X1,X2,Y1,Y2)                        ! inquire scales ...
  CALL EQSCAL(FACT*X1,FACT*X2,FACT*Y1,FACT*Y2,0)  ! ... leave border
!
  CALL GGGRAT('LL')
  CALL GGMAP(3)
  CALL QNODAT(ZILCH)                        ! inquire no data value
!
  DO I=1,NPTS                               ! For each point ...
    CALL KGLLXY(RLONG(I),RLAT(I),X,Y)       ! ... convert to (x,y)
    IF (X.NE.ZILCH.AND.Y.NE.ZILCH) THEN     ! ... If not no data
      RDASH=1.0+RARR(I)*ROFF                ! ... calculate data value
      CALL BREAK
      CALL JOINPT(X,Y)                      ! Join from centre ...
      CALL JOINPT(X*RDASH,Y*RDASH)          ! ... to end of `spine'
    ENDIF
  ENDDO
  CALL PGSTOP
  END SUBROUTINE GGCK11


Access to VS Examples

This page uses frames, but your browser doesn't support them.


Access to VS Examples

Example Set 6. VS Examples

VS 1. | Surface from a 2-D array
VS 2. | Varying the viewing position
VS 3. | Contours of one data set on the surface of another
VS 4. | Setting an appropriate fit type
VS 5. | A contour map on the plane above a surface
VS 6. | Stacked contour plots from a 3-D matrix
VS 7. | Composite images
VS 8. | Spherical coordinate data - a hedgehog
VS 9. | A surface and mesh from spherical coordinate data
VS 10. | Adding axes and keys
VS 11. | Polymarkers
VS 12. | Axis grids and polylines
VS 13. | Ungridded data
VS 14. | 3-D bar chart
VS 15. | Tinted bar chart
VS 16. | Stacked bar chart
VS 17. | Drawing an individual bar
VS 18. | Inquiring the size of stacked bars
VS 19. | Using 2-D coordinates
VS 20. | Annotation
VS 21. | IsoSurface from a 3-D array
VS 22. | Light sourcing IsoSurfaces
VS 23. | Contours of one data set on the IsoSurface of another
VS 24. | Specifying the x-y-z values associated with a regular grid
VS 25. | Drawing an IsoSurface in slices


Access to 2-16 Examples

This page uses frames, but your browser doesn't support them.


Example vis01

This page uses frames, but your browser doesn't support them.


Example vis01

VS 1. Surface from a 2-D array

Picture of Output
  SUBROUTINE Vis01
  use spmodule

  INTEGER, PARAMETER :: NX=36, NY=40
  REAL, DIMENSION(NX, NY) :: Z2dArr   ! 2-d user array

  OPEN(10, FILE=' vis01.dat', STATUS='OLD')
    READ(10,*) Z2dArr            ! Read data
  CLOSE(10)

  CALL PageStart
  CALL VSNEW                     ! ViSualization NEW picture
    CALL VSRG(Z2dArr, NX, NY)    ! Draw surface Z
  CALL VSOUT                     ! ViSualization OUTput

  CALL ENDPAG
  END SUBROUTINE Vis01


Example vis02

This page uses frames, but your browser doesn't support them.


Example vis02

VS 2. Varying the viewing position

Picture of Output
  SUBROUTINE Vis02
  use spmodule

  INTEGER, PARAMETER :: NX=36, NY=40
  REAL, DIMENSION(NX, NY) :: Z2dArr                    ! 2-d user matrix
  INTEGER i
  REAL Theta, Phi

  OPEN(10, FILE=' vis01.dat', STATUS='OLD')
    READ(10,*) Z2dArr
  CLOSE(10)
!
  CALL PageStart
  CALL GROUP(3,2)                ! 6 pictures on PAGE (3x2)
  CALL MARGIN(0.2)               ! smaller margin
  CALL VSLBOX(1)                 ! request Limiting Box
!
  DO i = 1 , 6
    Theta = i*10.0               ! 10, 20, 30, ...
    Phi = 15.0-i*10.0            ! 5, -5, -15, ...
    CALL VSVRTP(0.0, Theta, Phi) ! Viewing Position no perspective
    CALL VSNEW                   ! ViSualization NEW picture
      CALL VSRG(Z2dArr, NX, NY)  ! ViSualization plot from ReGular grid
    CALL VSOUT                   ! ViSualization OUTput image
  ENDDO
!
  CALL ENDPAG
  END SUBROUTINE Vis02


Example vis03

This page uses frames, but your browser doesn't support them.


Example vis03

VS 3. Contours of one data set on the surface of another

Picture of Output
  SUBROUTINE Vis03
  use spmodule

  INTEGER, PARAMETER :: NX=36, NY=40
  REAL, DIMENSION(NX, NY) :: Z2dArr, U2dArr       ! 2-d user matrices

  OPEN(10, FILE=' vis01.dat', STATUS='OLD')
    READ(10,*) Z2dArr, U2dArr    ! Read 2 sets of data
  CLOSE(10)

  CALL PageStart
!
  CALL VSEDGV(1)                 ! Set EDGe Visibility on
  CALL VSEDGC(0)                 ! Set EDGe Colour to index 0

  CALL VSNEW                     ! ViSualization NEW picture
    CALL VSRGU(Z2dArr, U2dArr, NX, NY)     ! Draw U on surface of Z
  CALL VSOUT                     ! ViSualization OUTput
!
  CALL ENDPAG
  END SUBROUTINE Vis03


Example vis04

This page uses frames, but your browser doesn't support them.


Example vis04

VS 4. Setting an appropriate fit type

Picture of Output
  SUBROUTINE Vis04
  use spmodule

  INTEGER, PARAMETER :: NX=30, NY=30
  REAL, DIMENSION(NX, NY) :: U2dArr          ! 2-d user matrix
  REAL uMin, uMax
!
  OPEN(10, file=' vis04.dat', status='OLD')
    READ(10,*) U2dArr
  CLOSE(10)
!
  CALL PageStart

  CALL GROUP(2, 1)
  CALL LIMEXC(U2dArr, NX*NY, uMin, uMax)
  CALL VS3DLM(1.0, REAL(NX), 1.0, REAL(NY), uMin, uMax)
  CALL VSVRTP(10.0, 15.0, 75.0)
!
  CALL VSNEW
    CALL VSRG(U2dArr, NX, NY)    ! default map of Britain
  CALL VSOUT
!
  CALL VSFIT('XY')               ! only x and y scales proportional
  CALL VSNEW
    CALL VSRG(U2dArr, NX, NY)    ! map with new fit type
  CALL VSOUT
!
  CALL ENDPAG
  END SUBROUTINE Vis04


Example vis05

This page uses frames, but your browser doesn't support them.


Example vis05

VS 5. A contour map on the plane above a surface

Picture of Output
  SUBROUTINE Vis05
  use spmodule

  INTEGER, PARAMETER :: NX=36, NY=40
  REAL, DIMENSION(NX, NY) :: Z2dArr1, Z2dArr2    ! 2-d user matrices
  REAL zMin, zMax, zTop

  OPEN(10, FILE=' vis01.dat', STATUS='OLD')
    READ(10,*) Z2dArr1
  CLOSE(10)

  CALL PageStart
  CALL LIMEXC(Z2dArr1, NX*NY, zMin, zMax)  ! Find range of z1
  zTop = zMax+(zMax-zMin)*0.1         ! + 10% range at top
  CALL VS3DLM(1.0, REAL(NX), 1.0, REAL(NY), zMin, zTop) ! 3D LiMits
  CALL VSFIT(' ')                     ! Don't match axes to scales
  CALL DefSlice(zTop, NX, NY, Z2dArr2) ! Set all Z2dArr2 to zTop
  CALL VSEDGC(0)                      ! Set EDGe Colour to index 0

  CALL VSNEW                          ! ViSualization NEW picture
    CALL VSEDGV(1)                    ! Set EDGe Visibility on
    CALL VSRG(Z2dArr1, NX, NY)        ! Draw Z2dArr1
    CALL VSEDGV(0)                    ! Set EDGe Visibility off
    CALL VSRGU(Z2dArr2, Z2dArr1, NX, NY)  ! Draw Z2dArr1 on Z2dArr2 plane
  CALL VSOUT                          ! ViSualization OUTput
  CALL ENDPAG

CONTAINS
  SUBROUTINE DefSlice(ZVAL, NX, NY, ZOUT)
  REAL, INTENT(IN) :: ZVAL                      ! Constant z value
  INTEGER, INTENT(IN) :: NX, NY                 !      Dimensions
  REAL, INTENT(OUT), DIMENSION(NX, NY) :: ZOUT  ! OUT: Plane

  INTEGER i, j

  DO j=1, NY
    DO i=1, NX
      ZOUT(i,j) = ZVAL
    ENDDO
  ENDDO
  END SUBROUTINE DefSlice

  END SUBROUTINE Vis05


Example vis06

This page uses frames, but your browser doesn't support them.


Example vis06

VS 6. Stacked contour plots from a 3-D matrix

Picture of Output
  SUBROUTINE Vis06
  use spmodule

  INTEGER, PARAMETER :: NX=21, NY=21, NZ=21
  REAL, DIMENSION(NX, NY) :: Z2dArr
  REAL, DIMENSION(NX, NY, NZ) :: U3dArr
  REAL uMin, uMax
  INTEGER k

  CALL PageStart
  OPEN(10, FILE=' vis06.dat', STATUS='OLD')
    READ(10,*) U3dArr
  CLOSE(10)
!
  CALL VSVRTP(0.0, -45.0, 15.0)  ! Viewing position
  CALL VS3DLM(1.0, REAL(NX), 1.0, REAL(NY), 1.0,REAL(NZ)) ! 3D LiMits

  CALL LIMEXC(U3dArr, NX*NY*NZ, uMin, uMax)
  CALL VSUTOC(uMin, uMax, 2, 15) ! Relate User data TO Colours
  CALL VSNEW                     ! ViSualization NEW picture
  DO k = 1, NZ, 3
    CALL DefSlice(REAL(k), NX, NY, Z2dArr)  ! Set all Z to REAL(K)
    CALL VSRGU(Z2dArr, U3dArr(1,1,k), NX, NY)  ! Draw surface on plane
  ENDDO
  CALL VSOUT                     ! ViSualization OUTput
  CALL ENDPAG

CONTAINS
  SUBROUTINE DefSlice(ZVAL, NX, NY, ZOUT)
  REAL, INTENT(IN) :: ZVAL                      ! Constant z value
  INTEGER, INTENT(IN) :: NX, NY                 !      Dimensions
  REAL, INTENT(OUT), DIMENSION(NX, NY) :: ZOUT  ! OUT: Plane

  INTEGER i, j

  DO j=1, NY
    DO i=1, NX
      ZOUT(i,j) = ZVAL
    ENDDO
  ENDDO
  END SUBROUTINE DefSlice

  END SUBROUTINE Vis06


Example vis07

This page uses frames, but your browser doesn't support them.


Example vis07

VS 7. Composite images

Picture of Output
  SUBROUTINE Vis07
  use spmodule

  INTEGER, PARAMETER :: NX=36, NY=40, NCORN=4, IRED=16, IYELLOW=28, IBLUE=29
  REAL, DIMENSION(NX, NY) :: Z2dArr
  REAL, DIMENSION(NCORN) :: XSLICE, YSLICE, ZSLICE
  REAL zMin, zMax
  DATA XSLICE/1.0, 36.0, 36.0, 1.0/
  DATA YSLICE/1.0, 1.0, 40.0, 40.0/
  DATA ZSLICE/-2.0, -2.0, -2.0, -2.0/

  OPEN(10, FILE=' vis01.dat', STATUS='OLD')
    READ(10,*) Z2dArr                     ! Read data
  CLOSE(10)

  CALL PageStart
  CALL LIMEXC(Z2dArr, NX*NY, zMin, zMax)  ! Find data limits
  CALL VS3DLM(1.0, REAL(NX), 1.0, REAL(NY), zMin, zMax) ! 3D LiMits

  CALL VSCRGB(IRED, 1.0, 0.0, 0.0)        ! IRED = red
  CALL VSCRGB(IYELLOW, 1.0, 1.0, 0.0)     ! IYELLOW = yellow
  CALL VSCRNG(IRED, IYELLOW)              ! palette = red to yellow

  CALL VSNEW                              ! ViSualization NEW picture
    CALL VSUTOC(zMin, zMax, IRED, IYELLOW) ! Relate User data TO Colour
    CALL VSRG(Z2dArr, NX, NY)             ! Draw surface Z
    CALL VSCRGB(IBLUE, 0.0, 0.0, 1.0)     ! Set colour IBLUE to blue
    CALL VSFILC(IBLUE)                    ! Fill with Colour IBLUE
    CALL VSPGFL(XSLICE, YSLICE, ZSLICE, NCORN) ! Plane at z = -2.0
  CALL VSOUT                              ! ViSualization OUTput

  CALL ENDPAG
  END SUBROUTINE Vis07


Example vis08

This page uses frames, but your browser doesn't support them.


Example vis08

VS 8. Spherical coordinate data - a hedgehog

Picture of Output
  SUBROUTINE Vis08
  use spmodule

  INTEGER, PARAMETER :: NLONG=73, NLAT=18, NPTS=2
  REAL, PARAMETER :: RADIAN=3.14/180.0, R=32.0
  REAL, DIMENSION(NLONG, NLAT) :: U2dArr
  REAL, DIMENSION(NPTS) :: XArr, YArr, ZArr, RArr
  REAL uMin, uMax, rLong, rLat
  INTEGER i, j

  OPEN(10, FILE=' vis08.dat', STATUS='OLD')
    READ(10,*) U2dArr
  CLOSE(10)

  CALL PageStart
  CALL LIMEXC(U2dArr, NLONG*NLAT, uMin, uMax)  ! Find data limits
  CALL VS3DLM(-R, R, -R, R, 0.0, R)       ! Set 3D LiMits
  CALL VSNEW                              ! ViSualization NEW picture
    XArr(1) = 0.0                         ! Define centre ...
    YArr(1) = 0.0                         ! ... point ...
    ZArr(1) = 0.0                         ! ... of data
    RArr(1) = 0.0                         ! Central radius
    DO i = 1 , NLONG
      rLong = RADIAN * (i-37) * 5.0       ! Longitude in degrees
      DO j = 1 , NLAT
        rLat = RADIAN * (j-1) * 5.0       ! Latitude in degrees
        RArr(2) = U2dArr(i,j) - uMin ! Length-> power gain
        XArr(2) = RArr(2) * COS(rLong) * COS(rLat)
        YArr(2) = RArr(2) * SIN(rLong) * COS(rLat)
        ZArr(2) = RArr(2) * SIN(rLat)
        CALL VSPLTN(XArr, YArr, ZArr, RArr, NPTS) ! TiNt PolyLine
      ENDDO
    ENDDO
  CALL VSOUT                              ! ViSualization OUTput
  CALL ENDPAG
  END SUBROUTINE Vis08


Example vis09

This page uses frames, but your browser doesn't support them.


Example vis09

VS 9. A surface and mesh from spherical coordinate data

Picture of Output
  SUBROUTINE Vis09
  use spmodule

  REAL, PARAMETER :: RVAL=32.0
  INTEGER, PARAMETER :: NLONG=73, NLAT=18
  REAL, DIMENSION(NLONG, NLAT) :: X2dArr, Y2dArr, Z2dArr, R2dArr
  REAL xMin, xMax, yMin, yMax, zMin, zMax, rMin, rMax

  OPEN(10, FILE=' vis09.dat', STATUS='OLD')
    READ(10,*) X2dArr, Y2dArr, Z2dArr, R2dArr
  CLOSE(10)

  CALL LIMEXC(X2dArr, NLONG*NLAT, xMin, xMax)
  CALL LIMEXC(Y2dArr, NLONG*NLAT, yMin, yMax)
  CALL LIMEXC(Z2dArr, NLONG*NLAT, zMin, zMax)
  CALL LIMEXC(R2dArr, NLONG*NLAT, rMin, rMax)

  CALL PageStart
  CALL GROUP(2,1)
  CALL VS3DLM(-RVAL, RVAL, -RVAL, RVAL, 0.0, RVAL)     ! 3D LiMits

  CALL VSEDGV(1)                          ! Set EDGe Visibility on
  CALL VSEDGC(0)                          ! Set EDGe Colour to index 0

  CALL VSNEW                              ! ViSualization NEW picture
! Draw R on surface X,Y,Z:
    CALL VSXYZU(X2dArr, Y2dArr, Z2dArr, R2dArr, NLONG, NLAT)
  CALL VSOUT                              ! ViSualization OUTput

  CALL VSROT('Z3', -100.0)                ! Rotate z by -100 degrees
  CALL VSEDGC(1)                          ! Restore EDGe Colour
  CALL LIMEXC(R2dArr, NLONG*NLAT, rMin, rMax)  ! Find data limits
  CALL VSUTOC(0.0, rMax, 0, 0)            ! Relate User data TO Colour 0

  CALL VSNEW                              ! ViSualization NEW picture
    CALL VSXYZ(X2dArr, Y2dArr, Z2dArr, NLONG, NLAT)      ! Draw surface X,Y,Z
  CALL VSOUT                              ! ViSualization OUTput
  CALL ENDPAG
  END SUBROUTINE Vis09


Example vis10

This page uses frames, but your browser doesn't support them.


Example vis10

VS 10. Adding axes and keys

Picture of Output
  SUBROUTINE Vis10
  use spmodule

  INTEGER, PARAMETER :: NX=38, NY=62
  REAL, DIMENSION(NX, NY) :: Z2dArr
  REAL zMin, zMax
  INTEGER i, j

  OPEN(10, FILE='vis10.dat', STATUS='OLD')
    READ(10, *) ((Z2dArr(i, j), i = 1, NX), j = NY, 1, -1)
  CLOSE(10)

  CALL PageStart
  CALL VSLBOX(1)                         ! Request Limiting BOX
  CALL LIMEXC(Z2dArr, NX*NY, zMin, zMax) ! Find data LIMits
  CALL VSFITP(REAL(NX), REAL(NY), 10.0)  ! FIT Proportional scales
  CALL VS3DLM(0.0, REAL(NX), 0.0, REAL(NY), zMin, zMax)
  CALL VSNEW                             ! ViSualization NEW picture
    CALL VSRG(Z2dArr, NX, NY)            ! Surface from ReGular grid
  CALL VSOUT                             ! ViSualization OUTput
  CALL VSAXDR(' ', ' ', 'N')             ! AXis DRaw
  CALL VSK7H('Top', 'Centre', zMin, zMax, 'Nitrogen level') ! Key Horizontal
  CALL ENDPAG
  END SUBROUTINE Vis10


Example vis11

This page uses frames, but your browser doesn't support them.


Example vis11

VS 11. Polymarkers

Picture of Output
  SUBROUTINE Vis11
  use spmodule

  INTEGER, PARAMETER :: NPTS = 2151
  INTEGER, DIMENSION(6) :: NSTARS
  REAL, DIMENSION(NPTS) :: XArr, YArr, ZArr, rMagArr
  REAL R, Theta, Phi
  INTEGER i, j, k
  DATA NSTARS/5, 87, 218, 602, 537, 702/

  OPEN(10, FILE='vis11.dat', STATUS='OLD')
  DO i = 1, NPTS                    ! Read position & magnitude
    READ(10,*) R, Theta, Phi, rMagArr(i)
    XArr(i) = R * COS(Phi) * SIN(Theta)   ! Convert from ...
    YArr(i) = R * COS(Phi) * COS(Theta)   ! ... (r,Theta,Phi) ...
    ZArr(i) = R * SIN(Phi)                ! ... to (x,y,z)
  ENDDO
  CLOSE(10)

  CALL PageStart
  CALL VS3DLM(-20.0, 20.0, -20.0, 20.0, -20.0, 20.0)  ! Set scales
  CALL AXLOCN('*3', 'Both')            ! Both sets of axes for x-y-z
  CALL VSNEW                           ! Start picture
    k = 0                              ! Index to marker
    DO j = 1, 6                        ! Draw each group in turn
      CALL VSCHLS(j+9, 320.0, 0.5, 0.15*j) ! Set colour indices 10..15
      CALL VSPMC(j+9)                  ! Set marker colour
      DO i = 1, NSTARS(j)              ! Draw each marker in group
        k = k+1                        ! Next marker in array
        CALL VSPMMG(0.1 * rMagArr(k))  ! Set marker size
        CALL VSPMDR(XArr(k), YArr(k), ZArr(k), 1, 104)  ! Draw single marker
      ENDDO
    ENDDO
  CALL VSOUT                           ! Output image

  CALL VSAXDR('x', 'y', 'z')           ! Add axes
  CALL ENDPAG
  END SUBROUTINE Vis11


Example vis12

This page uses frames, but your browser doesn't support them.


Example vis12

VS 12. Axis grids and polylines

Picture of Output
  SUBROUTINE Vis12
  use spmodule

  INTEGER, PARAMETER :: MAXPTS = 1024
  REAL, DIMENSION(MAXPTS) :: xDrill, yDrill, zDrill, xConst, yConst, zConst
  REAL xMin, xMax, yMin, yMax, zMin, zMax
  INTEGER nPts, i

  OPEN(10, FILE='vis12.dat', STATUS='OLD')
    READ(10, *) xMin, xMax, yMin, yMax, zMin, zMax
    READ(10, *) nPts
    READ(10, *) (zDrill(I), xDrill(I), yDrill(I), I = 1, nPts)
  CLOSE(10)
  DO i=1, nPts                   ! Set constant data for ...
    xConst(i) = xMin                 ! ... x ...
    yConst(i) = yMin                 ! ... y ...
    zConst(i) = zMax                 ! ... & z planes
  ENDDO

  CALL PageStart
  CALL VS3DLM(xMin, xMax, yMin, yMax, zMax, zMin) ! Set 3D scales
  CALL VSFITP(1.0, 1.0, 0.5)         ! FIT Proportions of axis lengths
  CALL AXLOCN('*3','Both')           ! Both axes for each scale ...
  CALL VSAXGC(15, 15, 15)            ! ...with grids in Colour 15
  CALL VSVRTP(5.0, 135.0, 30.0)      ! Specify viewpoint
  CALL VSNEW                                      ! Start new picture
    CALL VSPLDR(xDrill, yDrill, zDrill, nPts)     ! DRaw PolyLine
    CALL VSLINC(5)                                ! Set LINe Colour
    CALL VSPLDR(xConst, yDrill, zDrill, nPts)     ! Project onto x-
    CALL VSPLDR(xDrill, yConst, zDrill, nPts)     ! ...   y- ...
    CALL VSPLDR(xDrill, yDrill, zConst, nPts)     ! ... & z-plane
  CALL VSOUT                                      ! Flush buffers
  CALL VSAXDR('East ft', 'North ft', 'TVD ft')    ! DRaw AXes
  CALL ENDPAG
  END SUBROUTINE Vis12


Example vis13

This page uses frames, but your browser doesn't support them.


Example vis13

VS 13. Ungridded data

Picture of Output
  SUBROUTINE Vis13
  use spmodule

  INTEGER, PARAMETER :: NPTS=29, MELEM = 3*NPTS
  INTEGER, DIMENSION(3, MELEM) :: iElem, Neigh
  REAL, DIMENSION(NPTS) :: XArr, YArr, z1Arr, z2Arr
  INTEGER i, nElem
  REAL xMin, xMax, yMin, yMax, zMin, zMax, uMin, uMax

  CALL PageStart
  OPEN(10, FILE='vis13.dat', STATUS='OLD')
    READ(10,*) (XArr(i), YArr(i), z1Arr(i), z2Arr(i), i=1,NPTS)
  CLOSE(10)
  CALL ZZORDR(XArr, YArr, NPTS, iElem, Neigh, nElem, MELEM)  ! Structure data

  CALL VSFITP(1.0, 1.0, 1.0)          ! Equal length axes
  CALL VSEDGV(1)                      ! Draw element boundaries

  CALL LIMEXC(XArr, NPTS, xMin, xMax) ! Find range of x...
  CALL LIMEXC(YArr, NPTS, yMin, yMax) ! ... and Y ...
  CALL LIMEXC(z2Arr, NPTS, zMin, zMax) ! ...
  CALL LIMEXC(z1Arr, NPTS, uMin, uMax) ! Draw contours over range ...
  CALL VS3DLM(xMin, xMax, yMin, yMax, zMin, zMax)
  CALL PAGMRG(2.0, 2.0, 1.0, 0.0)     ! PiCture MaRGin
  CALL VSNEW
    CALL VSUTOC(uMin, uMax, 8, 14)    ! ... of z1
    CALL VSZU(XArr, YArr, z2Arr, z1Arr, NPTS, iElem, 3, nElem)  ! Draw z1 on z2
  CALL VSOUT
  CALL VSAXDR('X', 'Y', 'Activity Level')     ! Draw axes
  CALL VSK7V('Centre', 'Following', uMin, uMax, 'Spread')  ! Vertical Key
  CALL ENDPAG
  END SUBROUTINE Vis13


Example vis14

This page uses frames, but your browser doesn't support them.


Example vis14

VS 14. 3-D bar chart

Picture of Output
  SUBROUTINE Vis14
  use spmodule

  INTEGER, PARAMETER :: NLONG=73, NLAT=18
  REAL, DIMENSION(NLONG, NLAT) :: U2dArr
  INTEGER, DIMENSION(NLAT) :: iShade(NLAT)
  REAL uMin, uMax
  INTEGER iCol

  OPEN(10, FILE=' vis08.dat', STATUS='OLD')
    READ(10,*) U2dArr
  CLOSE(10)

  CALL PageStart
  DO iCol=1,NLAT                         ! For NLAT colours ...
    iShade(iCol) = iCol+1                    ! .. start at colour 2
  ENDDO
  CALL SQSHAD(iShade, NLAT)                  ! .. for SHADing SeQuence

  CALL LIMEXC(U2dArr, NLONG*NLAT, uMin, uMax)    ! Find LIMits EXClusive
  CALL VS3DLM(-180.0, 180.0, 0.0, 90.0, uMin, uMax)  ! Set 3D LiMits
  CALL VSEDGV(1)                            ! EDGe Visibility on

  CALL VSAXFC(15, 15, 15)                   ! Colour for rear planes
  CALL VSNEW                                ! ViSualization NEW picture
    CALL VSBRFC(2)                          ! Fill Colours - columns
    CALL VSBRBZ(uMin)                       ! Set BaR Base Z value
    CALL VSBRFL(U2dArr, NLONG, NLAT, 1)     ! BaR FiLl
  CALL VSOUT                                ! ViSualization OUTput
  CALL VSAXDR('Azimuth', 'Elevation', 'Gain')  ! AXis DRaw
  CALL ENDPAG
  END SUBROUTINE Vis14


Example vis15

This page uses frames, but your browser doesn't support them.


Example vis15

VS 15. Tinted bar chart

Picture of Output
  SUBROUTINE Vis15
  use spmodule

  INTEGER, PARAMETER :: NBARS=19
  REAL, DIMENSION(NBARS) :: RATIO
  REAL Day1, DayN, rMin, rMax, BarWidth
  DATA RATIO /1.01, 1.0,  0.98, 0.96, 0.97, 1.02, 1.11, 1.22, 1.26,  &
              1.25, 1.2,  1.16, 1.2,  1.25, 1.12, 1.23, 1.04, 1.0,  1.0/

  CALL PageStart
  CALL KTREAL('M', 1992, 1, 1.0, Day1)  ! Convert from (y,m,d) to ...
  CALL KTREAL('M', 1993, 8, 1.0, DayN)  ! ... date in internal format

  CALL LIMEXC(RATIO, NBARS, rMin, rMax) ! Find data LIMits
  BarWidth = (DayN-Day1)/NBARS             ! Width of bars
  CALL VS3DLM(Day1, DayN, 0.0, BarWidth, rMin, rMax) ! 3D LiMits
  CALL VSFIT('XY')                      ! x:y scales in proportion
  CALL VSAXFC(2, 3, 4)                  ! AXis plane Fill Colour
  CALL AXLBTP('X3', 'D')                ! TiMe scale on X 3d axis
  CALL AXSBDV('X3', Day1, DayN-Day1)    ! No AXis SuBDiVisions
  CALL VSAXGC(0, 0, -1)                 ! AXis Grid Colour
  CALL VSNEW                            ! ViSualization NEW picture
    CALL VSEDGV(1)                      ! EDGe Visibility ON
    CALL VSEDGC(0)                      ! EDGe Colour index 0
    CALL VSBLFL(Day1, DayN, 0.0, BarWidth, 0.999, 1.001)  ! Draw shelf
    CALL VSBRBZ(1.0)                    ! Set BaR Base at Z=1.0

    CALL VSUTOC(0.9, 1.3, 5, 13)        ! Relate User data TO Colours
    CALL VSBRTN(RATIO, NBARS, 1)        ! Draw BaR chart (TiNted)
  CALL VSOUT                            ! ViSualization OUTput

  CALL AXSBDV('X3', 0.0, 0.0)           ! Restore default subdivisions
  CALL AXCLR('Y3', 1)                   ! AXis CLear
  CALL VSAXDR(' ', ' ', ' ')            ! AXis DRaw

  CALL ENDPAG
  END SUBROUTINE Vis15


Example vis16

This page uses frames, but your browser doesn't support them.


Example vis16

VS 16. Stacked bar chart

Picture of Output
  SUBROUTINE Vis16
  use spmodule

  REAL, PARAMETER :: XPROP=50.0, YPROP=30.0, ZPROP=20.0
  INTEGER, PARAMETER :: NSUBJ=15, NGRADE=5, NYEAR=2
  REAL, DIMENSION(NSUBJ,NYEAR,NGRADE) :: Grades3dArr
  CHARACTER*18, DIMENSION(NSUBJ) :: Subject
  CHARACTER*1, DIMENSION(NGRADE) :: GRADE
  REAL xWidth, yWidth
  INTEGER i, j, k
  DATA GRADE/'A', 'B', 'C', 'D', 'E'/

  CALL PageStart
  OPEN(10,FILE='vis16.dat',STATUS='OLD')
    DO i = 1,NSUBJ                       ! Read data by subject
      READ(10,'(A)') Subject(i)
      READ(10, *) ((Grades3dArr(i,j,k), k=1,NGRADE), j=1,NYEAR)
    ENDDO
  CLOSE(10)

  CALL VSVRTP(10.0, 35.0, 40.0)         ! Set View by R Theta Phi
  CALL VS3DLM(0.0, REAL(NSUBJ), 1994.5, 1992.5, 0.0, 100.0)
  CALL VSFITP(XPROP, YPROP, ZPROP)            ! FiT Proportional axes

  CALL VSNEW                            ! ViSualization NEW picture
    CALL VSBRFC(3)                      ! Set BaR Fill Colour
    xWidth = REAL(NSUBJ)/XPROP
    yWidth = REAL(NYEAR)/YPROP
    CALL VSBRSZ(0.5-xWidth,0.5+xWidth,0.5-yWidth,0.5+yWidth)
    CALL VSBRFL(Grades3dArr, NSUBJ, NYEAR, NGRADE)   ! FiLl BaRs

  CALL VSOUT                            ! ViSualization OUTput
  CALL AXSBDV('Y3', 1.0, 1.0)           ! Set y AXis SuBDiVisions
  CALL AXCLR('X3', 1)                   ! CLeaR 3d X AXis
  CALL VSAXDR(' ', 'Year', 'percent')   ! AXis DRaw
  CALL AXTXT7('X3', 0.5, 1.0, Subject, NSUBJ)  ! Draw AXis TeXT

  CALL VSKEYS('Top', 'Right', GRADE, NGRADE, 'A level Grade')  ! SHaded KEYS

  CALL ENDPAG
  END SUBROUTINE Vis16


Example vis17

This page uses frames, but your browser doesn't support them.


Example vis17

VS 17. Drawing an individual bar

Picture of Output
  SUBROUTINE Vis17
  use spmodule

  INTEGER, PARAMETER :: NX=30, NY=30, NALL=NX*NY
  REAL, DIMENSION(NX, NY) :: GB2dArr, Base2dArr  ! Heights for GB; base for map
  REAL, DIMENSION(5) :: X, Y, Z
  INTEGER i
  DATA X/24.0, 12.0, 18.0, 15.0, 9.0/   ! Positions for bars in ...
  DATA Y/9.0, 12.0, 15.0, 21.0, 27.0/   ! ... matrix coordinates
  DATA Z/4.0, 17.0, 25.0, 30.0, 17.0/   ! Bar heights
  DATA Base2dArr/900*0.0/                   ! Base z value for map

  OPEN(10, FILE=' vis04.dat', STATUS='OLD') ! Read ...
    READ(10, *) GB2dArr                 ! ... heights above sea level
  CLOSE(10)

  CALL PageStart
  CALL VS3DLM(1.0, REAL(NX), 1.0, REAL(NY), 0.0, 30.0)  ! 3d scales
  CALL VSVRTP(0.0, 20.0, 40.0)          ! Set viewing position
  CALL VSAXFC(15, 15, -1)               ! Specify colour of backdrop
  CALL VSAXGC(0, 0, -1)                 ! Specify grid colour
  CALL VSNEW                            ! Start raster image
    CALL VSRGU(Base2dArr, GB2dArr, NX, NY)    ! Draw background map
    CALL VSUTOC(0.0, 30.0, 8, 14)       ! Map bar range to 8..14
    CALL VSEDGV(1)                      ! EDGe Visibility ON
    DO i = 1, 5                     ! Fill each bar in turn
      CALL VSBLTN(X(i)-0.5, X(i)+0.5, Y(i)-0.5, Y(i)+0.5, & ! BLock TiNt
                  0.0, Z(i), 0.0, Z(i)) ! ... (1x1) base from Z = 0.0
    ENDDO
  CALL VSOUT                            ! ViSualization OUTput
  CALL AXIS7('Z3', 'Wallabies')         ! Draw z axis
  CALL AXLOCN('U3', 'Following')        ! u-axis Following the key
  CALL VSK7V('Centre', 'Following', 30.0, 0.0, 'Wallaby') ! Key Vertical
  CALL ENDPAG
  END SUBROUTINE Vis17


Example vis18

This page uses frames, but your browser doesn't support them.


Example vis18

VS 18. Inquiring the size of stacked bars

Picture of Output
  SUBROUTINE Vis18
  use spmodule

  INTEGER, PARAMETER :: NSEX=2, NYEAR=2, NAGE=8
  REAL, DIMENSION(NSEX, NYEAR, NAGE) :: Pop3dArr
  CHARACTER*2, DIMENSION(NAGE) :: Age
  CHARACTER*6, DIMENSION(NSEX) :: Sex
  CHARACTER*4, DIMENSION(NYEAR) :: Year
  REAL zMin, zMax, zLev
  INTEGER i, j, k

  OPEN(10, FILE='vis18.dat', STATUS='OLD')
    READ(10, '(A,4F8.3)')(Age(i),     &
                          ((Pop3dArr(k,j,i), k=1,NSEX), j=1,NYEAR), i=1,NAGE)
    READ(10, '(2(A,1X))') (Sex(i), i=1,NSEX)
    READ(10, '(2(A,3X))') (Year(i), i=1,NYEAR)
  CLOSE(10)

  CALL PageStart
  CALL QVBRFL(Pop3dArr, NSEX, NYEAR, NAGE, zMin, zMax) ! Inquire bar size
  CALL VS3DLM(0.0, 2.0, 0.0, 2.0, zMin, zMax)     ! Set 3-d limits
  CALL VSFITP(1.0, 1.0, 1.0)                ! x-y-z axes same length
  CALL VSNEW
    CALL VSBRFC(3)                          ! Colour according to set
    CALL VSEDGV(1)                          ! EDGe Visibility on
    CALL VSBRSZ(0.3, 0.7, 0.3, 0.7)         ! BaR SiZe smaller
    CALL VSBRUP(1)                          ! Reverse driection of bar
    CALL VSBRFL(Pop3dArr, NSEX, NYEAR, NAGE) ! BaR FiLl
  CALL VSOUT

  CALL AXTXT7('X3', 0.5, 1.0, Sex, NSEX)    ! Annotate x-axis
  CALL AXTXT7('Y3', 0.5, 1.0, Year, NYEAR)  ! Annotate y-axis
  CALL AXIS7('Z3', 'population (000s)')     ! Draw z-axis

  CALL AXCLR('*3', 1)                       ! Clear z and u axes
  CALL AXLOCN('Z3', 'Following')            ! Following the picture ...
  CALL AXIS7('Z3', 'Age')                   ! ... Draw second z-axis
  zLev = 0.0
  DO i = 1,NAGE                             ! ... For each stack ...
    zLev = zLev + Pop3dArr(NSEX, NYEAR, i)  ! ... find top of bar ..
    CALL AXLAB7('Z3', zLev, Age(i))         ! ... and label
  ENDDO
  CALL ENDPAG
  END SUBROUTINE Vis18


Example vis19

This page uses frames, but your browser doesn't support them.


Example vis19

VS 19. Using 2-D coordinates

Picture of Output
  SUBROUTINE Vis19
  use spmodule

  REAL xMin, xMax, yMin, yMax           ! 2-d user scales

  CALL PageStart
  CALL BOXPIC(.TRUE.)                   ! Request BOX round PICture
  CALL VSLBOX(1)                        ! Request Limiting BOX
!
  CALL VSVRTP(0.0, 45.0, 45.0)          ! Set Viewing position
  CALL VSNEW                            ! ViSualization NEW picture
    CALL QVSCAL(xMin, xMax, yMin, yMax)         ! Inquire scales
    CALL SHDEBX(xMin, yMin, xMax, yMax, 10)     ! SHaDE BoX
  CALL VSOUT                            ! ViSualization OUTput

  CALL ENDPAG
  END SUBROUTINE Vis19


Example vis20

This page uses frames, but your browser doesn't support them.


Example vis20

VS 20. Annotation

Picture of Output
  SUBROUTINE Vis20
  use spmodule

  REAL X, Y, D                           ! 2-d (x,y) and depth

  CALL PageStart
  CALL VSVRTP(0.0, 45.0, 45.0)           ! Set Viewing position
  CALL VSLBOX(1)                         ! Request Limiting BOX
  CALL VSNEW                             ! ViSualization NEW picture
    CALL KVXYD(1.0, 1.0, 1.0, X, Y, D)     ! Convert to (X,Y,D)
    CALL CP7LB(X, Y, '(1,1,1)')            ! Draw caption at (X,Y)
    CALL KVXYD(0.0, 0.0, 0.0, X, Y, D)     ! Convert to (X,Y,D)
    CALL CP7PT(X, Y, 31, '(0,0,0)')        ! Add caption/marker at (X,Y)
    CALL KVXYD(-1.0, -1.0, -1.0, X, Y, D)  ! Convert to (X,Y,D)
    CALL LABJST('Top', 'Right')            ! Justify Top/Right
    CALL CP7LB(X, Y, '(-1,-1,-1)')         ! Add caption at (X,Y)
  CALL VSOUT                             ! ViSualization OUTput
  CALL TITLE7('Over', 'Left', 'Simple captions')
  CALL TITLE7('Lower', 'Centre', 'Different Types of Annotation')

  CALL ENDPAG
  END SUBROUTINE Vis20


Example vis21

This page uses frames, but your browser doesn't support them.


Example vis21

VS 21. IsoSurface from a 3-D array

Picture of Output
  SUBROUTINE Vis21
  use spmodule

  INTEGER, PARAMETER :: NX=21, NY=21, NZ=21
  REAL, DIMENSION(NX, NY, NZ) :: V3dArr

  OPEN(10, FILE='vis21.dat', STATUS='OLD')
    READ(10,*) V3dArr                          ! Read data
  CLOSE(10)

  CALL PageStart
  CALL VSNEW                                   ! ViSualization NEW picture
    CALL VSIS(V3dArr, NX, NY, NZ, -0.3)        ! Draw IsoSurface of V = -0.3
  CALL VSOUT                                   ! ViSualization OUTput

  CALL ENDPAG
  END SUBROUTINE Vis21


Example vis22

This page uses frames, but your browser doesn't support them.


Example vis22

VS 22. Light sourcing IsoSurfaces

Picture of Output
  SUBROUTINE Vis22
  use spmodule

  INTEGER, PARAMETER :: NX=21, NY=21, NZ=21
  REAL, DIMENSION(NX, NY, NZ) :: V3dArr

  OPEN(10, FILE='vis21.dat', STATUS='OLD')
    READ(10,*) V3dArr                          ! Read data
  CLOSE(10)

  CALL PageStart
  CALL GROUP(2, 1)

  CALL VSCGS(0.0, 1.0, 2, 15)           ! Set grey scale palette
  CALL VSUTOC(0.0, 1.0, 2, 15)          ! Map intensities to palette

  CALL VSLSSM(1)                        ! Default shading method
  CALL VSNEW                            ! ViSualization NEW picture
    CALL VSIS(V3dArr, NX, NY, NZ, -0.3)      ! Draw IsoSurface of V = -0.3
  CALL VSOUT                            ! ViSualization OUTput

  CALL VSLSSM(2)                        ! Smooth shading method
  CALL VSNEW                            ! ViSualization NEW picture
  CALL VSIS(V3dArr, NX, NY, NZ, -0.3)   ! Draw IsoSurface of V = -0.3
  CALL VSOUT                            ! ViSualization OUTput

  CALL ENDPAG
  END SUBROUTINE Vis22


Example vis23

This page uses frames, but your browser doesn't support them.


Example vis23

VS 23. Contours of one data set on the IsoSurface of another

Picture of Output
  SUBROUTINE Vis23
  use spmodule

  INTEGER, PARAMETER :: MINCIX=2, MAXCIX=15
  INTEGER, PARAMETER :: NX=21, NY=21, NZ=21
  REAL, DIMENSION(NX, NY, NZ) :: V3dArr, U3dArr

  OPEN(10, FILE='vis21.dat', STATUS='OLD')
    READ(10,*) V3dArr, U3dArr                          ! Read data
  CLOSE(10)

  CALL PageStart

  CALL VSCRGB(MINCIX, 1.0, 1.0, 0.0)    ! Palette from yellow
  CALL VSCRGB(MAXCIX, 1.0, 0.0, 0.0)    ! ...to Red
  CALL VSCRNG(MINCIX, MAXCIX)           ! Fill in rest of palette
  CALL VSUTOC(0.0, 7.0, MINCIX, MAXCIX) ! Map intensities to palette

  CALL VSLSSM(2)                        ! Smooth shading method
  CALL VSNEW                            ! ViSualization NEW picture
    CALL VSISU(V3dArr, U3dArr, NX, NY, NZ, -0.3)  ! Draw IsoSurface of V = -0.3
  CALL VSOUT                            ! ViSualization OUTput

  CALL ENDPAG
  END SUBROUTINE Vis23


Example vis24

This page uses frames, but your browser doesn't support them.


Example vis24

VS 24. Specifying the x-y-z values associated with a regular grid

Picture of Output
  SUBROUTINE Vis24
  use spmodule

  REAL, PARAMETER :: XMIN=-10.0, YMIN=-5.0, ZMIN=0.0
  REAL, PARAMETER :: XMAX=10.0, YMAX=15.0, ZMAX=15.0
  REAL, PARAMETER :: XDIV=1.0, YDIV=1.0, ZDIV=0.75
  INTEGER, PARAMETER :: NX=21, NY=21, NZ=21
  REAL, DIMENSION(NX, NY, NZ) :: V3dArr

  OPEN(10, FILE='vis21.dat', STATUS='OLD')
    READ(10,*) V3dArr                          ! Read data
  CLOSE(10)

  CALL PageStart

  CALL VSCGS(0.0, 1.0, 2, 15)           ! Set grey scale palette
  CALL VSUTOC(0.0, 1.0, 2, 15)          ! Map intensities to palette

  CALL VS3DLM(XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX) ! Set true data scales
  CALL VSEQX(XMIN, XDIV)                ! Map data into scales in X
  CALL VSEQY(YMIN, YDIV)                ! and Y
  CALL VSEQZ(ZMIN, ZDIV)                ! and Z
  CALL VSLSSM(2)                        ! Smooth shading method
  CALL VSNEW                            ! ViSualization NEW picture
    CALL VSIS(V3dArr, NX, NY, NZ, -0.3)      ! Draw IsoSurface of V = -0.3
    CALL VSIS(V3dArr, NX, NY, NZ, 0.3)       ! Also draw IsoSurface of V = 0.3
  CALL VSOUT                            ! ViSualization OUTput
  CALL VSAXDR('X', 'Y', 'Z')

  CALL ENDPAG
  END SUBROUTINE Vis24


Example vis25

This page uses frames, but your browser doesn't support them.


Example vis25

VS 25. Drawing an IsoSurface in slices

Picture of Output
  SUBROUTINE Vis25
  use spmodule

  INTEGER, PARAMETER :: NX=21, NY=21, NZ=21
  REAL, DIMENSION(NX, NY, NZ) :: V3dArr
  INTEGER i

  OPEN(10, FILE='vis21.dat', STATUS='OLD')
    READ(10,*) V3dArr                          ! Read data
  CLOSE(10)

  CALL PageStart
  CALL GROUP(2, 1)

  CALL VSCGS(0.0, 1.0, 2, 15)           ! Set grey scale palette
  CALL VSUTOC(0.0, 1.0, 2, 15)          ! Map intensities to palette

  CALL VSLSSM(2)                        ! Smooth shading method
  CALL VSNEW                            ! ViSualization NEW picture
    CALL VSIS(V3dArr, NX, NY, NZ, -0.3)      ! Draw IsoSurface of V = -0.3
  CALL VSOUT                            ! ViSualization OUTput

  CALL VSLSLD(45.0, 5.0)                ! Move light source
  CALL VS3DLM( 0.0, 20.0, 0.0, 20.0, 0.0, 20.0) ! Define scales
  CALL VSISND(1)                        ! Don't draw end planes
  CALL VSNEW                            ! ViSualization NEW picture
    DO i=1,NZ-3                         ! Draw NZ single slices
      CALL VSEQZ(i - 1.0, 1.0)          ! Set position of slice
      CALL VSIS(V3dArr(1, 1, i), NX, NY, 4, -0.3) ! Draw IsoSurface slice
    ENDDO
  CALL VSOUT                            ! ViSualization OUTput

  CALL ENDPAG
  END SUBROUTINE Vis25


TABLES.HTM

This page uses frames, but your browser doesn't support them.


Useful Tables

Table 1. | Axis types
Table 2. | Availability of axis facilities
Table 3. | Direction of axes
Table 4. | Position of Keys and Captions
Table 5. | Justification within a key or caption area
Table 6. | Area associated with key/caption
Table 7. | Time/date component
Table 8. | Faces of skirts, backdrops and bases
Table 9. | Representation of pen colours


Axis types

This page uses frames, but your browser doesn't support them.


Axis types

Table 1. Axis types

CHAXIS is an argument to the following functions: AXCLR, AXCRSS, AXGRID, AXIS7, AXLAB7, AXLBAN, AXLBGP, AXLBJS, AXLBLV, AXLBSL, AXLBSP, AXLBTM, AXLBTP, AXLOCN, AXMAJ, AXMIN, AXRNGE, AXSBDV, AXSBMN, AXSBTK, AXSUBS, AXTXT7 and VSROT.

CHAXIS | Type of axis
"XC" | Cartesian x-axis
"YC" | Cartesian y-axis
"RP" | Polar r-axis (radial)
"AP" | Polar thetaaxis (angular)
"XI" | Isometric x-axis
"YI" | Isometric y-axis
"ZI" | Isometric z-axis
"NB" | Bar chart numeric axis
"LB" | Bar chart label axis
"NW" | Waterfall chart numeric axis
"LW" | Waterfall chart label axis
"X3" | 3-D x-axis (ViSualization only)
"Y3" | 3-D y-axis (ViSualization only)
"Z3" | 3-D z-axis (ViSualization only)
"U3" | 3-D u-axis (ViSualization only)


Availability of axis facilities

This page uses frames, but your browser doesn't support them.


Availability of axis facilities

Table 2. Availability of axis facilities

function | XC | YC | RP | AP | XI | YI | ZI | NB | LB | NW | LW | X3 | Y3 | Z3 | U3
AXCLR | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y
AXCRSS | Y | Y | Y | Y | N | N | N | N | N | Y | Y | N | N | N | N
AXGRID | Y | Y | Y | Y | N | N | N | Y | Y | Y | Y | N | N | N | N
AXIS7 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N
AXLAB7 | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | N
AXLBAN | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | U | U | U | N
AXLBGP | Y | Y | Y | N | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y
AXLBJS | Y | Y | Y | N | N | N | Y | Y | N | Y | Y | N | N | N | N
AXLBLV | NL | NL | N | Y | N | N | N | N | N | N | N | N | N | N | N
AXLBSL | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | N | N | N | N
AXLBSP | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | N
AXLBTM | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | N
AXLBTP | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | N
AXLOCN | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y
AXMAJ | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | N
AXMIN | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | N
AXRNGE | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y
AXSBDV | L | L | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y
AXSBMN | L | L | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y
AXSBTK | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | U | U | U | U
AXSUBS | L | L | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y
AXTXT7 | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | N

NL: non-linear scales only
L: Linear scales only
U: Preceding, Following and Inside unavailable


Direction of axes

This page uses frames, but your browser doesn't support them.


Direction of axes

Table 3. Direction of axes

CHAXIS is an argument to the functions listed above, but the direction of axes is of particular relevance to the following functions: AXIS7, AXLBAN, AXLBJS, AXLOCN and AXSBTK. The direction of an axis is defined as follows:

CHAXIS | Direction of axis
"XC" | Left to right of picture
"YC" | Bottom to top of picture
"RP" | Centre to outside of polar chart
"AP" | see THZERO
"XI"/"YI" | from front to back of surface picture
"ZI" | Bottom to top
"NB"/"LB" | as x-axis or y-axis depending on orientation
"NW"/"LW" | as x-axis or y-axis
"P"receding and "F"ollowing are positions relative to the direction of an axis and describe positions unambiguously on all types of axis. For example, on Cartesian axes, "P" refers to the left of a horizontal axis and the bottom of a vertical axis; "F" refers to the right of a horizontal axis and the top of a vertical axis.


Position of Keys and Captions

This page uses frames, but your browser doesn't support them.


Position of Keys and Captions

Table 4. Position of Keys and Captions

VCHAR and HCHAR are arguments to the following functions: DEFCAP, DEFKEY, KPOSXY, MPK7H, MPK7V, RESNXT, SHKEYS, TITLE7, VSK7H, VSK7V and VSKEYS.

VCHAR | Vertical position | HCHAR | Horizontal position
"N" | North (highest on page) | "W" | West (far left of page)
"H" | Higher than group |  |
"O" | Over picture | "P" | Preceding picture
"T" | Top of picture | "L" | Left of picture
"C" | Centre of picture | "C" | Centre of picture
"B" | Bottom of picture | "R" | Right of picture
"U" | Under picture | "F" | Following picture
"L" | Lower than group |  |
"S" | South (lowest on page) | "E" | East (far right of page)
("N"orth,"C"entre), ("S"outh,"C"entre) and all combinations with HCHAR = "E"ast or "W"est refer to positions relative to the page. Other combinations with VCHAR = "N"orth, "S"outh, "H"igher or "L"ower refer to positions relative to the group of pictures. All other combinations refer to positions on the picture.


Justification within a key or caption area

This page uses frames, but your browser doesn't support them.


Justification within a key or caption area

Table 5. Justification within a key or caption area

VJST and HJST are arguments to the following functions: DEFPOS and KPOSXY.

VJST | Vertical Justification
"T" | Top of title, key or caption area
"C" | Halfway between "T" and "B"
"B" | Bottom of title, key or caption area
"D" | Default -- bottom of title, key or caption area
HJST | Horizontal Justification
"L" | At the left of the title, key or caption area
"C" | Halfway between "L" and "R"
"R" | At the right of the title, key or caption area
"D" | Default -- left of title, key or caption area


Area associated with key/caption

This page uses frames, but your browser doesn't support them.


Area associated with key/caption

Table 6. Area associated with key/caption

ITYPE is an argument to the following functions: DEFCAP and DEFKEY.

ITYPE | associated area
1 | this area is associated only with the current picture/page which must have already been started.
2 | a blanked area which behaves as ITYPE=1 except that subsequent drawing on the current page excludes any drawing from this area except that which is specifically aimed at it; it is best called after NEWPIC but before the main picture is drawn (this may be slower because SIMPLEPLOT must check for overlapping).
3 | a reserved area which is kept free from all drawing except that which is specifically aimed at it; each time a new picture/page is started, a suitable character size is calculated for each reserved area; it must be called before NEWPIC (or NEWPAG) but does nothing until a new picture (or page) is started. Reserved areas can be cancelled by another call to DEFCAP or DEFKEY with ITYPE=3, the same values of VCHAR and HCHAR, but with NROWS and/or NCOLMS equal to zero.


Time/date component

This page uses frames, but your browser doesn't support them.


Time/date component

Table 7. Time/date component

COMPNT is an argument to the following functions: AXLBTM (values of COMP1, COMP2 and COMP3), TIMFMT and TIMLDC.

COMPNT | Meaning | Default CHTYPE
"YE" | Year | "y"
"MO" | Month | "M"
"WE" | Week number | "W"
"DM" | Day of the month | "D"
"DW" | Day of the week | "w"
"DE" | Days elapsed | "d"
"HO" | Hour | "h"
"MI" | Minute | "'"
"SE" | Second | """
A subset of these arguments are available for TIMLDA. The default arrays of labels stored by SIMPLEPLOT are as follows:

"DW" | "DM" | "MO" | "HO"
Sunday | 1st | January | Midnight
Monday | 2nd | February | 1am
Tuesday | 3rd | March | 2am
Wednesday | 4th | April | 3am
Thursday | 5th | May | :
Friday | 6th | June | 11am
Saturday | 7th | July | Noon
 | 8th | August | 1pm
 | 9th | September | 2pm
 | 10th | October | 3pm
 | 11th | November | :
 | etc. | December |


Faces of skirts, backdrops and bases

This page uses frames, but your browser doesn't support them.


Faces of skirts, backdrops and bases

Table 8. Faces of skirts, backdrops and bases

CHFACE is an argument to the following function: ISSPAT.

Wildcard CHFACE | Component | Options
"*I" | Inner skirt | "AI", "BI", "CI", "DI"
"*O" | Outer skirt | "AO", "BO", "CO", "DO"
"*B" | Backdrop | "AB", "BB", "CB", "DB"
"G*" | Base | "GI", "GO"

Options | Description
"A*" | Plane of minimum X
"B*" | Plane of maximum Y
"C*" | Plane of maximum X
"D*" | Plane of minimum Y
"GI" | inner base
"GO" | outer base
"ND" | Skirts dropped from no-data values


Representation of pen colours

This page uses frames, but your browser doesn't support them.


Representation of pen colours

Table 9. Representation of pen colours

HUE, BRIGHT and SAT are arguments of PENHLS and VSCHLS; RED, GREEN and BLUE are arguments of PENRGB and VSCRGB.

Colour | HUE | BRIGHT | SAT | RED | GREEN | BLUE
Black | any | 0.0 | any | 0.0 | 0.0 | 0.0
White | any | 1.0 | any | 1.0 | 1.0 | 1.0
Red | 120.0 | 0.5 | 1.0 | 1.0 | 0.0 | 0.0
Green | 240.0 | 0.5 | 1.0 | 0.0 | 1.0 | 0.0
Blue | 0.0 | 0.5 | 1.0 | 0.0 | 0.0 | 1.0
Cyan | 300.0 | 0.5 | 1.0 | 0.0 | 1.0 | 1.0
Magenta | 60.0 | 0.5 | 1.0 | 1.0 | 0.0 | 1.0
Yellow | 180.0 | 0.5 | 1.0 | 1.0 | 1.0 | 0.0
Orange | 150.0 | 0.5 | 1.0 | 1.0 | 0.5 | 0.0
Pink | 120.0 | 0.8 | 1.0 | 1.0 | 0.6 | 0.6
Grey | any | 0.5 | 0.0 | 0.5 | 0.5 | 0.5


Summary

This page uses frames, but your browser doesn't support them.


Summary 1

This page uses frames, but your browser doesn't support them.


Summary 1

Summary 1. Starting a new picture and/or page

AXES7 | Start a new picture and draw axes.
FNSURF | Start a new picture and draw a surface from a 3-D function z=f(x,y).
ISBRFL | Fill a Isometric 3-D barchart.
ISNEW | Start a null isometric picture.
NEWPAG | Start a new SIMPLEPLOT page without starting a new picture.
NEWPIC | Start a new 2-D picture without drawing an axis framework.
POLAR7 | Start a new polar picture and draw axis framework.
RGSURF | Start a new picture and draw a surface from 3-D data on a regular grid.
VSNEW | Start a new ViSualization picture.
XSURF | Start a new picture and draw a surface from 3-D data on an x-specified grid.
XYSURF | Start a new picture and draw a surface from 3-D data on an x-y specified grid.
YSURF | Start a new picture and draw a surface from 3-D data on a y-specified grid.
ZSURF | Start a new picture and draw a surface from ungridded 3-D data (without neighbours).
ZZSURF | Start a new picture and draw a surface from ungridded 3-D data (with neighbours).


Summary 2

This page uses frames, but your browser doesn't support them.


Summary 2

Summary 2. 2-D coordinate system and scales

COORDS | Change the interpretation of coordinates.
EQSCAL | Specify similar linear scales for Cartesian or polar plotting.
FNAREA | Specify the x-y plotting ranges for 3-D functions, z=f(x,y).
KSCALE | Convert scale limits such that they span whole subdivisions.
POLRNG | Specify the user-defined polar coordinate system.
POLZER | Specify the convention used for polar coordinates.
QVSCAL | Inquire the scale limits in SIMPLEPLOT user coordinates corresponding to the current projected plotting area.
SCALES | Specify Cartesian scales for all 2-D plotting.
XSCALE | Specify the Cartesian horizontal scale for all 2-D plotting.
YSCALE | Specify the Cartesian vertical scale for all 2-D plotting.


Summary 3

This page uses frames, but your browser doesn't support them.


Summary 3

Summary 3. 2-D data manipulation

LIMEXC | Find the minimum and maximum values in a REAL array.
LIMIDX | Find the position of each of the minimum and maximum values of a REAL array.
LIMINC | Find the minimum and maximum values in a REAL array.
NODATA | Specify the REAL value to be used to represent no-data values.
POLIN | Transfer polynomial coefficients before plotting curves of polynomial functions.
POLOUT | Transfer polynomial coefficients after plotting regression curves.
POLY | Evaluate a polynomial function.


Summary 4

This page uses frames, but your browser doesn't support them.


Summary 4

Summary 4. Plotting data sets

BRKNAR | Draw a curve from an array of values, using a specified broken line pattern.
BRKNCV | Draw a curve from a set of coordinates, using a specified broken line pattern.
BRKNFN | Draw a curve of a user-defined function, y=f(x), using the specified linestyle.
BRKNPR | Draw the user-defined parametric function using a specified broken line pattern.
DRAWAR | Draw a curve from an array of values.
DRAWCV | Draw a curve from a set of coordinates in parallel arrays.
DRAWFN | Draw a curve of a user-defined function, y=f(x) (or r=f(theta)).
DRAWPR | Draw the user-defined parametric function.
LABCV7 | Draw a labelled curve.
MARKAR | Draw marker symbols at a set of values held in an array.
MARKCV | Draw marker symbols at a set of coordinates.
SHDEA2 | Shade between 2 curves defined by values held in 2 arrays.
SHDEAR | Draw a curve from an array of values, and shade under it.
SHDEC2 | Shade the area between 2 curves specified by sets of coordinates.
SHDECV | Draw a curve from a set of coordinates, and shade under it.
SHDEFN | Draw a curve of a user-defined function, y=f(x), and shade under it.
SHDEPR | Draw the user-defined parametric function, and shade inside it.
VSPGFL | Fill a planar polygon with the current fill index in a ViSualization image.
VSPGTN | Tint a planar polygon from user data values in a ViSualization image.
VSPLDR | Draw a polyline through a succession of (x,y,z) data points in a ViSualization image.
VSPLTN | Tint a polyline based on user data values in a ViSualization image.
VSPMC | Specify the colour index for subsequent markers.
VSPMDR | Draw a set of markers of type MKTYPE in a ViSualization image.
VSPMMG | Specify the scaling factor for subsequent markers.


Summary 5

This page uses frames, but your browser doesn't support them.


Summary 5

Summary 5. Bar charts, histograms and pie charts

BARCHT | Draw a bar chart on the current picture.
BARDIR | Specify the directions of bar chart scales.
BARFMT | Specify how bars in a bar chart occupy the space available.
BARRNG | Specify the range of the numerical scale for bar charts.
BARTYP | Specify the type of bar chart required.
HSTCLC | Calculate data frequencies from raw data.
HSTCUM | Draw a cumulative histogram from frequencies.
HSTDIR | Specify the directions of scales for histograms drawn by HSTGRM.
HSTGRM | Draw a histogram from raw data on the current picture.
HSTPLT | Draw a histogram from frequencies.
HSTRNG | Specify the range of scales for histograms drawn by HSTGRM.
HSTSHD | Specify a shading pattern for the boxes used to draw a histogram.
HSTTYP | Specify the type of histogram to be plotted by HSTGRM.
ISBRBZ | Specify the base z value for bars in Isometric 3-D barcharts.
ISBRFC | Specify how colour sequences should be used on subsequent Isometric 3-D barcharts.
ISBRFL | Fill a Isometric 3-D barchart.
ISBRSZ | Specify the widths of bars in Isometric 3-D barcharts.
ISBRUP | Specify the stacking direction for Isometric 3-D barcharts.
PIBOXL | Specify whether a box is to be drawn around pie chart labels.
PIDIAM | Specify a reduced diameter for pie charts.
PIECHT | Draw a pie chart on the current picture.
PIEXPL | Specify the amount by which each pie chart segment is to be exploded.
PIINCL | Specify what elements are to be included in pie chart segment labels.
PIOMIT | Specify which segments are to be omitted from pie charts.
PIPOSL | Specify the position of segment labels on pie charts.
PITILT | Specify the tilt of pie charts.
QIBRFL | Inquire the z scale required by an Isometric 3-D barchart.
QVBRFL | Inquire the z scale required by a ViSualization 3-D barchart.
QSPLOT | Inquire the current version of SIMPLEPLOT.
SGEXPL | Specify the amount by which one pie chart segment is to be exploded.
SGOMIT | Specify whether a pie chart segment is to be omitted.
VSBLFL | Fill a 3-D block on a ViSualization picture.
VSBLTN | Tint a 3-D block on a ViSualization picture.
VSBRBZ | Specify the base z value for bars in ViSualization 3-D barcharts.
VSBRFC | Specify how colour sequences should be used on subsequent ViSualization 3-D barcharts.
VSBRFL | Fill a ViSualization 3-D barchart.
VSBRSZ | Specify the widths of bars in ViSualization 3-D barcharts.
VSBRTN | Tint a ViSualization 3-D barchart.
VSBRUP | Specify the stacking direction for ViSualization 3-D barcharts.


Summary 6

This page uses frames, but your browser doesn't support them.


Summary 6

Summary 6. Point-by-point plotting

ARROW | Draw an arrow between two specified points.
BREAK | Force a break between separate sequences of point-by-point plotting.
BRKNBX | Draw a box, using a specified broken line pattern.
BRKNCL | Draw a circular function with specified centre, radius and broken line pattern.
BRKNPT | Draw a broken line to the point (x,y).
DRAWBX | Draw a box.
DRAWCL | Draw a circular function with specified centre and radius.
DRAWLN | Draw a straight line between a point and zero.
JOINPT | Draw a straight line to the point (x,y) (or (R,theta))).
MARKPT | Draw a marker symbol at a specified point.
RANGE | Draw a line indicating a range of values.
SHDEBX | Draw a shaded box.
SHDECL | Draw a circular function with specified centre and radius, and to shade inside it.


Summary 7

This page uses frames, but your browser doesn't support them.


Summary 7

Summary 7. Annotation labelling at user coordinates

CP7LB | Draw a caption at (x,y).
CP7PT | Draw a marker symbol at (x,y) with a caption.
CP7XC | Draw a horizontally centred caption.
CP7YC | Draw a vertically centred caption.
FIGFMT | Specify the format of REAL numbers drawn on pictures.
FIGSGN | Specify the sign conventions for positive numbers and exponents.
KNUMB | Convert an INTEGER value to the equivalent text string.
KREAL | Convert a REAL value to the equivalent text string.
KXYXY | Convert coordinates of a point to other units.
LABANG | Specify the angle of labels drawn by CP7LB, CP7XC or CP7YC.
LABJST | Specify the justification of labels drawn by CP7LB, CP7LBM, CP7XC or CP7YC.


Summary 8

This page uses frames, but your browser doesn't support them.


Summary 8

Summary 8. Axes

AXCLR | Specify the level of annotation drawn with the axis.
AXCRSS | Specify the intersection of one axis with its natural pair.
AXES7 | Start a new picture and draw axes.
AXGRID | Specify the style of grids drawn in association with axis subdivisions.
AXIS7 | Draw an axis on the current picture.
AXLAB7 | Draw a single axis annotation label and tick mark.
AXLBAN | Specify the style of annotation labels on an axis.
AXLBGP | Specify the level of axis annotation near an intersection.
AXLBJS | Specify the justification of axis annotation.
AXLBLV | Specify the level of additional annotation on some axes.
AXLBSL | Specify the slope of used-defined axis annotation.
AXLOCN | Specify the location of an axis relative to the picture.
AXMAJ | Draw a single major axis subdivision.
AXMIN | Draw a single minor axis subdivision.
AXRNGE | Specify the subrange over which an axis is to be drawn.
AXSBDV | Specify the interval at which a linear axis is to be subdivided and annotated.
AXSBMN | Specify the minor subdivisions on a linear axes independently of major subdivisions.
AXSBTK | Specify the style of tick marks on an axis.
AXSUBS | Specify the numbers of major and minor subdivisions on linear axes.
AXTXT7 | Draw a set of axis annotation labels and tick marks.
ISAXD7 | Draw 3-D axes on an isometric picture.
ISAXES | Specify whether surface pictures are to include 3-D axes.
ISAXFC | Specify the colours for filled rear planes of Isometric pictures.
ISAXGC | Specify the colour indices for grid lines on the rear planes of Isometric pictures.
POLAR7 | Start a new polar picture and draw axis framework.
VSAXDR | Draw 3-D axes on a ViSualization picture.
VSAXFC | Specify the colours for filled rear planes of ViSualization pictures.
VSAXGC | Specify the colour indices for grid lines on the rear planes of ViSualization pictures.


Summary 9

This page uses frames, but your browser doesn't support them.


Summary 9

Summary 9. Time and date based data

AXLBSP | Specify separators between label components of time-date axis annotation.
AXLBTM | Specify components for time-date axis annotation.
AXLBTP | Specify numeric or time-date axis annotation.
KTREAL | Convert time-date value from external time-date triple to internal REAL form.
KTSTR | Convert one component of encoded time-date value from internal REAL to text.
KTTRI | Convert encoded time-date value from internal REAL to external triple form.
TIMFMT | Specify the format for one component of time-date data.
TIMLDA | Load a new set of text labels for one component of time-date axis annotations.
TIMLDC | Load a new prefix/suffix character for numeric labels of one component of time-date axis annotations.


Summary 10

This page uses frames, but your browser doesn't support them.


Summary 10

Summary 10. Titles, keys and captions

ADDCP7 | Draw a caption in a previously defined area.
ADDJST | Specify how entries in caption areas/keys are to be justified.
ADDTOP | Reset the current key/caption usage pointer to the top of sequence.
BLNKKY | Add a blank entry in a key or caption area.
BOTHK7 | Draw an annotated sample of a broken line pattern and marker symbol in a key.
BOXCAP | Specify whether boxes are to be drawn around caption areas.
BOXKY | Specify whether boxes are to be drawn around keys.
DEFCAP | Define an area for captions.
DEFKEY | Define an area for a key box.
DEFKYW | Specify the width of samples in a key box.
DEFPOS | Specify page coordinates of the movable descriptor, "M".
FILLK7 | Draw an annotated sample of fast area-fill characters in a key.
KPOSXY | Convert a descriptive position into page coordinates.
LINEK7 | Draw an annotated sample of a broken line pattern in a key.
MARKK7 | Draw an annotated sample of a marker symbol in a key.
MPK7H | Draw a complete horizontal key to a shaded contour map.
MPK7V | Draw a complete vertical key to a shaded contour map.
PUTCP7 | Draw a caption in a specified position in a caption area.
QKYCAP | Inquire the size of a key or caption area to hold a set of captions.
RESCLR | Cancel all areas reserved for captions and keys.
RESNXT | Specify the reserved area which is to be used next.
SHDEK7 | Draw an annotated sample of a shading pattern in a key.
SHKEYS | Draw a complete key to a sequence of shading patterns.
TITLE7 | Draw a text string as a title to the picture, group or page.
VSK7H | Draw a horizontal key.
VSK7V | Draw a vertical key.
VSKEYS | Draw a complete key to a sequence of distinct shading patterns.


Summary 11

This page uses frames, but your browser doesn't support them.


Summary 11

Summary 11. Drawing characteristics for 2-D graph plotting

ARHEAD | Specify the proportional size of arrow heads.
ARSHFT | Specify whether arrows are to include a shaft.
CVLBJS | Specify the justification of the label drawn on a labelled curve.
CVLBPS | Specify the reference point for the label drawn on a labelled curve.
CVTYPE | Specify the type of curve to be drawn on 2-D graphs.
FNRNGE | Specify a restricted x range over which to plot 2-D functions y=f(x).
NODATA | Specify the REAL value to be used to represent no-data values.
SHTYPE | Specify the shading boundary used for unclosed curves.


Summary 12

This page uses frames, but your browser doesn't support them.


Summary 12

Summary 12. General plotting characteristics

BUNLPR | Specify the order of priority of bundled line-drawing attributes.
CHSET | Specify an alternative source of character sets or fonts.
CLIPLV | Specify the clipping region for all plotting.
FFSET | Specify an alternative source of fast area-fill characters.
LINSET | Specify an alternative source of broken line patterns.
MKSET | Specify an alternative source of marker symbols.
RIDDLE | Specify the level of elimination of redundant points for polylines.
SHSET | Specify an alternative source of area-fill patterns for polygon shading.
THCKMG | Specify the pen thickness to be used for all plotting.


Summary 13

This page uses frames, but your browser doesn't support them.


Summary 13

Summary 13. Text and symbol attributes

CHDESC | Specify characteristics of adjustable software characters.
CHMASK | Specify whether text is to be masked.
CHUNDL | Specify the number of times text is underlined.
MKMASK | Specify whether marker symbols are to be masked.
MKSIZE | Specify a fixed size of marker symbols independent of text size.
QSTR7 | Inquire the physical size of a text string.
STRCHS | Specify the three special characters to be used in escape sequences.
STRLV | Specify the level of interpretation of embedded commands in text strings.
TEXTAR | Specify the aspect ratio of text characters.
TEXTLF | Specify the vertical separation of lines of text.
TEXTMG | Specify the magnification of text.
TEXTMN | Specify the minimum text size.
TEXTSL | Specify the slant of hardware text.
TEXTSZ | Specify the fixed character width of all text.
THCKMG | Specify the pen thickness to be used for all plotting.


Summary 14

This page uses frames, but your browser doesn't support them.


Summary 14

Summary 14. Layout

BOXGRP | Specify whether boxes are to be drawn around groups of pictures.
BOXPG2 | Specify how the boundaries of pages are to be drawn.
BOXPIC | Specify whether boxes are to be drawn around individual pictures.
FITPAG | Specify the interpretation of PAGE on fixed picture devices.
GROUP | Specify how pictures are to be grouped on the SIMPLEPLOT page.
MARGDV | Specify the distribution of picture margins.
MARGIN | Specify the overall size of the margin around individual pictures.
MOVEON | Specify whether to superimpose pictures.
PAGE | Specify the size of the SIMPLEPLOT page.
PAGMRG | Specify the size and distribution of peripheral margins.
PAGPOS | Specify the position of the SIMPLEPLOT page within the plotting area.
PAGVW | Specify the orientation of a page when page dimensions have not been specified.
PAPINC | Specify the length of paper on a device with continuous paper feed.
PERIM | Draw a rectangular box around the current picture.
PERIPH | Specify the overall size of the periphery around a group of pictures.
PGFULL | Specify whether picture space is to be maximized.
PICMRG | Specify the size of individual picture margins.
PICPOS | Specify the coordinate position of each new picture.
PICRST | Reset the current picture to the size, position and scales saved as number N.
PICSAV | Save the size, position and scales of the current picture as number N.
PICSIZ | Specify the size of pictures.
QPAGE | Inquire the maximum page size of the current device.
QPIC | Inquire the position and size of the current picture.


Summary 15

This page uses frames, but your browser doesn't support them.


Summary 15

Summary 15. Pen/bundle control

BUNLPR | Specify the order of priority of bundled line-drawing attributes.
ONEPEN | Draw the colours of a multi-coloured picture separately.
PEN | Select the pen to be used for all plotting.
PENHLS | Change the device palette using HLS conventions.
PENRGB | Change the device palette using RGB conventions.
PENRST | Reset the the device palette.
SETPNS | Specify the pens associated with the four pen pointers.
SHPEN | Specify single colour shading patterns with the specified pen.
SQPEN | Specify a sequence of pens/bundles.
THCKMG | Specify the pen thickness to be used for all plotting.
VSCHLS | Set hue, lightness and saturation levels for the ViSualization palette.
VSCRGB | Specify red, green and blue levels for the ViSualization palette.
VSCRNG | Set a graded range of colours in the ViSualization palette.
WFPNS | Specify the pens used in waterfall charts.


Summary 16

This page uses frames, but your browser doesn't support them.


Summary 16

Summary 16. Shading control

FFSET | Specify an alternative source of fast area-fill characters.
FFSIZE | Specify the size of fast area-fill characters.
MPTYPE | Specify the shading method used for shaded contour maps and map keys.
RASTER | Specify the shading technique to be used for shaded surfaces.
SHANGS | Specify the angles used in software shading patterns.
SHCOLS | Specify a restricted number of colours used for shading patterns.
SHDESC | Specify all characteristics of shading patterns.
SHEDGE | Specify whether to draw a boundary around a shaded area.
SHGAP | Specify the spacing of software shading lines.
SHPATT | Specify one of a sequence of shading patterns.
SHPEN | Specify single colour shading patterns with the specified pen.
SHSET | Specify an alternative source of area-fill patterns for polygon shading.
SHSTOP | Terminate the description of a user-defined shaded shape.
SHSTRT | Start a user-defined shaded shape.
SHTYPE | Specify the shading boundary used for unclosed curves.
SHUNIF | Specify whether software shading lines are to be drawn in only one direction.
SQSHAD | Specify a sequence of shading patterns.
VSEDGC | Specify the colour index for the edge of filled areas.
VSEDGV | Specify whether the edge of polygons is to be drawn.
VSFILC | Specify the colour index to be used by ViSualization area fill subroutines.
VSLINC | Specify the colour index to be used by line drawing subroutines.
VSPMC | Specify the colour index for subsequent markers.
VSUTOC | Define mapping from user data values to colour indices.


Summary 17

This page uses frames, but your browser doesn't support them.


Summary 17

Summary 17. Inquiry subroutines

QCURVE | Return the coordinates of a stored curve.
QDEV | Inquire details of a menu entry for a specific device option.
QFFSIZ | Inquire the physical size of current fast area-fill characters.
QIBRFL | Inquire the z scale required by an Isometric 3-D barchart.
QKYCAP | Inquire the size of a key or caption area to hold a set of captions.
QNODAT | Inquire the current value representing no-data.
QPAGE | Inquire the maximum page size of the current device.
QPIC | Inquire the position and size of the current picture.
QPIXLS | Inquire number of pixels on current device.
QSFLAB | Inquire of the range of data and contour interval on latest 3-D plot.
QSTAT | Inquire the status of the last SIMPLEPLOT call.
QSTR7 | Inquire the physical size of a text string.
QVBRFL | Inquire the z scale required by a ViSualization 3-D barchart.
QV3DLM | Inquire the three-dimensional limits for plottable data.
QVDPLM | Inquire the range of depths for the current ViSualization picture.
QVSCAL | Inquire the scale limits in SIMPLEPLOT user coordinates corresponding to the current projected plotting area.
QWZSCL | Inquire the current z scales for curves on waterfall charts.


Summary 18

This page uses frames, but your browser doesn't support them.


Summary 18

Summary 18. Conversion subroutines

KISXY | Convert a point (x,y,z) on a surface picture to its 2-D equivalent.
KNUMB | Convert an INTEGER value to the equivalent text string.
KPOSXY | Convert a descriptive position into page coordinates.
KREAL | Convert a REAL value to the equivalent text string.
KSCALE | Convert scale limits such that they span whole subdivisions.
KTREAL | Convert time-date value from external time-date triple to internal REAL form.
KTSTR | Convert one component of encoded time-date value from internal REAL to text.
KTTRI | Convert encoded time-date value from internal REAL to external triple form.
KVXYD | Convert a three-dimensional point (x,y,z) to its two-dimensional equivalent plus depth.
KWZVAL | Convert a z value on a waterfall chart to its equivalent in terms of the label scale.
KXYXY | Convert coordinates of a point to other units.
KZRG | Generate a regular grid of values from ungridded (x,y,z) coordinates.
KZZRG | Generate a regular grid of values from ungridded (x,y,z) coordinates.


Summary 19

This page uses frames, but your browser doesn't support them.


Summary 19

Summary 19. Device and job control

DDDATA | Pass device driver specific information from the application to a device driver.
DEVNAM | Specify a graphics device by name.
DEVNO | Specify a graphics device by number.
DIAGDD | Specify the level of device driver diagnostics.
DIAGLV | Specify the level of diagnostics.
DIAGOP | Output a message to the SIMPLEPLOT diagnostics channel.
ENDPLT | Close the plotting device and SIMPLEPLOT at the end of plotting.
INITBL | Cancel all current blanked areas.
INITSP | Reset all SIMPLEPLOT defaults.
IOCHAN | Specify a value to be associated with a SIMPLEPLOT internal I/O channel.
OWNFIL | Specify an alternative source/destination for SIMPLEPLOT input/output.
PENHLS | Change the device palette using HLS conventions.
PENRGB | Change the device palette using RGB conventions.
PENRST | Reset the the device palette.
QDEV | Inquire details of a menu entry for a specific device option.
QPAGE | Inquire the maximum page size of the current device.
QPIC | Inquire the position and size of the current picture.
QPIXLS | Inquire number of pixels on current device.


Summary 20

This page uses frames, but your browser doesn't support them.


Summary 20

Summary 20. Interactive programming

ENDPAG | Finish a picture and group separately from starting another picture.
ENDPIC | Finish a picture separately from starting another picture.
GETXY | Input the coordinate of a data point from an interactive device.
NEWPAG | Start a new SIMPLEPLOT page without starting a new picture.
OUTBUF | Update the SIMPLEPLOT page by flushing internal graphics buffer.
OWNIO | Specify whether a terminal is to be used for graphics or user I/O.
OWNNEW | Specify whether to bypass the normal procedure between SIMPLEPLOT pages.
SCLEAR | Clear the graphics screen independently of starting a new picture.
VSOUT | Flush the raster image.


Summary 21

This page uses frames, but your browser doesn't support them.


Summary 21

Summary 21. Metafile subroutines

MTCLOS | Terminate metafile redrawing.
MTCOMM | Output a comment line to a metafile.
MTDRAW | Redraw a single line of a SIMPLEPLOT metafile.
MTFILE | Request metafile output.
MTMISS | Omit the current SIMPLEPLOT page from a metafile.
MTONLY | Specify that only metafile output is to be produced.
MTOPEN | Start metafile redrawing.
REDRAW | Redraw the metafile from the specified I/O channel to the specified device.


Summary 22

This page uses frames, but your browser doesn't support them.


Summary 22

Summary 22. Plotting three-dimensional data

X | regular | array | regular | array | array | regular
Y | regular | regular | array | array | array | regular
Z | matrix | matrix | matrix | matrix | array | function
Surface | RGSURF | XSURF | YSURF | XYSURF | ZZSURF | FNSURF
Contour map | RGCNTS | XCNTS | YCNTS | XYCNTS | ZZCNTS | FNCNTS
Contour line | RGCONT | XCONT | XCONT | XYCONT | ZZCONT | FNCONT
Cross-section | RGCUT | XCUT | YCUT | XYCUT | ZCUT | FNCUT
Interpolation | RGCALC | XCALC | YCALC | XYCALC | ZZCALC | N/A
Shaded map | RGSHDS | XSHDS | YSHDS | XYSHDS | ZZSHDS | FNSHDS
Shaded region | RGSHAD | XSHAD | YSHAD | XYSHAD | ZZSHAD | FNSHAD

Waterfall | WFCHT | Convert data
Chart | WFDRAW | to regular grid


Summary 23

This page uses frames, but your browser doesn't support them.


Summary 23

Summary 23. Perspective surfaces

VSRG | Draw a perspective surface picture from a 2-D array in a ViSualization image.
VSRGU | Draw contours of data from one 2-D array on a surface picture from another 2-D array in a ViSualization image.
VSXYZ | Draw a surface picture from three 2-D arrays in a ViSualization image.
VSXYZU | Draw contours of data in one 2-D array on a surface picture from three 2-D arrays in a ViSualization image.
VSZ | Draw a surface from 3-D data structured into elements.
VSZU | Draw contours of data in an array on a surface from 3-D data structured into elements.


Summary 24

This page uses frames, but your browser doesn't support them.


Summary 24

Summary 24. Ungridded 3-D data manipulation

KZRG | Generate a regular grid of values from ungridded (x,y,z) coordinates.
KZZRG | Generate a regular grid of values from ungridded (x,y,z) coordinates.
VSZ | Draw a surface from 3-D data structured into elements.
VSZU | Draw contours of data in an array on a surface from 3-D data structured into elements.
ZEDGE | Draw around the boundary of the data area covered by a set of elements (without neighbours).
ZELEM | Draw a single area element.
ZELEMS | Draw the configuration of a set of area elements (without neighbours).
ZNEIGH | Set up an array of neighbours from an array of elements.
ZNUMB | Specify whether nodes and/or elements are to be numbered.
ZORDEN | Reconfigure (x,y) coordinates into triangular area elements using normalized values.
ZORDER | Reconfigure (x,y) coordinates into triangular area elements.
ZZEDGE | Draw around the boundary of the data area covered by a set of elements (with neighbours).
ZZELMS | Draw the configuration of a set of area elements (with neighbours).
ZZORDN | Reconfigure (x,y) coordinates into triangular elements and an array of neighbours (using normalized values).
ZZORDR | Reconfigure (x,y) coordinates into triangular elements and an array of neighbours.


Summary 25

This page uses frames, but your browser doesn't support them.


Summary 25

Summary 25. Surface pictures

ISANG | Specify the angle at which surface pictures are drawn.
ISAXD7 | Draw 3-D axes on an isometric picture.
ISAXES | Specify whether surface pictures are to include 3-D axes.
ISAXFC | Specify the colours for filled rear planes of Isometric pictures.
ISAXGC | Specify the colour indices for grid lines on the rear planes of Isometric pictures.
ISBRBZ | Specify the base z value for bars in Isometric 3-D barcharts.
ISBRFC | Specify how colour sequences should be used on subsequent Isometric 3-D barcharts.
ISBRFL | Fill a Isometric 3-D barchart.
ISBRSZ | Specify the widths of bars in Isometric 3-D barcharts.
ISBRUP | Specify the stacking direction for Isometric 3-D barcharts.
ISCURV | Specify the smoothness of curves on crosshatched and cascade surface pictures.
ISDIAG | Specify whether surface pictures are to include an x-yz diagram.
ISFULL | Specify whether surface pictures fill the space available.
ISMESH | Specify the fineness of detail in surface pictures.
ISRISE | Specify the proportions of surface pictures.
ISSHAD | Specify the method of shading used on shaded surface pictures.
ISSKRT | Specify the type of skirts on shaded surface pictures.
ISSPAT | Specify the shading patterns to be used on shaded surfaces.
ISTYPE | Specify the type of surface picture.
ISVIEW | Specify the view point for surface pictures.
ISYUP | Specify the direction of change of y on surface pictures.
QIBRFL | Inquire the z scale required by an Isometric 3-D barchart.
RASTER | Specify the shading technique to be used for shaded surfaces.
SFEQZ | Specify the equal spacing of contours.
SFEQZD | Specify the equal spacing of contours for discrete data.
SFLIMS | Specify the z plotting range.
SFMESH | Specify a mesh to be used for constructing contours and surfaces.
SFZSCL | Specify the z scale of surface pictures and contour maps independently of the data set.


Summary 26

This page uses frames, but your browser doesn't support them.


Summary 26

Summary 26. Contour maps and cross sections

CTBRKN | Specify the broken line pattern used for contours and surface sections.
CTCURV | Specify the curve type used for drawing contours.
CTHOLD | Specify whether coordinates of internally generated curves are to be saved.
CTLABS | Specify the frequency of labels included with contour curves.
CTNUMB | Specify whether contour curves are to be labelled.
MPTYPE | Specify the shading method used for shaded contour maps and map keys.
QCURVE | Return the coordinates of a stored curve.
SFEQZ | Specify the equal spacing of contours.
SFEQZD | Specify the equal spacing of contours for discrete data.
SFLIMS | Specify the z plotting range.
SFMESH | Specify a mesh to be used for constructing contours and surfaces.
SFZSCL | Specify the z scale of surface pictures and contour maps independently of the data set.
SQBRKN | Specify a sequence of broken line patterns.
SQPEN | Specify a sequence of pens/bundles.
SQSHAD | Specify a sequence of shading patterns.
SQZLAB | Specify a sequence of contour labels.
SQZVAL | Specify a sequence of contour levels.
VSINIT | Reset ViSualization defaults.
WFINIT | Reset all defaults for waterfall charts.


Summary 27

This page uses frames, but your browser doesn't support them.


Summary 27

Summary 27. Waterfall charts

KWZVAL | Convert a z value on a waterfall chart to its equivalent in terms of the label scale.
QWZSCL | Inquire the current z scales for curves on waterfall charts.
WFCHT | Draw a waterfall chart on the current picture.
WFDRAW | Draw a single curve on a waterfall chart.
WFEQL | Specify the equally-spaced values on the label scale of a waterfall chart.
WFEQN | Specify the equally-spaced values on the numeric scale of a waterfall chart.
WFINIT | Reset all defaults for waterfall charts.
WFNCVS | Specify the number of curves to be accommodated on waterfall charts.
WFNSCL | Specify the numeric scale for waterfall charts.
WFPNS | Specify the pens used in waterfall charts.
WFSTEP | Specify the displacement between waterfall curves.
WFZLEV | Specify the data value at which waterfall curves can change pens.
WFZSCL | Specify the z scales for curves on subsequent waterfall charts.


Summary 28

This page uses frames, but your browser doesn't support them.


Summary 28

Summary 28. Additional 3-D facilities

ISAXD7 | Draw 3-D axes on an isometric picture.
KISXY | Convert a point (x,y,z) on a surface picture to its 2-D equivalent.
LIMSFN | Find the range of function values to be used for contours of a 3-D function z=f(x,y).
NODATA | Specify the REAL value to be used to represent no-data values.
QNODAT | Inquire the current value representing no-data.
QSFLAB | Inquire of the range of data and contour interval on latest 3-D plot.
SFLAB | Annotate the current 3-D picture with the range of values displayed.
VS3DLM | Set the three-dimensional Limiting Box for plottable data.
VSEQX | Specify the equally-spaced x values to be associated with ViSualization gridded 3-D data.
VSEQY | Specify the equally-spaced y values to be associated with ViSualization gridded 3-D data.
VSFIT | Specify which axis scales are measured in similar units.
VSFITP | Specify the relative lengths of the x, y and z axes.
VSFULL | Specify how the Limiting Box is to fill the SIMPLEPLOT picture.
VSMAG | Magnify ViSualization coordinates along any or all of the x-yz axes.
VSROT | Rotate ViSualization coordinates around one of the x-yz axes.
VSTRAN | Translate ViSualization coordinates along any or all of the x-yz axes.
VSVRTP | Set the Viewing Position in terms of a radius and 2 angles for a projected picture.
VSVXYZ | Set the Viewing Position for a projected picture in terms of (x,y,z).


Summary 29

This page uses frames, but your browser doesn't support them.


Summary 29

Summary 29. Mapping subroutines

GGBDPT | Draw a line for a fixed bearing and distance on the current map.
GGBRK | Force a break between two map lines.
GGBRKN | Specify the broken line pattern used by subsequent GG* drawing subroutines.
GGCENT | Specify the centre of projection for azimuthal projections or the standard parallel/central meridian for appropriate projections.
GGCIRC | Draw a circle of a specified centre and radius on the current map.
GGCLIP | Specify the clipping region of maps.
GGEQLL | Specify the region for data to be converted by KGLLRG.
GGGRAT | Draw a set of meridians and/or parallels on the current map.
GGGRDV | Specify the base and interval for graticule lines.
GGHGHT | Specify the origin of projection for general azimuthal and satellite projections.
GGINIT | Reset all SIMPLEPLOT defaults relating to maps.
GGLLPT | Draw a line along a great circle to a given point on the current map.
GGMAP | Draw a set of map boundaries on the current map.
GGNEW | Start a new picture for drawing maps.
GGPARL | Specify the standard parallel(s) for appropriate projections.
GGPERI | Draw a boundary perimeter around the current map.
GGPROJ | Specify the map projection of the next new map picture.
GGREGN | Specify the map region to be plotted bounded by longitudes and latitudes.
GGRGCL | Specify the map region to be plotted as a circle.
GGSFMT | Set the format of strings from KGLAT/KGLONG.
GGSLDA | Load a new set of compass labels for strings produced by KGLONG and KGLAT.
KGLAT | Convert a REAL latitude to the equivalent text string.
KGLLRG | Convert a long/lat data array to an equivalent x-y grid.
KGLLXY | Convert from long/lat to x-y coordinates.
KGLONG | Convert a REAL longitude to the equivalent text string.
KGXYLL | Convert from x-y to long/lat coordinates.
QGSCAL | Inquire the limits in the underlying Cartesian scale corresponding to the current map.
VGBDLL | Evaluate the latitude and longitude of the point with bearing BEARIN and distance DISTIN from (RLONG1, RLAT1).
VGLLBD | Evaluate bearing and distance from (RLONG1,RLAT1) to (RLONG2,RLAT2).
VGLLSD | Evaluate shortest distance between (RLONG1,RLAT1) and (RLONG2,RLAT2).


Subroutines

This page uses frames, but your browser doesn't support them.


Subroutines

SIMPLEPLOT Subroutines

ADDCAP Draw a caption in a previously defined area.
ADDCP7 Draw a caption in a previously defined area.
ADDJST Specify how entries in caption areas/keys are to be justified.
ADDTOP Reset the current key/caption usage pointer to the top of sequence.
ARHEAD Specify the proportional size of arrow heads.
ARROW Draw an arrow between two specified points.
ARSHFT Specify whether arrows are to include a shaft.
AXCLR Specify the level of annotation drawn with the axis.
AXCRSS Specify the intersection of one axis with its natural pair.
AXES Start a new picture and draw axes.
AXES7 Start a new picture and draw axes.
AXGRID Specify the style of grids drawn in association with axis subdivisions.
AXIS Draw an axis on the current picture.
AXIS7 Draw an axis on the current picture.
AXLAB Draw a single axis annotation label and tick mark.
AXLAB7 Draw a single axis annotation label and tick mark.
AXLBAN Specify the style of annotation labels on an axis.
AXLBGP Specify the level of axis annotation near an intersection.
AXLBJS Specify the justification of axis annotation.
AXLBLV Specify the level of additional annotation on some axes.
AXLBSL Specify the slope of used-defined axis annotation.
AXLBSP Specify separators between label components of time-date axis annotation.
AXLBTM Specify components for time-date axis annotation.
AXLBTP Specify numeric or time-date axis annotation.
AXLOCN Specify the location of an axis relative to the picture.
AXMAJ Draw a single major axis subdivision.
AXMIN Draw a single minor axis subdivision.
AXRNGE Specify the subrange over which an axis is to be drawn.
AXSBDV Specify the interval at which a linear axis is to be subdivided and annotated.
AXSBMN Specify the minor subdivisions on a linear axes independently of major subdivisions.
AXSBTK Specify the style of tick marks on an axis.
AXSUBS Specify the numbers of major and minor subdivisions on linear axes.
AXTXT Draw a set of axis annotation labels and tick marks.
AXTXT7 Draw a set of axis annotation labels and tick marks.
BARCHT Draw a bar chart on the current picture.
BARDIR Specify the directions of bar chart scales.
BARFMT Specify how bars in a bar chart occupy the space available.
BARRNG Specify the range of the numerical scale for bar charts.
BARTYP Specify the type of bar chart required.
BLNKKY Add a blank entry in a key or caption area.
BOTHK7 Draw an annotated sample of a broken line pattern and marker symbol in a key.
BOTHKY Draw an annotated sample of a broken line pattern and marker symbol in a key.
BOXCAP Specify whether boxes are to be drawn around caption areas.
BOXGRP Specify whether boxes are to be drawn around groups of pictures.
BOXKY Specify whether boxes are to be drawn around keys.
BOXPAG Specify whether boxes are to be drawn around the boundaries of pages.
BOXPG2 Specify how the boundaries of pages are to be drawn.
BOXPIC Specify whether boxes are to be drawn around individual pictures.
BREAK Force a break between separate sequences of point-by-point plotting.
BRKNAR Draw a curve from an array of values, using a specified broken line pattern.
BRKNBX Draw a box, using a specified broken line pattern.
BRKNCL Draw a circular function with specified centre, radius and broken line pattern.
BRKNCV Draw a curve from a set of coordinates, using a specified broken line pattern.
BRKNFN Draw a curve of a user-defined function, y=f(x), using the specified linestyle.
BRKNPR Draw the user-defined parametric function using a specified broken line pattern.
BRKNPT Draw a broken line to the point (x,y).
BUNLPR Specify the order of priority of bundled line-drawing attributes.
CAPLB Draw a caption at (x,y).
CAPLBM Draw a marker symbol at (x,y) and a label with controllable angle and justification.
CAPPT Draw a marker symbol at (x,y) with a caption.
CAPXC Draw a horizontally centred caption.
CAPYC Draw a vertically centred caption.
CHDESC Specify characteristics of adjustable software characters.
CHMASK Specify whether text is to be masked.
CHSET Specify an alternative source of character sets or fonts.
CHUNDL Specify the number of times text is underlined.
CLIPLV Specify the clipping region for all plotting.
COORDS Change the interpretation of coordinates.
CP7LB Draw a caption at (x,y).
CP7LBM Draw a marker symbol at (x,y) and a label with controllable angle and justification.
CP7PT Draw a marker symbol at (x,y) with a caption.
CP7XC Draw a horizontally centred caption.
CP7YC Draw a vertically centred caption.
CTBRKN Specify the broken line pattern used for contours and surface sections.
CTCURV Specify the curve type used for drawing contours.
CTHOLD Specify whether coordinates of internally generated curves are to be saved.
CTLABS Specify the frequency of labels included with contour curves.
CTNUMB Specify whether contour curves are to be labelled.
CVLBJS Specify the justification of the label drawn on a labelled curve.
CVLBPS Specify the reference point for the label drawn on a labelled curve.
CVTYPE Specify the type of curve to be drawn on 2-D graphs.
DDDATA Pass device driver specific information from the application to a device driver.
DEFCAP Define an area for captions.
DEFKEY Define an area for a key box.
DEFKYW Specify the width of samples in a key box.
DEFPOS Specify page coordinates of the movable descriptor, "M".
DEVNAM Specify a graphics device by name.
DEVNO Specify a graphics device by number.
DIAGDD Specify the level of device driver diagnostics.
DIAGLV Specify the level of diagnostics.
DIAGOP Output a message to the SIMPLEPLOT diagnostics channel.
DRAWAR Draw a curve from an array of values.
DRAWBX Draw a box.
DRAWCL Draw a circular function with specified centre and radius.
DRAWCV Draw a curve from a set of coordinates in parallel arrays.
DRAWFN Draw a curve of a user-defined function, y=f(x) (or r=f(theta)).
DRAWLN Draw a straight line between a point and zero.
DRAWPR Draw the user-defined parametric function.
ENDPAG Finish a picture and group separately from starting another picture.
ENDPIC Finish a picture separately from starting another picture.
ENDPLT Close the plotting device and SIMPLEPLOT at the end of plotting.
EQSCAL Specify similar linear scales for Cartesian or polar plotting.
FFSET Specify an alternative source of fast area-fill characters.
FFSIZE Specify the size of fast area-fill characters.
FIGFMT Specify the format of REAL numbers drawn on pictures.
FIGSGN Specify the sign conventions for positive numbers and exponents.
FILLK7 Draw an annotated sample of fast area-fill characters in a key.
FILLKY Draw an annotated sample of fast area-fill characters in a key.
FITPAG Specify the interpretation of PAGE on fixed picture devices.
FNAREA Specify the x-y plotting ranges for 3-D functions, z=f(x,y).
FNCNTS Draw a contour map from a 3-D function z=f(x,y).
FNCONT Draw a contour curve from a 3-D function z=f(x,y).
FNCUT Draw a 2-D curve of a surface section from a function z=f(x,y).
FNRNGE Specify a restricted x range over which to plot 2-D functions y=f(x).
FNSHAD Draw the shaded area between two contour levels from a 3-D function z=f(x,y).
FNSHDS Draw a shaded contour map from a 3-D function z=f(x,y).
FNSURF Start a new picture and draw a surface from a 3-D function z=f(x,y).
GETXY Input the coordinate of a data point from an interactive device.
GGBDPT Draw a line for a fixed bearing and distance on the current map.
GGBRK Force a break between two map lines.
GGBRKN Specify the broken line pattern used by subsequent GG* drawing subroutines.
GGCENT Specify the centre of projection for azimuthal projections or the standard parallel/central meridian for appropriate projections.
GGCIRC Draw a circle of a specified centre and radius on the current map.
GGCLIP Specify the clipping region of maps.
GGEQLL Specify the region for data to be converted by KGLLRG.
GGGRAT Draw a set of meridians and/or parallels on the current map.
GGGRDV Specify the base and interval for graticule lines.
GGHGHT Specify the origin of projection for general azimuthal and satellite projections.
GGINIT Reset all SIMPLEPLOT defaults relating to maps.
GGLLPT Draw a line along a great circle to a given point on the current map.
GGMAP Draw a set of map boundaries on the current map.
GGNEW Start a new picture for drawing maps.
GGPARL Specify the standard parallel(s) for appropriate projections.
GGPERI Draw a boundary perimeter around the current map.
GGPROJ Specify the map projection of the next new map picture.
GGREGN Specify the map region to be plotted bounded by longitudes and latitudes.
GGRGCL Specify the map region to be plotted as a circle.
GGSFMT Set the format of strings from KGLAT/KGLONG.
GGSLDA Load a new set of compass labels for strings produced by KGLONG and KGLAT.
GROUP Specify how pictures are to be grouped on the SIMPLEPLOT page.
HSTCLC Calculate data frequencies from raw data.
HSTCUM Draw a cumulative histogram from frequencies.
HSTDIR Specify the directions of scales for histograms drawn by HSTGRM.
HSTGRM Draw a histogram from raw data on the current picture.
HSTPLT Draw a histogram from frequencies.
HSTRNG Specify the range of scales for histograms drawn by HSTGRM.
HSTSHD Specify a shading pattern for the boxes used to draw a histogram.
HSTTYP Specify the type of histogram to be plotted by HSTGRM.
INITBL Cancel all current blanked areas.
INITSP Reset all SIMPLEPLOT defaults.
IOCHAN Specify a value to be associated with a SIMPLEPLOT internal I/O channel.
ISANG Specify the angle at which surface pictures are drawn.
ISAXD7 Draw 3-D axes on an isometric picture.
ISAXDR Draw 3-D axes on an isometric picture.
ISAXES Specify whether surface pictures are to include 3-D axes.
ISAXFC Specify the colours for filled rear planes of Isometric pictures.
ISAXGC Specify the colour indices for grid lines on the rear planes of Isometric pictures.
ISBRBZ Specify the base z value for bars in Isometric 3-D barcharts.
ISBRFC Specify how colour sequences should be used on subsequent Isometric 3-D barcharts.
ISBRFL Fill a Isometric 3-D barchart.
ISBRSZ Specify the widths of bars in Isometric 3-D barcharts.
ISBRUP Specify the stacking direction for Isometric 3-D barcharts.
ISCURV Specify the smoothness of curves on crosshatched and cascade surface pictures.
ISDIAG Specify whether surface pictures are to include an x-yz diagram.
ISFULL Specify whether surface pictures fill the space available.
ISMESH Specify the fineness of detail in surface pictures.
ISNEW Start a null isometric picture.
ISRISE Specify the proportions of surface pictures.
ISSBAS Specify the type of base on shaded surface pictures.
ISSBCK Specify the type of backdrops on shaded surface pictures.
ISSHAD Specify the method of shading used on shaded surface pictures.
ISSKRT Specify the type of skirts on shaded surface pictures.
ISSPAT Specify the shading patterns to be used on shaded surfaces.
ISTYPE Specify the type of surface picture.
ISVIEW Specify the view point for surface pictures.
ISYUP Specify the direction of change of y on surface pictures.
JOINPT Draw a straight line to the point (x,y) (or (R,theta))).
KGLAT Convert a REAL latitude to the equivalent text string.
KGLLRG Convert a long/lat data array to an equivalent x-y grid.
KGLLXY Convert from long/lat to x-y coordinates.
KGLONG Convert a REAL longitude to the equivalent text string.
KGXYLL Convert from x-y to long/lat coordinates.
KISXY Convert a point (x,y,z) on a surface picture to its 2-D equivalent.
KNUMB Convert an INTEGER value to the equivalent text string.
KPOSXY Convert a descriptive position into page coordinates.
KPVXY Convert a point (x,y,z) on a perspective picture to its 2-D equivalent.
KREAL Convert a REAL value to the equivalent text string.
KSCALE Convert scale limits such that they span whole subdivisions.
KTREAL Convert time-date value from external time-date triple to internal REAL form.
KTSTR Convert one component of encoded time-date value from internal REAL to text.
KTTRI Convert encoded time-date value from internal REAL to external triple form.
KVXYD Convert a three-dimensional point (x,y,z) to its two-dimensional equivalent plus depth.
KWZVAL Convert a z value on a waterfall chart to its equivalent in terms of the label scale.
KXYXY Convert coordinates of a point to other units.
KZRG Generate a regular grid of values from ungridded (x,y,z) coordinates.
KZZRG Generate a regular grid of values from ungridded (x,y,z) coordinates.
LABANG Specify the angle of labels drawn by CP7LB, CP7XC or CP7YC.
LABCV Draw a labelled curve.
LABCV7 Draw a labelled curve.
LABJST Specify the justification of labels drawn by CP7LB, CP7LBM, CP7XC or CP7YC.
LIMEXC Find the minimum and maximum values in a REAL array.
LIMIDX Find the position of each of the minimum and maximum values of a REAL array.
LIMINC Find the minimum and maximum values in a REAL array.
LIMSFN Find the range of function values to be used for contours of a 3-D function z=f(x,y).
LINEK7 Draw an annotated sample of a broken line pattern in a key.
LINEKY Draw an annotated sample of a broken line pattern in a key.
LINSET Specify an alternative source of broken line patterns.
MARGDV Specify the distribution of picture margins.
MARGIN Specify the overall size of the margin around individual pictures.
MARKAR Draw marker symbols at a set of values held in an array.
MARKCV Draw marker symbols at a set of coordinates.
MARKK7 Draw an annotated sample of a marker symbol in a key.
MARKKY Draw an annotated sample of a marker symbol in a key.
MARKPT Draw a marker symbol at a specified point.
MKMASK Specify whether marker symbols are to be masked.
MKSET Specify an alternative source of marker symbols.
MKSIZE Specify a fixed size of marker symbols independent of text size.
MOVEON Specify whether to superimpose pictures.
MPK7H Draw a complete horizontal key to a shaded contour map.
MPK7V Draw a complete vertical key to a shaded contour map.
MPKYH Draw a complete horizontal key to a shaded contour map.
MPKYV Draw a complete vertical key to a shaded contour map.
MPTYPE Specify the shading method used for shaded contour maps and map keys.
MTCLOS Terminate metafile redrawing.
MTCOMM Output a comment line to a metafile.
MTDRAW Redraw a single line of a SIMPLEPLOT metafile.
MTFILE Request metafile output.
MTMISS Omit the current SIMPLEPLOT page from a metafile.
MTONLY Specify that only metafile output is to be produced.
MTOPEN Start metafile redrawing.
NEWPAG Start a new SIMPLEPLOT page without starting a new picture.
NEWPIC Start a new 2-D picture without drawing an axis framework.
NODATA Specify the REAL value to be used to represent no-data values.
ONEPEN Draw the colours of a multi-coloured picture separately.
OUTBUF Update the SIMPLEPLOT page by flushing internal graphics buffer.
OWNFIL Specify an alternative source/destination for SIMPLEPLOT input/output.
OWNIO Specify whether a terminal is to be used for graphics or user I/O.
OWNNEW Specify whether to bypass the normal procedure between SIMPLEPLOT pages.
PAGE Specify the size of the SIMPLEPLOT page.
PAGMRG Specify the size and distribution of peripheral margins.
PAGPOS Specify the position of the SIMPLEPLOT page within the plotting area.
PAGVW Specify the orientation of a page when page dimensions have not been specified.
PAPINC Specify the length of paper on a device with continuous paper feed.
PEN Select the pen to be used for all plotting.
PENHLS Change the device palette using HLS conventions.
PENRGB Change the device palette using RGB conventions.
PENRST Reset the the device palette.
PERIM Draw a rectangular box around the current picture.
PERIPH Specify the overall size of the periphery around a group of pictures.
PGFULL Specify whether picture space is to be maximized.
PIANG Specify the viewing angle of 3-dimensional pie charts.
PIBOXL Specify whether a box is to be drawn around pie chart labels.
PICMRG Specify the size of individual picture margins.
PICPOS Specify the coordinate position of each new picture.
PICRST Reset the current picture to the size, position and scales saved as number N.
PICSAV Save the size, position and scales of the current picture as number N.
PICSIZ Specify the size of pictures.
PIDIAM Specify a reduced diameter for pie charts.
PIE3D Draw a 3-dimensional pie chart on the current picture.
PIECHT Draw a pie chart on the current picture.
PIEXPL Specify the amount by which each pie chart segment is to be exploded.
PIHGHT Specify the height of 3-dimensional pie charts as a proportion of the diameter.
PIINCL Specify what elements are to be included in pie chart segment labels.
PIOMIT Specify which segments are to be omitted from pie charts.
PIPOSL Specify the position of segment labels on pie charts.
PITILT Specify the tilt of pie charts.
POLAR Start a new polar picture and draw axis framework.
POLAR7 Start a new polar picture and draw axis framework.
POLIN Transfer polynomial coefficients before plotting curves of polynomial functions.
POLOUT Transfer polynomial coefficients after plotting regression curves.
POLRNG Specify the user-defined polar coordinate system.
POLY Evaluate a polynomial function.
POLZER Specify the convention used for polar coordinates.
PUTCAP Draw a caption in a specified position in a caption area.
PUTCP7 Draw a caption in a specified position in a caption area.
PVBOX Specify that a box is to be drawn around perspective volumes, showing limits to data.
PVCONT Specify type of contour drawing on plane faces with PVDRAW.
PVDRAW Draw a perspective volume picture of 4-D data representing a continuous function of three variables.
PVFULL Specify that perspective volumes are to be scaled to fill the space available.
PVLEV Specify the data level to be represented by PVDRAW.
PVLEVS Specify two data levels to be represented by PVDRAW.
PVLINS Specify the number of slices to be drawn on perspective volumes.
PVMESH Specify the accuracy and hence the speed of perspective volumes.
PVNEW Change the data array to be plotted by PVDRAW.
PVSCAL Specify the data scales for use on perspective volume pictures.
PVVIEW Specify the viewing position for perspective volumes.
PVXLIM Specify x data limits used to draw a perspective volume.
PVYLIM Specify the y data limits used to draw a perspective volume.
PVZLIM Specify z data limits used to draw a perspective volume.
QCURVE Return the coordinates of a stored curve.
QDEV Inquire details of a menu entry for a specific device option.
QFFSIZ Inquire the physical size of current fast area-fill characters.
QGSCAL Inquire the limits in the underlying Cartesian scale corresponding to the current map.
QIBRFL Inquire the z scale required by an Isometric 3-D barchart.
QKYCAP Inquire the size of a key or caption area to hold a set of captions.
QNODAT Inquire the current value representing no-data.
QPAGE Inquire the maximum page size of the current device.
QPIC Inquire the position and size of the current picture.
QPIXLS Inquire number of pixels on current device.
QPVLEV Inquire the data level(s) that would currently be plotted by PVDRAW from the specified array.
QSFLAB Inquire of the range of data and contour interval on latest 3-D plot.
QSPLOT Inquire the current version of SIMPLEPLOT.
QSTAT Inquire the status of the last SIMPLEPLOT call.
QSTR Inquire the physical size of a text string.
QSTR7 Inquire the physical size of a text string.
QV3DLM Inquire the three-dimensional limits for plottable data.
QVBRFL Inquire the z scale required by a ViSualization 3-D barchart.
QVDPLM Inquire the range of depths for the current ViSualization picture.
QVGET Return a raster image and ZBuffer.
QVLIMS Inquire the dimensions of the raster image.
QVNOIM Inquire the representation of the `no image' value in a raster image dot.
QVSCAL Inquire the scale limits in SIMPLEPLOT user coordinates corresponding to the current projected plotting area.
QVSIZE Inquire the number of bytes per dot in the raster image and ZBuffer.
QWZSCL Inquire the current z scales for curves on waterfall charts.
RANGE Draw a line indicating a range of values.
RASTER Specify the shading technique to be used for shaded surfaces.
REDRAW Redraw the metafile from the specified I/O channel to the specified device.
RESCLR Cancel all areas reserved for captions and keys.
RESNXT Specify the reserved area which is to be used next.
RGCALC Interpolate z=f(x,y) from 3-D data on a regular grid.
RGCNTS Draw a contour map from 3-D data on a regular grid.
RGCONT Draw a contour curve from 3-D data on a regular grid.
RGCUT Draw a 2-D curve of a surface section from 3-D data on a regular grid.
RGSHAD Shade the area between two contour levels from 3-D data on a regular grid.
RGSHDS Draw a shaded contour map from 3-D data on a regular grid.
RGSURF Start a new picture and draw a surface from 3-D data on a regular grid.
RIDDLE Specify the level of elimination of redundant points for polylines.
SCALES Specify Cartesian scales for all 2-D plotting.
SCLEAR Clear the graphics screen independently of starting a new picture.
SETPNS Specify the pens associated with the four pen pointers.
SFEQX Specify the equally-spaced x values to be associated with gridded 3-D data.
SFEQY Specify the equally-spaced y values to be associated with gridded 3-D data.
SFEQZ Specify the equal spacing of contours.
SFEQZD Specify the equal spacing of contours for discrete data.
SFLAB Annotate the current 3-D picture with the range of values displayed.
SFLIMS Specify the z plotting range.
SFMESH Specify a mesh to be used for constructing contours and surfaces.
SFZSCL Specify the z scale of surface pictures and contour maps independently of the data set.
SGEXPL Specify the amount by which one pie chart segment is to be exploded.
SGOMIT Specify whether a pie chart segment is to be omitted.
SHANGS Specify the angles used in software shading patterns.
SHCOLS Specify a restricted number of colours used for shading patterns.
SHDEA2 Shade between 2 curves defined by values held in 2 arrays.
SHDEAR Draw a curve from an array of values, and shade under it.
SHDEBX Draw a shaded box.
SHDEC2 Shade the area between 2 curves specified by sets of coordinates.
SHDECL Draw a circular function with specified centre and radius, and to shade inside it.
SHDECV Draw a curve from a set of coordinates, and shade under it.
SHDEFN Draw a curve of a user-defined function, y=f(x), and shade under it.
SHDEK7 Draw an annotated sample of a shading pattern in a key.
SHDEKY Draw an annotated sample of a shading pattern in a key.
SHDEPR Draw the user-defined parametric function, and shade inside it.
SHDESC Specify all characteristics of shading patterns.
SHEDGE Specify whether to draw a boundary around a shaded area.
SHGAP Specify the spacing of software shading lines.
SHKEYS Draw a complete key to a sequence of shading patterns.
SHPATT Specify one of a sequence of shading patterns.
SHPEN Specify single colour shading patterns with the specified pen.
SHSET Specify an alternative source of area-fill patterns for polygon shading.
SHSTOP Terminate the description of a user-defined shaded shape.
SHSTRT Start a user-defined shaded shape.
SHTYPE Specify the shading boundary used for unclosed curves.
SHUNIF Specify whether software shading lines are to be drawn in only one direction.
SQBRKN Specify a sequence of broken line patterns.
SQPEN Specify a sequence of pens/bundles.
SQSHAD Specify a sequence of shading patterns.
SQZLAB Specify a sequence of contour labels.
SQZVAL Specify a sequence of contour levels.
STRCHS Specify the three special characters to be used in escape sequences.
STRLV Specify the level of interpretation of embedded commands in text strings.
TEXTAR Specify the aspect ratio of text characters.
TEXTLF Specify the vertical separation of lines of text.
TEXTMG Specify the magnification of text.
TEXTMN Specify the minimum text size.
TEXTSL Specify the slant of hardware text.
TEXTSZ Specify the fixed character width of all text.
THCKMG Specify the pen thickness to be used for all plotting.
TIMFMT Specify the format for one component of time-date data.
TIMLDA Load a new set of text labels for one component of time-date axis annotations.
TIMLDC Load a new prefix/suffix character for numeric labels of one component of time-date axis annotations.
TITLE Draw a text string as a title to the picture, group or page.
TITLE7 Draw a text string as a title to the picture, group or page.
TRIANG Triangulate a Triangle object.
TRIDEL Delete a Triangle object.
TRIFIX Specify a sequence of points to lie on a fixed line in a Triangle object.
TRIGET Extract triangles from a Triangle object.
TRINEW Acquire a handle to a Triangle object.
TRIOFF Specify the base value subsequently used for point indices.
TRIREG Register the (x,y) points in a Triangle object.
VGBDLL Evaluate the latitude and longitude of the point with bearing BEARIN and distance DISTIN from (RLONG1, RLAT1).
VGLLBD Evaluate bearing and distance from (RLONG1,RLAT1) to (RLONG2,RLAT2).
VGLLSD Evaluate shortest distance between (RLONG1,RLAT1) and (RLONG2,RLAT2).
VS3DLM Set the three-dimensional Limiting Box for plottable data.
VSAXDR Draw 3-D axes on a ViSualization picture.
VSAXFC Specify the colours for filled rear planes of ViSualization pictures.
VSAXGC Specify the colour indices for grid lines on the rear planes of ViSualization pictures.
VSBLFL Fill a 3-D block on a ViSualization picture.
VSBLTN Tint a 3-D block on a ViSualization picture.
VSBRBZ Specify the base z value for bars in ViSualization 3-D barcharts.
VSBRFC Specify how colour sequences should be used on subsequent ViSualization 3-D barcharts.
VSBRFL Fill a ViSualization 3-D barchart.
VSBRSZ Specify the widths of bars in ViSualization 3-D barcharts.
VSBRTN Tint a ViSualization 3-D barchart.
VSBRUP Specify the stacking direction for ViSualization 3-D barcharts.
VSCGS Set the palette for a range of colour indices to a grey scale suitable for light-sourcing.
VSCHLS Set hue, lightness and saturation levels for the ViSualization palette.
VSCIM Switch the method of interpolating colour sequences.
VSCRGB Specify red, green and blue levels for the ViSualization palette.
VSCRNG Set a graded range of colours in the ViSualization palette.
VSEDGC Specify the colour index for the edge of filled areas.
VSEDGI Specify an offset and increment for edging of gridded data elements to form a grid over surfaces.
VSEDGV Specify whether the edge of polygons is to be drawn.
VSEQX Specify the equally-spaced x values to be associated with ViSualization gridded 3-D data.
VSEQY Specify the equally-spaced y values to be associated with ViSualization gridded 3-D data.
VSEQZ Specify the equally-spaced z values to be associated with ViSualization gridded 3-D data.
VSFILC Specify the colour index to be used by ViSualization area fill subroutines.
VSFIT Specify which axis scales are measured in similar units.
VSFITP Specify the relative lengths of the x, y and z axes.
VSFULL Specify how the Limiting Box is to fill the SIMPLEPLOT picture.
VSINIT Reset ViSualization defaults.
VSIS DRaw the light-sourced IsoSurface of a specified data level from REAL data in a 3-D array in a ViSualization image.
VSISU Draw contours of REAL data from one 3-D array on the IsoSurface of a specified data level from REAL data in another 3-D array in a ViSualization image.
VSK7H Draw a horizontal key.
VSK7V Draw a vertical key.
VSKEYS Draw a complete key to a sequence of distinct shading patterns.
VSLBOX Specify whether Limiting Boxes are to be drawn around ViSualization images.
VSLINC Specify the colour index to be used by line drawing subroutines.
VSLSLD Specify the direction of a light source for a ViSualization image.
VSLSSM Specify the shading method for light-sourcing to be used in a ViSualization image.
VSMAG Magnify ViSualization coordinates along any or all of the x-yz axes.
VSNEW Start a new ViSualization picture.
VSOUT Flush the raster image.
VSPGFE Fill an edge-flagged planar polygon with the current fill index in a ViSualization image.
VSPGFL Fill a planar polygon with the current fill index in a ViSualization image.
VSPGTE Tint an edge-flagged planar polygon from user data values in a ViSualization image.
VSPGTN Tint a planar polygon from user data values in a ViSualization image.
VSPLDR Draw a polyline through a succession of (x,y,z) data points in a ViSualization image.
VSPLTN Tint a polyline based on user data values in a ViSualization image.
VSPMC Specify the colour index for subsequent markers.
VSPMDR Draw a set of markers of type MKTYPE in a ViSualization image.
VSPMMG Specify the scaling factor for subsequent markers.
VSPOP Recall a transformation matrix saved by VSPUSH.
VSPUSH Save current ViSualization transformation matrix.
VSPUT Copy data into the raster image and ZBuffer.
VSRG Draw a perspective surface picture from a 2-D array in a ViSualization image.
VSRGU Draw contours of data from one 2-D array on a surface picture from another 2-D array in a ViSualization image.
VSROT Rotate ViSualization coordinates around one of the x-yz axes.
VSTRAN Translate ViSualization coordinates along any or all of the x-yz axes.
VSUTOC Define mapping from user data values to colour indices.
VSVRTP Set the Viewing Position in terms of a radius and 2 angles for a projected picture.
VSVXYZ Set the Viewing Position for a projected picture in terms of (x,y,z).
VSXYZ Draw a surface picture from three 2-D arrays in a ViSualization image.
VSXYZU Draw contours of data in one 2-D array on a surface picture from three 2-D arrays in a ViSualization image.
VSZ Draw a surface from 3-D data structured into elements.
VSZU Draw contours of data in an array on a surface from 3-D data structured into elements.
WFCHT Draw a waterfall chart on the current picture.
WFDRAW Draw a single curve on a waterfall chart.
WFEQL Specify the equally-spaced values on the label scale of a waterfall chart.
WFEQN Specify the equally-spaced values on the numeric scale of a waterfall chart.
WFINIT Reset all defaults for waterfall charts.
WFNCVS Specify the number of curves to be accommodated on waterfall charts.
WFNSCL Specify the numeric scale for waterfall charts.
WFPNS Specify the pens used in waterfall charts.
WFSTEP Specify the displacement between waterfall curves.
WFZLEV Specify the data value at which waterfall curves can change pens.
WFZSCL Specify the z scales for curves on subsequent waterfall charts.
XCALC Interpolate z=f(x,y) from 3-D data on an x-specified grid.
XCNTS Draw a contour map from 3-D data on an x-specified grid.
XCONT Draw a contour curve from 3-D data on an x-specified grid.
XCUT Draw a 2-D curve of a surface section from 3-D data on an x-specified grid.
XSCALE Specify the Cartesian horizontal scale for all 2-D plotting.
XSHAD Shade the area between two contour levels from 3-D data on an x-specified grid.
XSHDS Draw a shaded contour map from 3-D data on an x-specified grid.
XSURF Start a new picture and draw a surface from 3-D data on an x-specified grid.
XYCALC Interpolate z=f(x,y) from 3-D data on an x-y specified grid.
XYCNTS Draw a contour map from 3-D data on an x-y specified grid.
XYCONT Draw a contour curve from 3-D data on an x-y specified grid.
XYCUT Draw a 2-D curve of a surface section from 3-D data on an x-y specified grid.
XYSHAD Shade the area between two contour levels from 3-D data on an x-y specified grid.
XYSHDS Draw a shaded contour map from 3-D data on an x-y specified grid.
XYSURF Start a new picture and draw a surface from 3-D data on an x-y specified grid.
YCALC Interpolate z=f(x,y) from 3-D data on a y-specified grid.
YCNTS Draw a contour map from 3-D data on a y-specified grid.
YCONT Draw a contour curve from 3-D data on a y-specified grid.
YCUT Draw a 2-D curve of a surface section from 3-D data on a y-specified grid.
YSCALE Specify the Cartesian vertical scale for all 2-D plotting.
YSHAD Shade the area between two contour levels from 3-D data on a y-specified grid.
YSHDS Draw a shaded contour map from 3-D data on a y-specified grid.
YSURF Start a new picture and draw a surface from 3-D data on a y-specified grid.
ZCALC Interpolate z=f(x,y) from ungridded 3-D data (without neighbours).
ZCNTS Draw a contour map from ungridded 3-D data (without neighbours).
ZCONT Draw a contour curve from ungridded 3-D data (without neighbours).
ZCUT Draw a 2-D curve of a surface section from ungridded 3-D data (without neighbours).
ZEDGE Draw around the boundary of the data area covered by a set of elements (without neighbours).
ZELEM Draw a single area element.
ZELEMS Draw the configuration of a set of area elements (without neighbours).
ZNEIGH Set up an array of neighbours from an array of elements.
ZNUMB Specify whether nodes and/or elements are to be numbered.
ZORDEN Reconfigure (x,y) coordinates into triangular area elements using normalized values.
ZORDER Reconfigure (x,y) coordinates into triangular area elements.
ZSHAD Shade the area between two contour levels from ungridded 3-D data (without neighbours).
ZSHDS Draw a shaded contour map from ungridded 3-D data (without neighbours).
ZSURF Start a new picture and draw a surface from ungridded 3-D data (without neighbours).
ZZCALC Interpolate z=f(x,y) from ungridded 3-D data (with neighbours).
ZZCNTS Draw contours from ungridded 3-D data (with neighbours).
ZZCONT Draw a contour curve from ungridded 3-D data (with neighbours).
ZZEDGE Draw around the boundary of the data area covered by a set of elements (with neighbours).
ZZELMS Draw the configuration of a set of area elements (with neighbours).
ZZORDN Reconfigure (x,y) coordinates into triangular elements and an array of neighbours (using normalized values).
ZZORDR Reconfigure (x,y) coordinates into triangular elements and an array of neighbours.
ZZSHAD Shade the area between two contour levels from ungridded 3-D data (with neighbours).
ZZSHDS Draw a shaded contour map from ungridded 3-D data (with neighbours).
ZZSURF Start a new picture and draw a surface from ungridded 3-D data (with neighbours).


ADDCAP

This page uses frames, but your browser doesn't support them.


ADDCAP

SUBROUTINE ADDCAP (CAP, NCAP)

SUBROUTINE ADDCP7 (CAP)

Purpose

to draw a caption in a previously defined area.

Argument(s)

CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

ADDCAP/ADDCP7 draws [2] the caption, CAP, in the next position in the area defined by DEFCAP (or DEFKEY).

When a key or caption area is defined, a pointer to the top space in the area is created. As key entries or captions are inserted, the pointer is automatically moved down to the next vacant space.

REAL and INTEGER values can be converted to text strings using the conversion subroutines, KREAL and KNUMB respectively.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Caption truncated)2
 (Key/caption area full)2
 (No active key/caption area)2

See Also

ADDJST, ADDTOP, BLNKKY, DEFCAP, QKYCAP, RESNXT and TEXTLF.

Examples

Sequences on contour maps
Geographical text strings
Drawing keys and captions
Marker symbols
Text in pictures - alternative character sets


ADDJST

This page uses frames, but your browser doesn't support them.


ADDJST

SUBROUTINE ADDJST (JCHAR)

Purpose

to specify how entries in caption areas/keys are to be justified.

Argument(s)

JCHAR CHARACTER*1 Justification of key entries/captions

JCHAR | Horizontal justification
"C" | Centred
"L" | Left justified
"R" | Right justified
"D" | Default

Description

By default, captions drawn by ADDCP7 and key entries drawn by *KY/*K7 are left justified within the space available; composite keys drawn by SHKEYS, MPK7H/MPKYH and MPK7V/MPKYV have a centred caption, followed by right-justified numeric key entries (for vertical map keys) or left-justified text entries.

ADDJST changes the justification of key entries and captions. ADDJST also affects the justification of entries in segment labels on pie charts (see PIINCL).

Availability

Section 4, released before version 2-5.

Default

ADDJST("D") restores the default.

See Also

ADDCP7, BOTHK7, FILLK7, LINEK7, MARKK7, MPK7H, MPK7V, PIINCL, SHDEK7 and SHKEYS.

Examples

Drawing keys and captions
Text in pictures - alternative character sets


ADDTOP

This page uses frames, but your browser doesn't support them.


ADDTOP

SUBROUTINE ADDTOP

Purpose

to reset the current key/caption usage pointer to the top of sequence.

Argument(s)

None

Description

When a key or sequence of captions is set up, a pointer to the top space in the rectangle is created. As key entries or captions are inserted, the pointer is automatically moved down to the next vacant space. ADDTOP sets the pointer back to the top.

For example, to produce two sets of captions, left justified and right justified in the same caption area, once the first sequence has filled the area from top to bottom, ADDJST can specify right justification, ADDTOP sets the pointer back to the top and then the right justified captions can be drawn.

Availability

Section 4, released before version 2-5.

See Also

ADDCP7, ADDJST, DEFCAP and DEFKEY.


ARHEAD

This page uses frames, but your browser doesn't support them.


ARHEAD

SUBROUTINE ARHEAD (PROP)

Purpose

to specify the proportional size of arrow heads.

Argument(s)

PROP REAL expression Proportion of head w.r.t. to shaft

Description

By default, arrows are drawn with heads of a constant size, related to the size of text. ARHEAD specifies variably sized arrow heads such that each head is proportional to the length of the shaft. The ratio of head size to shaft length is indicated by the argument PROP (0.2 gives reasonable results).

Availability

Section 4, released version 2-6.

Default

ARHEAD(0.0) restores the default.

See Also

ARROW, ARSHFT and TEXTSZ.

Examples

BUSS's Arrow Collection


ARROW

This page uses frames, but your browser doesn't support them.


ARROW

SUBROUTINE ARROW (XFROM, YFROM, XTO, YTO)

Purpose

to draw an arrow between two specified points.

Argument(s)

XFROM,YFROM | REAL expressions | Coordinates of the end of the arrow in units of plotting scales
XTO,YTO | REAL expressions | Coordinates of the head of the arrow in units of plotting scales

Description

ARROW draws [1] an arrow from (xfrom, yfrom) to (xto, yto) with its head at (xto, yto). The position and direction of the arrow are completely defined by the four arguments which specify the coordinates of the end and the head of the arrow in terms of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine KXYXY. If xfrom=xto and yfrom=yto, nothing is drawn.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-6.

Diagnostics

  (**x1,y1,x2,y2**)2

See Also

ARHEAD, ARSHFT, CLIPLV and KXYXY.

Examples

Controlling the graticule
Boxes and arrows


ARSHFT

This page uses frames, but your browser doesn't support them.


ARSHFT

SUBROUTINE ARSHFT (TORF)

Purpose

to specify whether arrows are to include a shaft.

Argument(s)

TORF LOGICAL expression Whether shaft is to be included

Description

By default, arrows are drawn with both a shaft and an arrow head but it can be required to draw arrow heads on existing lines. ARSHFT specifies whether or not the shaft is to be drawn by ARROW. The arguments of ARROW are still needed to define the direction of the arrow head and, if variable sized arrow heads have been requested by ARHEAD, to control the size of arrow heads.

Availability

Section 4, released version 2-6.

Default

ARSHFT(.TRUE.) restores the default.

See Also

ARROW and ARHEAD.

Examples

BUSS's Arrow Collection


AXCLR

This page uses frames, but your browser doesn't support them.


AXCLR

SUBROUTINE AXCLR (CHAXIS, ILEVEL)

Purpose

to specify the level of annotation drawn with the axis.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
ILEVEL | INTEGER expression | Level of axis annotation

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | Y

ILEVEL | Effect
0 | Tick marks and annotation labels are drawn
1 | Only axis line drawn

Description

By default, when an axis is drawn it is subdivided and annotated at regular intervals using automatically generated labels. Calling AXCLR(CHAXIS,1) before the axis is drawn suppresses the drawing of tick marks and annotation labels; user-defined labels can then be drawn using AXLAB7 or AXTXT7.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement. AXCLR can be used for all axis types.

Availability

Section 1, released version 2-11.

Diagnostics

  (Invalid axis type: XX)1

Default

AXCLR(CHAXIS,0) returns to automatic annotation of the specified axis.

See Also

AXIS7, AXLAB7 and AXTXT7.

Examples

A simple waterfall chart
Conversion on waterfall charts
Marker symbols
Circular chart
Controlling the scales on waterfall charts
Stacked 3-D barchart
Reversing the direction of 3-D bars
Inquiring the size of stacked bars


AXCRSS

This page uses frames, but your browser doesn't support them.


AXCRSS

SUBROUTINE AXCRSS (CHAXIS, CROSS)

Purpose

to specify the intersection of one axis with its natural pair.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
CROSS | REAL expression | Position of axis in units of the `other' scale

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
N | N | N

nb | lb
N | N

nw | lw
Y | Y

x3 | y3 | z3 | u
N | N | N | N

Description

By default, a Cartesian or radial axis is positioned such that it intersects the other axis at zero, or the value closest to zero on the scale. An angular axis intersects the radial axis at the outer extreme of the radial scale. AXCRSS specifies an alternative position for an axis. AXCRSS must be called before an axis is drawn.

If the point of intersection lies outside the plotting scale, the axis is drawn at the edge of the picture nearest the intersection.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 1, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXCRSS(CHAXIS,0.0) restores the default except for an angular axis for which you must specify the outer radial value or AXLOCN("AP","D").

See Also

AXIS7 and AXLOCN.

Examples

Multiple scales on an x-y plot


AXES

This page uses frames, but your browser doesn't support them.


AXES

SUBROUTINE AXES (CAPX, NCAPX, CAPY, NCAPY)

SUBROUTINE AXES7 (CAPX, CAPY)

Purpose

to start a new picture and draw axes.

Argument(s)

CAPX | STRING expression | Caption for horizontal axis
CAPY | STRING expression | Caption for vertical axis
NCAPX | INTEGER expression | Number of characters in CAPX
NCAPY | INTEGER expression | Number of characters in CAPY

Description

AXES7 starts a new picture and draws [1] a pair of axes which are annotated [2] with the scales which exist when the call occurs. The characteristics of these axes can be controlled or augmented by all the other axis subroutines which affect Cartesian or polar axes (see below).

If polar units have been specified by EQSCAL, AXES7 draws a polar framework with one radial axis at the initial theta value, labelled with CAPX; if the angular range is less than a cycle, another radial axis is drawn at the other end of the range, labelled with CAPY; an angular axis is drawn covering the angular range.

If scales are extended to provide similar linear scales in x and y (see EQSCAL), the axes annotate the requested range rather than the extended range. If a box is required to surround these axes, DRAWBX can be used to draw a box on the current picture.

Availability

Section 1, released before version 2-5.

See Also

AXIS7, DRAWBX, EQSCAL, NEWPIC and POLAR7.

Examples

Line contours
Circles And Boxes With Broken Lines
Simple plotting
A scattergram
Circles
Bundled attributes
Labelled curves


AXGRID

This page uses frames, but your browser doesn't support them.


AXGRID

SUBROUTINE AXGRID (CHAXIS, ILEVEL, LTYPE)

Purpose

to specify the style of grids drawn in association with axis subdivisions.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
ILEVEL | INTEGER expression | Level of grid
LTYPE | INTEGER expression | Type of broken line pattern

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
N | N | N

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
N | N | N | N

ILEVEL | Level of grid
0 | No grid
1 | Grid lines drawn [3] at annotated and major unannotated tick marks
2 | Grid lines drawn [4] at all tick marks including minor

Description

By default, when an axis is drawn no grid lines are drawn. AXGRID specifies that grid lines are drawn in association with axis subdivisions.

Grids can have any of the available broken line patterns as specified by LTYPE. If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 1, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXGRID(CHAXIS,0,-999) restores the default.

See Also

AXIS7, AXLAB7, AXMAJ, AXMIN, AXTXT7 and BUNLPR.

Examples

Polar contour map
Drawing a cross section
Drawing axes
Bar chart
Circular chart
Controlling the scales on waterfall charts


AXIS

This page uses frames, but your browser doesn't support them.


AXIS

SUBROUTINE AXIS (CHAXIS, CAP, NCAP)

SUBROUTINE AXIS7 (CHAXIS, CAP)

Purpose

to draw an axis on the current picture.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
CAP | STRING expression | Axis caption
NCAP | INTEGER expression | Number of characters in CAP

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

Description

AXIS/AXIS7 draws [1] an axis over the current range, annotated [2] according to the scale which exists when the call occurs.

The axis caption, CAP, is drawn [2] in the centre of and parallel to the axis, on the same side of the axis as the axis annotation; the caption is ignored for polar angular axes (CHAXIS="AP").

If AXGRID has been called to requests grids, grid lines are drawn at axis subdivisions.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 1, released version 2-11.

Diagnostics

  (Invalid axis type: XX)1
 (Inappropriate axis type: XX)2

See Also

AXCLR, AXCRSS, AXGRID, AXLBAN, AXLBGP, AXLBJS, AXLBLV, AXLOCN, AXRNGE, AXSBDV, AXSBTK and AXSUBS

Examples

Drawing individual waterfall curves
Extra Axis Labels
Axis Tick Mark Labelling
Drawing axes
Multiple scales on an x-y plot
Circular chart
Waterfall charts drawn curve-by-curve
Reversing the direction of 3-D bars
Drawing an individual bar


AXLAB

This page uses frames, but your browser doesn't support them.


AXLAB

SUBROUTINE AXLAB (CHAXIS, W, CAP, NCAP)

SUBROUTINE AXLAB7 (CHAXIS, W, CAP)

Purpose

to draw a single axis annotation label and tick mark.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
W | REAL expression | Position along axis in units of the plotting scales
CAP | STRING expression | Annotation label
NCAP | INTEGER expression | Number of characters in CAP

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

Description

By default, when an axis is drawn it is subdivided and annotated at regular intervals using automatically generated labels. If additional labels are required on an axis, each one can be drawn by a separate call of AXLAB/AXLAB7. A tick mark is drawn [1] at position w along the axis, and labelled [2] with the caption, CAP.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 1, released version 2-11.

Diagnostics

  (Invalid axis type: XX)1
 (Inappropriate axis type: XX)2

See Also

AXCLR, AXGRID, AXLBAN, AXLBJS, AXLBSL, AXSBTK and AXTXT7.

Examples

Extra Axis Labels
Reversing the direction of 3-D bars


AXLBAN

This page uses frames, but your browser doesn't support them.


AXLBAN

SUBROUTINE AXLBAN (CHAXIS, ACHAR)

Purpose

to specify the style of annotation labels on an axis.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
ACHAR | CHARACTER*1 | Position of annotation

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
YU | YU | YU | N
U: "P"receding, "F"ollowing and "I"nside unavailable

ACHAR | Style
"D" | Default - towards the outside
"F" | Following axis (in direction of other axis)
"I" | Towards the inside of the picture
"N" | None - annotation labels omitted
"O" | Towards the outside of the picture
"P" | Preceding axis (in direction of other axis)

Description

By default, all axes are annotated towards the outside of the picture if there is room, or towards the inside otherwise. AXLBAN specifies the style of annotation labels according to the value of ACHAR.

If there is insufficient space for labels in the specified location, annotation is drawn elsewhere but is not omitted. If ACHAR="I", "O", "P" or "F", and the annotation request cannot be satisfied, a diagnostic is issued.

A fuller description of the values of CHAXIS and the interpretation of "P" and "F" is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (AXLBAN not satisfied)2
 (Invalid axis type: XX)1

Default

AXLBAN(CHAXIS,"D") restores the default.

See Also

AXIS7, AXLAB7, AXLBJS, AXSBTK and AXTXT7.

Examples

Extra Axis Labels


AXLBGP

This page uses frames, but your browser doesn't support them.


AXLBGP

SUBROUTINE AXLBGP (CHAXIS, ILEVEL)

Purpose

to specify the level of axis annotation near an intersection.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
ILEVEL | INTEGER expression | Level of annotation at intersection

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | N

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | Y

ILEVEL | Effect
0 | All annotation drawn
1 | Annotation omitted near intersection

Description

By default, annotation labels which could be ambiguous or coincident near the intersection of two axes, are omitted from both. AXLBGP(CHAXIS,0) specifies that no gap is to be left in the annotation of the specified axis near an intersection.

AXLBGP must be called before an axis is drawn.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXLBGP(CHAXIS,1) restores the default.

See Also

AXCRSS and AXIS7.

Examples

Shaded contour maps and surfaces
Drawing axes
Bar chart
Thickened lines


AXLBJS

This page uses frames, but your browser doesn't support them.


AXLBJS

SUBROUTINE AXLBJS (CHAXIS, JCHAR)

Purpose

to specify the justification of axis annotation.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
JCHAR | CHARACTER*1 | Justification of annotation

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | N

xi | yi | zi
N | N | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
N | N | N | N

JCHAR | Justification of annotation
"B" | Between tick marks (centred)
"C" | Centered on the tick mark
"F" | Following the tick mark
"P" | Preceding the tick mark
"D" | Default position

Description

By default, axis annotation labels are drawn preceding the subdivision tick mark with which they are associated. AXLBJS specifies justification of annotation relative to the tick marks.

AXLBJS must be called before an annotation label is drawn (either as part of an axis) or before labels are drawn (using AXLAB7 or AXTXT7).

A fuller description of the possible values of CHAXIS and the interpretation of "P" and "F" is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXLBJS(CHAXIS,"D") restores the default.

See Also

AXIS7, AXLAB7, AXLBAN, AXLBSL and AXTXT7.

Examples

Shaded contour maps and surfaces
Multiple scales on an x-y plot
Marker symbols
Bar chart
Circular chart
Thickened lines
Bundled attributes


AXLBLV

This page uses frames, but your browser doesn't support them.


AXLBLV

SUBROUTINE AXLBLV (CHAXIS, ILEV)

Purpose

to specify the level of additional annotation on some axes.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
ILEV | INTEGER expression | Level of annotation

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
YNL | YNL

rp | ap
N | Y

xi | yi | zi
N | N | N

nb | lb
N | N

nw | lw
N | N

x3 | y3 | z3 | u
N | N | N | N
NL: non-linear scales only

ILEV | Non-linear Cartesian axes | Angular polar axis
0 | determined by scales | 30°,60°,120°,150°,210°,240°,300°,330°
1 | powers of 10 only | plus 0°, 90°, 180°, 270°
2 | 3 | plus 10° intervals
3 | 2,5 | -
4 | 1,2,3,4,5,6,7,8,9 | -

Description

By default, axes are subdivided and annotated at regular intervals but non-linear axes and angular polar axes may need additional axis annotation due to the small extent of scale displayed. AXLBLV specifies the level of additional labelling.

AXLBLV must be called before an non-linear axis is drawn.

SIMPLEPLOT may omit these labels due to lack of space.

The possible values of CHAXIS are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXLBLV(CHAXIS,0) restores the default.

See Also

AXCLR, AXIS7, AXLAB7 and AXTXT7.

Examples

Drawing axes


AXLBSL

This page uses frames, but your browser doesn't support them.


AXLBSL

SUBROUTINE AXLBSL (CHAXIS, SCHAR)

Purpose

to specify the slope of used-defined axis annotation.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
SCHAR | CHARACTER*1 | Direction of slope of labels

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | N

xi | yi | zi
Y | Y | Y

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
N | N | N | N

SCHAR | Direction of label
"H" | Horizontal
"V" | Vertical
"S" | Sloping
"D" | Default (different for labels of different lengths)

Description

By default, user-defined axis annotation labels are drawn horizontally for short labels, but long labels are sloped by staggering the characters in an attempt to make efficient use of the limited space. Labels added to axes are considered to be long if they contain six or more characters but no escape sequences. Axis labels which contain active escape sequences are never sloped.

AXLBSL specifies their slope according to the value of SCHAR. AXLBSL must be called before user-defined annotation labels are drawn (using AXLAB7, AXTXT7 or BARCHT). Axis labels on an angular axis are always horizontal.

A fuller description of the possible values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXLBSL(CHAXIS,"D") restores the default.

See Also

AXIS7, AXLAB7, AXLBAN, AXLBJS and AXTXT7.

Examples

Extra Axis Labels
Axis Tick Mark Labelling


AXLBSP

This page uses frames, but your browser doesn't support them.


AXLBSP

SUBROUTINE AXLBSP (CHAXIS, CHAR1, CHAR2)

Purpose

to specify separators between label components of time-date axis annotation.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
CHAR1 | CHARACTER*1 | Separator between first pair
CHAR2 | CHARACTER*1 | Separator between second pair

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

Description

Time-date axis annotation labels are built from up to three components. By default, time components are separated by colons (eg. 12:00:00) and date components are separated by spaces (eg. 30 Mar 1990). AXLBSP specifies alternative single-character separators - CHAR1 between the first and second components, CHAR2 between the second and third components.

In addition to a user-specified character, there are two special codes for separators which can be specified for CHAR1 and/or CHAR2:

CHARi | Meaning
"N" | No separator, not even a space
"D" | Default separator - ":" for Times, " " for Dates
Separators should not be confused with the prefix and suffix characters which can be controlled independently by TIMFMT and TIMLDC.

AXLBSP has no effect on numerical axes; it only works after AXLBTP has requested time-date scales. A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section plus, released version 2-12.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXLBSP(CHAXIS,"D","D") restores the default.

See Also

AX*, TIMFMT, TIMLDA and TIMLDC


AXLBTM

This page uses frames, but your browser doesn't support them.


AXLBTM

SUBROUTINE AXLBTM (CHAXIS, COMP1, COMP2, COMP3)

Purpose

to specify components for time-date axis annotation.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
COMP1 | CHARACTER*2 | Component for first label position
COMP2 | CHARACTER*2 | Component for second label position
COMP3 | CHARACTER*2 | Component for third label position

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

Description

By default, SIMPLEPLOT selects components for time-date axis labels according to the range of the relevant scale: times are in descending order (eg. hour/minute/second) and dates in ascending order (eg. day/month/year). AXLBTM specifies the components to be used, in the required order.

For only two components, and set COMP3 to "NL" or " ". For only one component, use COMP1, set COMP2 to "NL" or " ", and COMP3 is also ignored.

AXLBTM has no effect on numerical axes; it only becomes active after AXLBTP has been called to request time-date scales.

A fuller description of the values of CHAXIS and the interpretations of COMP1, COMP2 and COMP3 is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section plus, released version 2-12.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1
 (AXLBTM cancelled: XX)1

Default

AXLBTM(CHAXIS,"DF"," "," ") restores the default.

See Also

AX*.


AXLBTP

This page uses frames, but your browser doesn't support them.


AXLBTP

SUBROUTINE AXLBTP (CHAXIS, CHTYPE)

Purpose

to specify numeric or time-date axis annotation.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
CHTYPE | CHARACTER*1 | Annotation type - "N"umeric, "D"ate or "T"ime

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

CHTYPE | Annotation type
"N" | Numeric (default)
"D" | Date
"T" | Time

Description

By default, SIMPLEPLOT labels an axis with numeric labels representing a continuous REAL scale. Encoded times and dates are similar to any other REAL values therefore, by default, axis annotation represents numerical values. AXLBTP specifies that scale values on the specified axis represent time or date based data according to the value of CHTYPE.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section plus, released version 2-12.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXLBTP(CHAXIS,"N") restores the default.

See Also

AXIS7, AXLBSP and AXLBTM.

Examples

Tinted bar chart


AXLOCN

This page uses frames, but your browser doesn't support them.


AXLOCN

SUBROUTINE AXLOCN (CHAXIS, LCHAR)

Purpose

to specify the location of an axis relative to the picture.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
LCHAR | CHARACTER*1 | Location of axis

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | Y

LCHAR | Location of axis
"P" | Preceding the other axis
"F" | Following the other axis
"D" | Default

Description

By default, a Cartesian or radial axis is positioned such that it intersects the other axis at zero or at its lowest extreme; a z-axis precedes the x-axis and y-axis; similarly the numeric and labels axes on a bar chart precede one another. AXLOCN specifies the location of the axis with respect to the picture boundary.

AXLOCN must be called before an axis is drawn.

A fuller description of the values of CHAXIS and the interpretation of "P" and "F" is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Invalid axis type: XX)1

Default

AXLOCN(CHAXIS,"D") restores the default.

See Also

AXIS7, AXCRSS and AXLBGP.

Examples

Contour maps of a user-defined function
Distinguishing between data levels on a waterfall chart
Multiple scales on an x-y plot
Bar chart and pie chart
Thickened lines
Bundled attributes
Controlling the scales on waterfall charts
Reversing the direction of 3-D bars
Polymarkers
Drawing an individual bar
Inquiring the size of stacked bars


AXMAJ

This page uses frames, but your browser doesn't support them.


AXMAJ

SUBROUTINE AXMAJ (CHAXIS, W)

Purpose

to draw a single major axis subdivision.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
W | REAL expression | Position along axis in units of the plotting scales

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

Description

AXMAJ draws [1] a single major unannotated axis subdivision at position w along the specified axis; the tick mark is smaller than those drawn with annotated subdivisions. If grids have been specified, a grid line [3] is drawn.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Invalid axis type: XX)1
 (Inappropriate axis type: XX)2

See Also

AXGRID, AXMIN, AXSBDV, AXSBMN, AXSBTK and AXSUBS.

Examples

Major And Minor Axis Labels


AXMIN

This page uses frames, but your browser doesn't support them.


AXMIN

SUBROUTINE AXMIN (CHAXIS, W)

Purpose

to draw a single minor axis subdivision.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
W | REAL expression | Position along axis in units of the plotting scales

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

Description

AXMIN draws [1] a single minor unannotated axis subdivision at position w along the specified axis; the tick mark is smaller than those drawn with annotated and major unannotated subdivisions. If grids have been specified, a grid line [4] is drawn.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Invalid axis type: XX)1
 (Inappropriate axis type: XX)2

See Also

AXGRID, AXMAJ, AXSBDV, AXSBMN, AXSBTK and AXSUBS.

Examples

Major And Minor Axis Labels


AXRNGE

This page uses frames, but your browser doesn't support them.


AXRNGE

SUBROUTINE AXRNGE (CHAXIS, START, STOP)

Purpose

to specify the subrange over which an axis is to be drawn.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
START | REAL expression | Start of axis in units of scale
STOP | REAL expression | End of axis in units of scale

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | Y

Description

By default, when an axis is drawn it is drawn over the entire range of the scale. AXRNGE specifies an alternative subrange for the specified axis. AXRNGE must be called before the axis is drawn.

This subrange cannot extend the axis beyond the limits of the scale. If one end of the subrange lies beyond the limits of the scale, only part of the subrange is drawn; if the whole of the subrange is outside the limits of the scale, the default applies.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 1, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

The default is restored by calling AXRNGE with a zero range (ie. START=STOP). For example, AXRNGE(CHAXIS,0.0,0.0).

See Also

AXIS7 and SCALES.

Examples

Waterfall charts and cascade surface pictures
Multiple scales on an x-y plot


AXSBDV

This page uses frames, but your browser doesn't support them.


AXSBDV

SUBROUTINE AXSBDV (CHAXIS, OFFSET, DELTA)

Purpose

to specify the interval at which a linear axis is to be subdivided and annotated.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
OFFSET | REAL expression | Offset value for subdivisions
DELTA | REAL expression | Interval between subdivisions of axis in units of the scale

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
YL | YL

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | Y
L: Linear scales only

Description

By default, linear axes are subdivided at equal intervals chosen for clarity to give between 5 and 10 subdivisions at multiples of a `simple' number. AXSBDV specifies the annotation interval and an offset from which divisions are calculated. AXSBDV must be called before an axis is drawn.

If DELTA is less than 1.0E-4 * axis range, the default interval is used instead and, at diagnostic level 2, a diagnostic message is issued (see below).

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 1, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1
 (Too many axis intervals: default used)1

Default

AXSBDV(CHAXIS,0.0,0.0) restores the default.

See Also

AXIS7 and KSCALE.

Examples

Polar contour map
Shaded contour maps and surfaces
Drawing axes
Thickened lines
Stacked 3-D barchart
Tinted bar chart
Stacked bar chart


AXSBMN

This page uses frames, but your browser doesn't support them.


AXSBMN

SUBROUTINE AXSBMN (CHAXIS, OFFSET, DELTA)

Purpose

to specify the minor subdivisions on a linear axes independently of major subdivisions.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
OFFSET | REAL expression | Offset value for minor subdivisions in units of the plotting scale
DELTA | REAL expression | Interval between minor subdivisions in units of the plotting scale

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
YL | YL

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | Y
L: Linear scales only

Description

By default, linear axes are drawn with no minor subdivisions but they can be requested in one of two ways. AXSUBS requests minor subdivisions which divide major subdivisions into a specified number of equal parts; AXSBMN specifies an offset value and interval independently of the major subdivisions. Minor axis subdivisions are indicated by small tick marks and, when grids of type 2 have been requested, grid lines are also drawn.

AXSBMN and AXSUBS provide alternative methods and therefore the most recent call of either cancels any earlier call.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-12.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXSBMN(CHAXIS,0.0,0.0) or AXSUBS(CHAXIS,0,0) restores the default.

See Also

AXGRID, AXIS7, AXMAJ, AXMIN, AXSBDV, AXSBTK and AXSUBS.

Examples

Major And Minor Axis Labels


AXSBTK

This page uses frames, but your browser doesn't support them.


AXSBTK

SUBROUTINE AXSBTK (CHAXIS, TCHAR)

Purpose

to specify the style of tick marks on an axis.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
TCHAR | CHARACTER*1 | Direction of tick marks

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
YU | YU | YU | YU
U: "P"receding, "F"ollowing and "I"nside unavailable

TCHAR | Meaning
"A" | Straddling across the axis
"D" | Default - towards the outside
"F" | Following axis
"I" | Towards the inside of the picture
"N" | None - tick marks omitted
"O" | Towards the outside of the picture
"P" | Preceding axis

Description

By default, tick marks are drawn towards the outside of the picture if there is room, or towards the inside otherwise. AXSBTK specifies a new style, and must be called before a tick mark is drawn as part of a composite task, or using AXMAJ, AXMIN, AXLAB7 or AXTXT7.

If there is insufficient space for tick marks in the specified location, they are drawn elsewhere. If TCHAR cannot be satisfied, a diagnostic is issued. A fuller description of the values of CHAXIS and the interpretation of "P" and "F" is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (AXSBTK not satisfied)2
 (Invalid axis type: XX)1

Default

AXSBTK(CHAXIS,"D") restores the default.

See Also

AXIS7, AXLAB7, AXMAJ, AXMIN and AXTXT7.

Examples

Major And Minor Axis Labels
Axis Tick Mark Labelling


AXSUBS

This page uses frames, but your browser doesn't support them.


AXSUBS

SUBROUTINE AXSUBS (CHAXIS, NMAJOR, NMINOR)

Purpose

to specify the numbers of major and minor subdivisions on linear axes.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
NMAJOR | INTEGER expression | Number of major subdivisions
NMINOR | INTEGER expression | Number of minor subdivisions

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
YL | YL

rp | ap
Y | N

xi | yi | zi
Y | Y | Y

nb | lb
Y | Y

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | Y
L: Linear scales only

Description

By default, all linear axes are drawn with no minor subdivisions, and major subdivisions are only used when the space available is too small to fit annotation labels at all tick marks. AXSUBS specifies the intervals between annotated tick marks. These intervals are subdivided into NMAJOR equal major intervals which are each subdivided into NMINOR equal minor intervals. Major tick marks are smaller than annotated tick marks.

AXSUBS must be called before a linear axis is drawn and minor tick marks are smaller than major tick marks.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Inappropriate axis type: XX)1
 (Invalid axis type: XX)1

Default

AXSUBS(CHAXIS,0,0) restores the default.

See Also

AXGRID, AXIS7, AXMAJ, AXMIN, AXSBDV and AXSBTK.

Examples

Major And Minor Axis Labels
Axis Tick Mark Labelling


AXTXT

This page uses frames, but your browser doesn't support them.


AXTXT

SUBROUTINE AXTXT (CHAXIS, W1, STEP, LABARR, NARR, NCAP)

SUBROUTINE AXTXT7 (CHAXIS, W1, STEP, LABARR, NARR)

Purpose

to draw a set of axis annotation labels and tick marks.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
W1 | REAL expression | Position for first label
STEP | REAL expression | Interval between labels
LABARR | STRING array | Set of labels
NARR | INTEGER expression | Number of labels in LABARR
NCAP | INTEGER expression | Maximum number of characters in any label

axis type Cartesian Polar Isometric Bars Water ViSualization
chaxis
xc | yc
Y | Y

rp | ap
Y | Y

xi | yi | zi
Y | Y | Y

nb | lb
Y | N

nw | lw
Y | Y

x3 | y3 | z3 | u
Y | Y | Y | N

Description

By default, when an axis is drawn it is subdivided and annotated at regular intervals using automatically generated labels. To draw an axis with user-defined labels, suppress the normal annotation by calling AXCLR before the axis is drawn then call AXTXT/AXTXT7 to draw alternative annotation and tick marks. LABARR(1) is positioned at W1, LABARR(2) is positioned at W1+STEP etc.

LABARR must be declared with elements large enough for the longest label in the set, eg. CHARACTER*9 LABARR(7) for a set of 7 labels of up to 9 characters each.

A fuller description of the values of CHAXIS is given in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Invalid axis type: XX)1
 (Inappropriate axis type: XX)2

See Also

AXGRID, AXCLR, AXIS7, AXLAB7, AXLBAN, AXLBJS, AXLBSL and AXSBTK.

Examples

Axis Tick Mark Labelling
Marker symbols
Circular chart
Stacked 3-D barchart
Reversing the direction of 3-D bars


BARCHT

This page uses frames, but your browser doesn't support them.


BARCHT

SUBROUTINE BARCHT (D2ARR, LABARR, NARR, NSETS, CAPN, CAPL)

Purpose

to draw a bar chart on the current picture.

Argument(s)

D2ARR | REAL 2-D array | Data values, D2ARR(NARR,NSETS)
LABARR | STRING array | Names of items in each data set
NARR | INTEGER expression | Number of elements in each data set and in LABARR
NSETS | INTEGER expression | Number of data sets
CAPN | STRING expression | Numeric axis caption
CAPL | STRING expression | Label axis caption

Description

BARCHT draws a bar chart on the current picture of data held in the two-dimensional array, D2ARR(NARR,NMAX), where NMAX is greater or equal to the number of data sets to be plotted (NSETS).

BARCHT draws numeric and label axes which can be configured using appropriate AX* subroutines with CHAXIS="NB" and "LB" respectively. By default, the bars are drawn vertically and, if NSETS>1, bars are clustered side-by-side to represent values from each data set; bars (or clusters of bars) occupy 80% of the space available and are centred within this space; the numeric scale is calculated to accommodate the bar chart exactly and both scales run in the natural direction of the corresponding axis. These default settings can be altered by BARTYP, BARFMT, BARRNG and BARDIR respectively.

BARCHT draws a bar chart on the current 2-D picture and must therefore be preceded by the new picture subroutine, NEWPIC.

Availability

Section 4, released version 2-11.

Diagnostics

  (BAR CHART OMITTED: INVALID DIMENSIONS)1

See Also

BARRNG, BARFMT, BARTYP, BARDIR, SHEDGE, SHKEYS and SQSHAD.

Examples

A simple bar chart
Alternative bar chart formats
Alternative types of bar chart
Bar chart
Bar chart and pie chart
Thickened lines


BARDIR

This page uses frames, but your browser doesn't support them.


BARDIR

SUBROUTINE BARDIR (NBTORF, LBTORF)

Purpose

to specify the directions of bar chart scales.

Argument(s)

NBTORF | LOGICAL expression | Whether to reverse numeric scale
LBTORF | LOGICAL expression | Whether to reverse labels scale

Description

By default, the scales on a bar chart are calculated to fit the data exactly and are configured such that scales go from a small value to a larger value. BARDIR can set any combination of scale directions for bar charts by indicating whether to reverse the numeric scale and/or the implicit label scale; the range of the numeric scale can be specified by BARRNG.

Availability

Section 4, released version 2-11.

Default

BARDIR(.FALSE.,.FALSE.) restores the default.

See Also

BARCHT and BARRNG.


BARFMT

This page uses frames, but your browser doesn't support them.


BARFMT

SUBROUTINE BARFMT (JCHAR, IVAL)

Purpose

to specify how bars in a bar chart occupy the space available.

Argument(s)

JCHAR | CHARACTER*1 | Justification of bars
IVAL | INTEGER expression | Percentage (1- 100%) of space available

JCHAR | Justification of bars
"P" | Preceding the space - left for vertical bars, bottom for horizontal bars
"C" | Centred within the space
"F" | Following the space - right for vertical bars, top for horizontal bars

Description

By default, bars (or clusters of bars) occupy 80% of the space available and are centred within this space. BARFMT specifies the size and justification of bars on a bar chart.

Availability

Section 4, released version 2-11.

Default

BARFMT("C",0) restores the default.

See Also

BARCHT.

Examples

Alternative bar chart formats
Bar chart
Thickened lines


BARRNG

This page uses frames, but your browser doesn't support them.


BARRNG

SUBROUTINE BARRNG (VMIN, VMAX)

Purpose

to specify the range of the numerical scale for bar charts.

Argument(s)

VMIN | REAL expression | Minimum scale value
VMAX | REAL expression | Maximum scale value

Description

By default, the numerical scale of bar charts is calculated to accommodate the data exactly. BARRNG specifies alternative range of scales (the direction of scales can be specified separately by BARDIR.)

If the specified scale can not accommodate the entire bar chart, part of the picture cannot be drawn. This contributes to the number of incomplete picture tasks and a diagnostic is issued at the end of the picture.

Availability

Section 4, released version 2-11.

Default

Calling BARRNG with VMAX less than or equal to VMIN restores the default. eg. BARRNG(0.0,0.0).

See Also

BARCHT and BARDIR.

Examples

Alternative bar chart formats
Bar chart
Thickened lines


BARTYP

This page uses frames, but your browser doesn't support them.


BARTYP

SUBROUTINE BARTYP (OCHAR, ITYPE)

Purpose

to specify the type of bar chart required.

Argument(s)

OCHAR | CHARACTER*1 | Orientation of bars
ITYPE | INTEGER expression | Type of bar chart

OCHAR | Orientation of bars
"V" | Vertical bars
"H" | Horizontal bars
ITYPE | Type of bar chart
1 | Clustered bars - data sets side-by-side
2 | Stacked bars - data sets accumulated on same bars
3 | Pyramid bars - data sets alternating

Description

By default, bar charts drawn using BARCHT have vertical bars which, if there is more than one data set, are clustered side-by-side. The type of bar chart drawn by BARCHT can be changed by a prior call of BARTYP.

Orientation can be either horizontal or vertical. If horizontal bars are drawn, the bars and their associated labels are ordered from the top to the bottom of the picture.

Availability

Section 4, released version 2-11.

Default

BARTYP("V",1) restores the default.

See Also

BARCHT.

Examples

Alternative types of bar chart
Bar chart and pie chart


BLNKKY

This page uses frames, but your browser doesn't support them.


BLNKKY

SUBROUTINE BLNKKY

Purpose

to add a blank entry in a key or caption area.

Argument(s)

None

Description

BLNKKY inserts a blank entry in the next empty space in the current key or caption area (defined by DEFKEY/DEFCAP or selected by RESNXT). All blank entries in a key/caption area are counted towards the total number of entries.

A similar effect can be achieved by increasing the interline spacing (see TEXTLF) or by using embedded sub-commands within text strings (see STRLV and STRCHS).

Availability

Section 1, released before version 2-5.

Diagnostics

  (Key/caption area full)2
 (No active key/caption area)2

See Also

BOTHK7, DEFCAP, DEFKEY, LINEK7, MARKK7, RESNXT, SHDEK7 and FILLK7.

Examples

Geographical text strings
Text in pictures - alternative character sets


BOTHKY

This page uses frames, but your browser doesn't support them.


BOTHKY

SUBROUTINE BOTHKY (LTYPE, MKTYPE, CAP, NCAP)

SUBROUTINE BOTHK7 (LTYPE, MKTYPE, CAP)

Purpose

to draw an annotated sample of a broken line pattern and marker symbol in a key.

Argument(s)

LTYPE | INTEGER expression | Type of broken line pattern
MKTYPE | INTEGER expression | Type of marker symbol
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

BOTHKY/BOTHK7 inserts a key to a broken line pattern (as used by the BRKN* subroutines) with a marker symbol (as used by MARK*) in the next empty space in the current key or caption area (defined by DEFKEY/DEFCAP or selected by RESNXT).

A sample of the broken line pattern, LTYPE, is drawn [1] on the left of the entry, with the marker symbol, MKTYPE, drawn [3] on the centre of the line; the caption, CAP, is drawn [2] alongside the sample. If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless

LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

REAL and INTEGER values can be converted to text strings using the conversion subroutines, KREAL and KNUMB respectively.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Caption truncated)2
 (Key/caption area full)2
 (No active key/caption area)2

See Also

ADDJST, BLNKKY, BUNLPR, DEFKEY, LINEK7, LINSET, MARKK7 and MKSET.

Examples

Multiple scales on an x-y plot
Bundled attributes


BOXCAP

This page uses frames, but your browser doesn't support them.


BOXCAP

SUBROUTINE BOXCAP (TORF)

Purpose

to specify whether boxes are to be drawn around caption areas.

Argument(s)

TORF LOGICAL expression Whether captions are to be boxed

Description

By default, caption areas defined by DEFCAP are not boxed. BOXCAP specifies whether or not each caption area is to be surrounded by a box.

The box is drawn [1] when the caption area is set up; when this occurs depends on the type of caption area defined by DEFCAP(ITYPE,...):

ITYPE | Box drawn
1 | when a new caption area is defined by DEFCAP
2 | when a new caption area is defined by DEFCAP
3 | whenever a new picture is started

Availability

Section 4, released before version 2-5.

Default

BOXCAP(.FALSE.) restores the default.

See Also

DEFCAP.

Examples

Alternative formats of text strings
Text in pictures - alternative character sets
The Greek alphabet


BOXGRP

This page uses frames, but your browser doesn't support them.


BOXGRP

SUBROUTINE BOXGRP (TORF)

Purpose

to specify whether boxes are to be drawn around groups of pictures.

Argument(s)

TORF LOGICAL expression Whether groups are to be boxed

Description

By default, a group of pictures is not boxed. BOXGRP specifies whether or not a rectangular box is to be drawn around each group of pictures.

The area surrounded by the box is the group of pictures as defined by GROUP including margins but excluding peripheries. If GROUP has not been called (or a 1* 1 group has been defined), the box surrounds a single picture and its margin.

The box is drawn [1] when the first picture on the SIMPLEPLOT page is started.

Availability

Section 4, released version 2-7.

Default

BOXGRP(.FALSE.) restores the default.

See Also

BOXPAG, BOXPIC and GROUP.


BOXKY

This page uses frames, but your browser doesn't support them.


BOXKY

SUBROUTINE BOXKY (TORF)

Purpose

to specify whether boxes are to be drawn around keys.

Argument(s)

TORF LOGICAL expression Whether keys are to be boxed

Description

By default, a box is drawn around all key areas. BOXKY specifies whether or not each key area is to be boxed.

The box is drawn [1] when the key is set up; when this occurs depends on the type of key defined by DEFKEY(ITYPE, ...):

ITYPE | Box drawn
1 | when a new key is defined by DEFKEY
2 | when a new key is defined by DEFKEY
3 | whenever a new picture is started
MPK7H, MPK7V and SHKEYS correspond to ITYPE=2.

Availability

Section 4, released before version 2-5.

Default

BOXKY(.TRUE.) restores the default.

See Also

DEFKEY, MPK7H, MPK7V and SHKEYS.

Examples

Thickened lines


BOXPAG

This page uses frames, but your browser doesn't support them.


BOXPAG

SUBROUTINE BOXPAG (TORF)

Purpose

to specify whether boxes are to be drawn around the boundaries of pages.

Argument(s)

TORF LOGICAL expression Whether pages are to be boxed

Description

By default, the boundary of the SIMPLEPLOT page is not drawn. BOXPAG specifies whether or not page boundaries are to be drawn around each SIMPLEPLOT page.

The box is drawn [1] when the SIMPLEPLOT page is started.

Availability

Section 1, released before version 2-5.

Default

BOXPAG(.FALSE.) restores the default.

See Also

BOXGRP, BOXPIC and PAGE.

Examples

Axis Tick Mark Labelling


BOXPG2

This page uses frames, but your browser doesn't support them.


BOXPG2

SUBROUTINE BOXPG2 (ITYPE)

Purpose

to specify how the boundaries of pages are to be drawn.

Argument(s)

ITYPE INTEGER expression Type of boundary (see below)

ITYPE | Boundary type
0 | No drawn boundary (Default)
1 | Simple box or parallel line boundary
2 | Alternative box with logo

Description

By default, the boundary of the SIMPLEPLOT page is not drawn. BOXPG2 specifies what type of page boundary is required on each SIMPLEPLOT page.

The box [1], and optionally a logo [2] (with BOXPG2(2)), are drawn when the SIMPLEPLOT page is started.

Availability

Section 1, released version 2-14.

Default

BOXPG2(0) restores the default.

Diagnostics

  (Failed to read LOGO file)1

See Also

BOXGRP, BOXPIC and PAGE.

Examples

Axis Tick Mark Labelling


BOXPIC

This page uses frames, but your browser doesn't support them.


BOXPIC

SUBROUTINE BOXPIC (TORF)

Purpose

to specify whether boxes are to be drawn around individual pictures.

Argument(s)

TORF LOGICAL expression Whether pictures are to be boxed

Description

By default, pictures are not boxed. BOXPIC specifies whether or not a rectangular box is to be drawn around every picture (excluding margin).

The box is drawn [1] when a new picture is started.

If scales are extended to provide similar linear scales in x and y (see EQSCAL), the box is drawn around the full extent of the scales at the picture limits. If a box is required to fit the requested range of scales, and the axes drawn to annotate such scales, DRAWBX can be used to draw a box on the current picture.

Availability

Section 4, released version 2-7.

Default

BOXPIC(.FALSE.) restores the default.

See Also

BOXGRP, BOXPAG, DRAWBX and PERIM.

Examples

BUSS's Collection Of Markers
Underlying Cartesian scales
Bar chart


BREAK

This page uses frames, but your browser doesn't support them.


BREAK

SUBROUTINE BREAK

Purpose

to force a break between separate sequences of point-by-point plotting.

Argument(s)

None

Description

A sequence of lines drawn by BRKNPT/JOINPT is interrupted when any other plotting subroutine is called, and the next call of BRKNPT/JOINPT is treated as a first call again. BREAK explicitly interrupts the sequence without performing any other function. BREAK does no drawing.

MARKPT (or CP7PT/CAPPT) includes the equivalent of BRKNPT/JOINPT after drawing the symbol (and text), therefore BREAK should be called between MARKPT and a succeeding BRKNPT/JOINPT if a line is not required joining symbol and point.

Availability

Section 1, released before version 2-5.

See Also

BRKNPT, CP7PT, JOINPT and MARKPT.

Examples

Isometric drawing
Hedgehog plots
Straight lines from point to point
Bundled attributes


BRKNAR

This page uses frames, but your browser doesn't support them.


BRKNAR

SUBROUTINE BRKNAR (X1, DX, DARR, NARR, LTYPE)

Purpose

to draw a curve from an array of values, using a specified broken line pattern.

Argument(s)

X1 | REAL expression | Value of independent variable for plotting DARR(1)
DX | REAL expression | Independent variable interval between function values
DARR | REAL array | Function values for plotting
NARR | INTEGER expression | Number of points
LTYPE | INTEGER expression | Type of broken line pattern

Description

Using broken line pattern LTYPE, BRKNAR draws [1] the curve which connects the following points:
  (X1,DARR(1)), (X1+DX,DARR(2)),...

 (X1+(NARR-1)*DX,DARR(NARR))
These points represent a set of values from a single array where the array elements hold function values yi=f(xi) and xi=x1+(i-1)dx. The type of curve depends on CVTYPE.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-11.

Diagnostics

  (Data curve exceeds scales)2

See Also

BRKNCV, BUNLPR, CVTYPE, CLIPLV, MARKAR, RIDDLE and SHDEAR.

Examples

A simple x-y plot
A simple polar plot


BRKNBX

This page uses frames, but your browser doesn't support them.


BRKNBX

SUBROUTINE BRKNBX (X1, Y1, X2, Y2, LTYPE)

Purpose

to draw a box, using a specified broken line pattern.

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of opposite corners of the box, specified in units of the plotting scales
LTYPE | INTEGER expression | Type of broken line pattern

Description

Using broken line pattern LTYPE, BRKNBX draws [1] the box extending from x1 to x2 by y1 to y2. If x1=x2 or y1=y2, then nothing is drawn.

The points (x1, y1) and (x2, y2) are specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY. If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released version 2-8.

Diagnostics

  (**x1,y1,x2,y2**)2
 (Null box, nothing drawn)2

See Also

BUNLPR, CLIPLV and SHDEBX.

Examples

Extra labelling on contour maps
Labelling contour curves
Boxes and arrows


BRKNCL

This page uses frames, but your browser doesn't support them.


BRKNCL

SUBROUTINE BRKNCL (XCENT, YCENT, RADIUS, LTYPE)

Purpose

to draw a circular function with specified centre, radius and broken line pattern.

Argument(s)

XCENT,YCENT | REAL expressions | Coordinates of the centre of the circle in units of the plotting scales
RADIUS | REAL expression | Circle radius in plotting scale units
LTYPE | INTEGER expression | Type of broken line pattern

Description

Using broken line pattern, LTYPE, BRKNCL draws [1] the circle (or the part of the circle which lies within the range of the plotting scales) centred at point (xcent,ycent), with radius RADIUS. The resulting shape is only geometrically circular when both scales are equal and linear.

The centre point and the radius are both specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless

LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

By default, all drawing is restricted by the limits of the picture scales; if it exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Circle exceeds scales)2

See Also

BUNLPR, CLIPLV, EQSCAL and SHDECL.

Examples

Circles And Boxes With Broken Lines
Circles
Boxes and arrows


BRKNCV

This page uses frames, but your browser doesn't support them.


BRKNCV

SUBROUTINE BRKNCV (XARR, YARR, NARR, LTYPE)

Purpose

to draw a curve from a set of coordinates, using a specified broken line pattern.

Argument(s)

XARR,YARR | REAL arrays | Coordinates of points, in units of the plotting scales
NARR | INTEGER expression | Number of points
LTYPE | INTEGER expression | Type of broken line pattern

Description

Using broken line pattern LTYPE, BRKNCV draws [1] the curve corresponding to the following points:
  (XARR(1), YARR(1)), (XARR(2), YARR(2)), ...

 (XARR(NARR), YARR(NARR))
A closed curve can be obtained by using data in which XARR(NARR)=XARR(1) and YARR(NARR)=YARR(1). The type of curve drawn depends on CVTYPE.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless

LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Data curve exceeds scales)2

See Also

BUNLPR, CLIPLV, CVTYPE, MARKCV, RIDDLE and SHDECV.

Examples

Simple plotting
Marking individual points
Curve fitting by regression


BRKNFN

This page uses frames, but your browser doesn't support them.


BRKNFN

SUBROUTINE BRKNFN (FUNX, LTYPE)

Purpose

to draw a curve of a user-defined function, y=f(x), using the specified linestyle.

Argument(s)

FUNX | function name | REAL function with one REAL argument, also declared in an EXTERNAL statement
LTYPE | INTEGER expression | Type of broken line pattern

Description

BRKNFN evaluates and draws [1] the curve of the specified function, FUNX, using the specified broken line pattern, LTYPE.

With Cartesian coordinates, the specified function, FUNX, must calculate y given x, and with polar coordinates FUNX must calculate r given theta. The intervals of the independent variable over which BRKNFN evaluates the function, vary with the curvature of the curve.

Care must be taken in the programming of FUNX to ensure that it is continuous and cannot fail for any arguments within the plotting range. Discontinuities may cause SIMPLEPLOT to loop indefinitely.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless

LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Function curve exceeds scales)2

See Also

BUNLPR, CLIPLV, FNRNGE, POLY, RIDDLE and SHDEFN.

Examples

Curves from user-defined functions
Curve fitting by regression


BRKNPR

This page uses frames, but your browser doesn't support them.


BRKNPR

SUBROUTINE BRKNPR (SUBR, T1, T2, LTYPE)

Purpose

to draw the user-defined parametric function using a specified broken line pattern.

Argument(s)

SUBR | subroutine name | subroutine with three arguments, (REAL T, REAL VARX, REAL VARY), also declared in an EXTERNAL statement
T1,T2 | REAL expressions | Values of the function parameter between which curve is to be drawn
LTYPE | INTEGER expression | Type of broken line pattern

Description

BRKNPR evaluates and draws [1] the curve of a user-defined parametric function using the specified broken line pattern, LTYPE.

The parametric function is specified in subroutine SUBR; SUBR must have three arguments: REAL T, the value of the function argument, and VARX and VARY, to receive REAL coordinates corresponding to T. SUBR is called by BRKNPR with values of T ranging from T1 to T2.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless

LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-9.

Diagnostics

  (Parametric function exceeds scales)2
 (No. of incomplete picture tasks=n)1

See Also

BUNLPR, CLIPLV, DRAWPR, RIDDLE and SHDEPR.


BRKNPT

This page uses frames, but your browser doesn't support them.


BRKNPT

SUBROUTINE BRKNPT (X, Y, LTYPE)

Purpose

to draw a broken line to the point (x,y).

Argument(s)

X,Y | REAL expressions | Coordinates of a point specified in units of the plotting scale
LTYPE | INTEGER expression | Type of broken line pattern

Description

The first call of BRKNPT executes a move to the point (x,y) without drawing anything. Subsequent calls of BRKNPT draw [1] a straight line from the previous point to the specified point, using broken line pattern LTYPE. The line is straight even on non-linear scales and polar charts.

A sequence of lines drawn by BRKNPT/JOINPT is interrupted when any other plotting subroutine is called, and the next call of BRKNPT/JOINPT is treated as a first call again. BREAK explicitly interrupts the sequence without performing any other function. MARKPT (or CP7PT/CAPPT) draws a symbol (and a caption) and then executes the equivalent to a first call of BRKNPT/JOINPT in order to move to the centre of the symbol.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

The point (x,y) is specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released version 2-9.

Diagnostics

  (**x,y**)2

See Also

BREAK, BUNLPR, CLIPLV, CP7PT, JOINPT and MARKPT.

Examples

Isometric drawing
Straight lines from point to point


BUNLPR

This page uses frames, but your browser doesn't support them.


BUNLPR

SUBROUTINE BUNLPR (CHATTR)

Purpose

to specify the order of priority of bundled line-drawing attributes.

Argument(s)

CHATTR | CHARACTER*3 | Attributes to be bundled
CHATTR | Attribute | Cyclic order
"C" | Colour | 1, 2, 3, ... NPENS
"S" | Style | 0, -1, -2 ... , 1, 2 ...
"T" | Thickness | 1, 2, 3, 4

Description

By default, SIMPLEPLOT associates only one attribute, colour, with pen numbers. BUNLPR may be called to specify which attributes are to be combined to distinguish pens used for line drawing; text, marker symbols and shading are not affected.

CHATTR can consist of the initials (upper- or lower-case) of one, two or three attributes in their order of priority.

The total number of attribute combinations in the current bundle is device dependent; the effect of selecting a pen number beyond the total is undefined.

Line Styles specified explicitly as arguments (eg.. LTYPE) override the bundled Style without affecting the other bundled attributes. The bundled Style may be specified by LTYPE=-999.

Availability

Section 1, released version 2-13.

Default

BUNLPR("C") restores the default.

See Also

PEN, SETPNS, SQPEN, THCKMG and WFPNS.

Examples

Distinguishing between data levels on a waterfall chart
Sequences on contour maps
Bundled attributes
Waterfall charts and pen usage
Waterfall charts drawn curve-by-curve
Fine control of waterfall charts


CAPLB

This page uses frames, but your browser doesn't support them.


CAPLB

SUBROUTINE CAPLB (X, Y, CAP, NCAP)

SUBROUTINE CP7LB (X, Y, CAP)

Purpose

to draw a caption at (x,y).

Argument(s)

X,Y | REAL expressions | Coordinates of a point, specified in units of the plotting scales
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

CP7LB/CAPLB draws [2] the caption, CAP, at the point (x,y).

The point (x,y) is specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine KXYXY. REAL and INTEGER values can be converted to text strings using the conversion subroutines KREAL and KNUMB respectively.

By default, if the caption is too long to fit within the SIMPLEPLOT page, it is clipped such that only whole characters appear; if coordinates exceed the limits of the SIMPLEPLOT page, the caption is omitted. Both these occurrences contribute to the number of incomplete page tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-6.

Diagnostics

  (Text clipped)2

See Also

CLIPLV, CP7PT, CP7XC, CP7YC, LABJST, LABANG, KNUMB and KREAL.

Examples

Conversion on waterfall charts
Underlying Cartesian scales
Controlling the graticule
Controlling the scales on waterfall charts


CAPLBM

This page uses frames, but your browser doesn't support them.


CAPLBM

SUBROUTINE CAPLBM (X, Y, MKTYPE, CAP, NCAP)

SUBROUTINE CP7LBM (X, Y, MKTYPE, CAP)

Purpose

to draw a marker symbol at (x,y) and a label with controllable angle and justification.

Argument(s)

X,Y | REAL expressions | Coordinates of a point, specified in units of the plotting scales
MKTYPE | INTEGER expression | Type of marker symbol
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

CP7LBM/CAPLBM draws [3] the symbol, MKTYPE, centred at point (x,y), draws [2] the caption, CAP, next to the symbol.

After drawing the specified symbol and text, the pen is left at the centre of the symbol to allow a line to be drawn from the symbol to another point by a succeeding call of BRKNPT/JOINPT. BREAK should be called if a line is not required to join symbol and point.

The point (x,y) is specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine KXYXY. REAL and INTEGER values can be converted to text strings using the conversion subroutines KREAL and KNUMB respectively.

By default, if the caption is too long to fit within the SIMPLEPLOT page, it is clipped such that only whole characters appear; if coordinates exceed the limits of the SIMPLEPLOT page, the caption is omitted. Both these occurrences contribute to the number of incomplete page tasks. An alternative clipping strategy can be specified using CLIPLV.

CP7LBM/CAPLBM interacts with LABANG and LABJST. For CP7LBM/CAPLBM, LABJST("D","D") is equivalent to LABJST("B","P").

Availability

Section 4, released version 2-15.

Diagnostics

  (Text clipped)2

See Also

CLIPLV, CP7PT, CP7XC, CP7YC, LABJST, LABANG, KNUMB and KREAL.

Examples

Labelling Points


CAPPT

This page uses frames, but your browser doesn't support them.


CAPPT

SUBROUTINE CAPPT (X, Y, MKTYPE, CAP, NCAP)

SUBROUTINE CP7PT (X, Y, MKTYPE, CAP)

Purpose

to draw a marker symbol at (x,y) with a caption.

Argument(s)

X,Y | REAL expressions | Coordinates of a point specified in units of the plotting scales
MKTYPE | INTEGER expression | Type of marker symbol
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

CP7PT/CAPPT draws [3] the symbol, MKTYPE, centred at point (x,y) and draws [2] the caption, CAP, to the right of the symbol.

After drawing the specified symbol and text, the pen is left at the centre of the symbol to allow a line to be drawn from the symbol to another point by a succeeding call of BRKNPT/JOINPT. BREAK should be called if a line is not required to join symbol and point.

The point (x,y) is specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine KXYXY. REAL and INTEGER values can be converted to text strings using the conversion subroutines KREAL and KNUMB respectively.

By default, if the caption is too long to fit within the SIMPLEPLOT page, it is clipped such that only whole characters appear; if coordinates exceed the limits of the SIMPLEPLOT page, the caption is omitted. Both these occurrences contribute to the number of incomplete page tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Symbol clipped)2
 (Symbol spills over boundary)2
 (Text clipped)2

See Also

BREAK, CLIPLV, CP7LB, MARKPT, MKMASK, MKSIZE, KREAL and KNUMB.

Examples

Contour maps of ungridded data
Drawing a cross section
Finding the height of a point
Ungridded Data
Line styles and labels
Clipping against a rectangle
Bearing and distance
Shortest distance between two points
Marking individual points


CAPXC

This page uses frames, but your browser doesn't support them.


CAPXC

SUBROUTINE CAPXC (X1, X2, Y, CAP, NCAP)

SUBROUTINE CP7XC (X1, X2, Y, CAP)

Purpose

to draw a horizontally centred caption.

Argument(s)

X1,X2 | REAL expressions | x coordinates between which the label is centred
Y | REAL expression | Vertical position of the caption
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

CP7XC/CAPXC draws [2] the caption, CAP, centred between x1 and x2 at vertical position y.

All coordinates are specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine KXYXY. REAL and INTEGER values can be converted to text strings using the conversion subroutines KREAL and KNUMB respectively.

By, default, if the caption is too long to fit within the SIMPLEPLOT page, it is clipped such that only whole characters appear; if coordinates exceed the limits of the SIMPLEPLOT page, the caption is omitted. Both these occurrences contribute to the number of incomplete page tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-6.

Diagnostics

  (Text clipped)2

See Also

CLIPLV, CP7LB, CP7PT, CP7YC, LABJST, LABANG, KNUMB and KREAL.


CAPYC

This page uses frames, but your browser doesn't support them.


CAPYC

SUBROUTINE CAPYC (Y1, Y2, X, CAP, NCAP)

SUBROUTINE CP7YC (Y1, Y2, X, CAP)

Purpose

to draw a vertically centred caption.

Argument(s)

Y1,Y2 | REAL expressions | y coordinates, between which the label is centred
X | REAL expression | Horizontal position of the label
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

CP7YC/CAPYC draws [2] the caption, CAP, centred between y1 and y2 at horizontal position x.

All coordinates are specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine KXYXY. REAL and INTEGER values can be converted to text strings using the conversion subroutines KREAL and KNUMB respectively.

By default, if the caption is too long to fit within the SIMPLEPLOT page, it is clipped such that only whole characters appear; if coordinates exceed the limits of the SIMPLEPLOT page, the caption is omitted. Both these occurrences contribute to the number of incomplete page tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-6.

Diagnostics

  (Text clipped)2

See Also

CLIPLV, CP7LB, CP7PT, CP7XC, LABJST, LABANG, KNUMB and KREAL.


CHDESC

This page uses frames, but your browser doesn't support them.


CHDESC

SUBROUTINE CHDESC (IHGHT, ITAIL, ITHCK, ITILT)

Purpose

to specify characteristics of adjustable software characters.

Argument(s)

IHGHT | INTEGER expression | Height of characters relative to width
ITAIL | INTEGER expression | Size of serifs
ITHCK | INTEGER expression | Character line thickness
ITILT | INTEGER expression | Slope of characters

 | -1 | 0 (default) | 1
IHGHT | Squat characters | Normal height | Tall characters
ITAIL | No serifs | Small serifs | Large serifs
ITHCK | Single line | Lightly thickened | Thick characters
 | characters | characters |
ITILT | Backwards slope | Upright | Forwards slope

Description

CHDESC specifies a preferred combination of characteristics of the adjustable software characters selected by CHSET with ISET=51 or 52. The relationships between argument values and the characteristics are summarized in the table below.

CHDESC has no effect on hardware or other software characters (eg. Hershey fonts).

Availability

Section 4, released before version 2-5.

Default

CHDESC(0,0,0,0) restores the default.

See Also

CHSET.


CHMASK

This page uses frames, but your browser doesn't support them.


CHMASK

SUBROUTINE CHMASK (TORF)

Purpose

to specify whether text is to be masked.

Argument(s)

TORF LOGICAL expression Whether text is to be masked

Description

By default, SIMPLEPLOT draws anywhere within the page unless specific areas have been reserved for specific activities. CHMASK specifies that the area immediately around text is to be masked from any further drawing.

After a call of CHMASK(.TRUE.) text is masked; this means that the text itself looks no different from unmasked text, but any subsequent drawing over the text is omitted as it crosses the text.

Masking of text is currently limited to horizontal and vertical text only.

The limit to the number of masked areas which can be used for individual symbols and text strings is 50. When this limit is reached a diagnostic is issued and subsequent masked areas take the place of the oldest areas and overdrawing of these areas may occur.

Availability

Section 4, released version 2-9.

Diagnostics

  (Maximum no. of masked areas reached)1

Default

CHMASK(.FALSE.) restores the default.

See Also

MKMASK.

Examples

Contour maps of ungridded data
Extra labelling on contour maps
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Drawing axes
Multi-line titles and polynomials
Circular chart


CHSET

This page uses frames, but your browser doesn't support them.


CHSET

SUBROUTINE CHSET (ISET)

Purpose

to specify an alternative source of character sets or fonts.

Argument(s)

ISET INTEGER expression Character set source

ISET | Font source
<=-1 | Alternative hardware/firmware sets (if available)
0 | Hardware/firmware font (if available)
1 | Simple device independent software font
2 | Hershey Cartographic
3 | Hershey Simplex Roman
4 | Hershey Duplex Roman
5 | Hershey Complex Roman
6 | Hershey Small Complex Roman
7 | Hershey Triplex Roman
8 | Hershey Complex Italic
9 | Hershey Small Complex Italic
10 | Hershey Triplex Italic
11 | Hershey Simplex Script
12 | Hershey Complex Script
13 | Hershey Simplex Greek
14 | Hershey Complex Greek
15 | Hershey Small Complex Greek
16 | Hershey Complex Cyrillic
17 | Hershey Gothic English
18 | Hershey Gothic German
19 | Hershey Gothic Italian
20 | Solid font (SIMPLEPLOT-PLUS)
21 | Outline font (SIMPLEPLOT-PLUS)
22 | Mathematical symbols (SIMPLEPLOT-PLUS)
23 | Large mathematical symbols (SIMPLEPLOT-PLUS)
51 | Adjustable ANSI characters (Section 4)
52 | Adjustable UK characters (Section 4)

Description

For efficiency and clarity, SIMPLEPLOT is set up to draw text on pictures using characters from device hardware or firmware wherever possible. CHSET selects an alternative character set (or font). The Hershey fonts are only available with SIMPLEPLOT-PLUS.

Availability

Section 1, released version 2-8.

Default

CHSET(0) restores the default.

See Also

FFSET, LINSET, MKSET and SHSET.

Examples

Geographical text strings
Alternative formats of text strings
Drawing contours
Text in pictures - alternative character sets
The Greek alphabet


CHUNDL

This page uses frames, but your browser doesn't support them.


CHUNDL

SUBROUTINE CHUNDL (NLINES)

Purpose

to specify the number of times text is underlined.

Argument(s)

NLINES INTEGER expression Number of lines under text (0- 3)

Description

After a call of CHUNDL, every time text is drawn, NLINES lines are drawn underneath. CHUNDL is currently limited to horizontal text.

Single underlining of text can also be achieved by using embedded sub-commands within the text string (see STRCHS and STRLV).

Availability

Section 4, released version 2-9.

Default

CHUNDL(0) restores the default.

See Also

STRCHS and STRLV.

Examples

Extra Axis Labels


CLIPLV

This page uses frames, but your browser doesn't support them.


CLIPLV

SUBROUTINE CLIPLV (ILEVEL)

Purpose

to specify the clipping region for all plotting.

Argument(s)

ILEVEL INTEGER expression Level of clipping

ILEVEL | Clipping region
0 | Default (see above)
1 | Picture limits
2 | SIMPLEPLOT page limits

Description

By default, plotting is clipped as follows:
  • Text (including axis annotation and tick marks) is clipped to limits of SIMPLEPLOT page;
  • Arrows are clipped to picture limits;
  • Boxes are clipped to picture limits;
  • Plotting of lines and shaded areas is clipped to picture limits;
  • Marker symbols are plotted only when the point on which symbol is centred is on, or inside, the picture limits; in a similar way, range bars can spill over the picture limits.
CLIPLV specifies the all plotting is to be clipped to the specified limits.

Availability

Section plus, released version 2-12.

Diagnostics

The following diagnostics may be produced by graphics subroutines that draw text and/or marker symbols:
  (No. of incomplete page tasks=n)1
 (Symbol clipped)2
 (Text clipped)2

Default

CLIPLV(0) restores the default.


Contents

This page uses frames, but your browser doesn't support them.


Contents

Preface |
Subroutines | Alphabetic List of Specifications
Examples | SIMPLEPLOT Example Programs
Appendix M | Diagnostic Messages
Appendix S | Summaries of Subroutines by Category
Appendix T | Tables


COORDS

This page uses frames, but your browser doesn't support them.


COORDS

SUBROUTINE COORDS (IUNITS)

Purpose

to change the interpretation of coordinates.

Argument(s)

IUNITS INTEGER expression Type of units

IUNITS | Coordinate interpretation
0 | Cartesian (x,y)
1 | polar, f(r,theta), theta in degrees
2 | polar, f(r,theta), theta in radians
3 | polar - user-defined angular scale (see POLRNG)

Description

COORDS specifies coordinate interpretation as Cartesian, polar (in degrees) or polar (in radians). This interpretation remains in place until reset by COORDS or EQSCAL.

If EQSCAL has not been called, COORDS controls the type of the next new picture started by NEWPIC or AXES7. If EQSCAL is active, each new picture is started with the units specified by EQSCAL regardless of any call of COORDS; once a picture has been started, COORDS changes coordinate interpretation.

EQSCAL overrides COORDS but COORDS only modifies EQSCAL (saved scale ranges are converted).

Availability

Section 1, released version 2-12.

Default

The default can be restored by COORDS(-1).

See Also

AXES7, EQSCAL, NEWPIC, POLAR7 and POLRNG.

Examples

A part-cycle polar plot
Boxes and arrows
Drawing axes


CTBRKN

This page uses frames, but your browser doesn't support them.


CTBRKN

SUBROUTINE CTBRKN (LTYPE)

Purpose

to specify the broken line pattern used for contours and surface sections.

Argument(s)

LTYPE INTEGER expression Type of broken line pattern

Description

Individual contour curves and surface sections are drawn with the bundled attributes of the current pen (by default, this is normally a solid line); CTBRKN selects an alternative broken line pattern, LTYPE.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless

LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

CTBRKN controls the line pattern used by *CNTS, *CONT, *CUT, ZEDGE, ZZEDGE, ZELEM, ZELEMS and ZZELMS. CTBRKN has no effect on the subroutines for 2-D charts and graphs.

Availability

Section 2, released before version 2-5.

Default

CTBRKN(-999) restores the default.

See Also

BUNLPR, LINSET and SQBRKN.

Examples

Contour maps of ungridded data


CTCURV

This page uses frames, but your browser doesn't support them.


CTCURV

SUBROUTINE CTCURV (ITYPE)

Purpose

to specify the curve type used for drawing contours.

Argument(s)

ITYPE INTEGER expression Method of curve drawing

ITYPE | Curve type
1 | Tight fitting smooth curve
2 | Looser fitting smooth curve
3 | Straight lines from point to point

Description

Contour curves are drawn by joining interpolated points with some sort of curve; CTCURV specifies the method which is to be used for drawing contour curves.

The three types correspond exactly to the first three options of CVTYPE (used to control 2-D curve drawing).

Contours which change rapidly may not be suitable for loose fitting curves (ITYPE=2) because the curvature assigned by the curve drawing may produce intersections of contour curves.

CTCURV controls the curve type used for all subroutines related to contour pictures (*CNTS, *CONT and *CUT). CTCURV has no effect on shaded contours nor on the subroutines for charts and graphs.

Availability

Section 2, released before version 2-5.

Default

CTCURV(1) restores the default.

See Also

CVTYPE and SFMESH.


CTHOLD

This page uses frames, but your browser doesn't support them.


CTHOLD

SUBROUTINE CTHOLD (ICODE)

Purpose

to specify whether coordinates of internally generated curves are to be saved.

Argument(s)

ICODE | INTEGER expression | Behaviour of subsequent curve drawing
ICODE | Graphics output | Coordinates of contour
1 | Yes | Forgotten (default)
2 | No | Stored
3 | Yes | Stored

Description

By default, the contour drawing subroutines (*CONT) plot the curves corresponding to a single contour level and the coordinates of these curves are forgotten. CTHOLD specifies that the coordinates are remembered and stored within SIMPLEPLOT for subsequent inquiry by QCURVE.

The coordinates of other curves are also remembered:

  • Cross-sectional curves drawn by *CUT,
  • Element boundaries drawn by ZZELMS and ZELEMS, and
  • Ungridded data boundaries drawn by ZZEDGE and ZEDGE.

Availability

Section plus, released version 2-13.

Default

CTHOLD(1) restores the default.

See Also

*CONT, *CUT, QCURVE, ZEDGE, ZELEMS, ZZEDGE and ZZELMS.

Examples

Labelling contour curves
Storing and retrieving curve coordinates


CTLABS

This page uses frames, but your browser doesn't support them.


CTLABS

SUBROUTINE CTLABS (IFREQ)

Purpose

to specify the frequency of labels included with contour curves.

Argument(s)

IFREQ INTEGER expression Frequency of labels

Description

By default, contour curves are not labelled. CTLABS specifies the frequency at which labels are to be included.

After a call of CTLABS(IFREQ), the z value associated with each contour curve is drawn near the curve when a sequence of IFREQ or more points is joined in one operation.

For more frequent labelling, reduce IFREQ and for less frequent labelling, increase IFREQ; the exception to this rule is that a frequency of 0 results in no labels at all.

A call of CTLABS(10) is equivalent to a call of CTNUMB(.TRUE.) and a call of CTLABS(0) is equivalent to CTNUMB(.FALSE.).

Availability

Section 2, released version 2-6.

Default

CTLABS(0) restores the default.

See Also

CTNUMB and SQZLAB.

Examples

Extra labelling on contour maps
Sequences on contour maps
Drawing a cross section


CTNUMB

This page uses frames, but your browser doesn't support them.


CTNUMB

SUBROUTINE CTNUMB (TORF)

Purpose

to specify whether contour curves are to be labelled.

Argument(s)

TORF LOGICAL expression Whether labelling is required

Description

By default, contour curves are not labelled. CTNUMB specifies whether or not contours are to be labelled.

After a call of CTNUMB(.TRUE.), the z value associated with each contour curve is drawn near the curve when a sequence of 10 or more points is joined in one operation.

A call of CTNUMB(.TRUE.) is equivalent to a call of CTLABS(10) and a call of CTNUMB(.FALSE.) is equivalent to CTLABS(0).

Availability

Section 2, released before version 2-5.

Default

CTNUMB(.FALSE.) restores the default.

See Also

CTLABS and SQZLAB.

Examples

Contouring on a projected region


CVLBJS

This page uses frames, but your browser doesn't support them.


CVLBJS

SUBROUTINE CVLBJS (VJUST, HJUST)

Purpose

to specify the justification of the label drawn on a labelled curve.

Argument(s)

VJUST | CHARACTER*1 | Vertical justification of label
HJUST | CHARACTER*1 | Horizontal justification of label

VJUST | Vertical justification
"D" | Default
"B" | Bottom of the letters level with the curve
"C" | Centre of the letters level with the curve (default)
"T" | Top of the letters level with the curve
HJUST | Horizontal justification
"D" | Default
"C" | Label is centred on the reference point
"L" | Label starts at the reference point (default)
"R" | Label ends at the reference point

Description

By default, curves drawn by LABCV/LABCV7 are vertically centred on the curve, and left-justified relative to the reference point for the curve (see CVLBPS). CVLBJS specifies an alternative justification of the label.

VJUST and HJUST are similar to the arguments of LABJST.

If either ordinate of the reference point is equal to the current no-data value, the label is justified against the next valid point. If horizontal justification is "L"eft or "C"entre, the next point is to the right of the reference point; if justification is "R"ight, the next point is to the left of the reference point.

Availability

Section 4, released version 2-13.

Default

CVLBJS("D","D") restores the default.

See Also

CVLBPS, LABCV7 and LIMIDX.

Examples

Labelling contour curves
Labelled curves
Storing and retrieving curve coordinates


CVLBPS

This page uses frames, but your browser doesn't support them.


CVLBPS

SUBROUTINE CVLBPS (IPOS)

Purpose

to specify the reference point for the label drawn on a labelled curve.

Argument(s)

IPOS INTEGER expression Position of label, given as an index of data arrays

Description

By default, curves drawn by LABCV/LABCV7 are positioned relative to the mid-point of the curve. CVLBPS specifies an alternative reference point for the label.

Labels are drawn relative to the point (XARR(IPOS),YARR(IPOS)), where XARR and YARR are the parallel arrays of coordinates which are passed as arguments to LABCV7. Labels can be drawn relative to the highest or lowest point on the curve by setting IPOS to a value evaluated using LIMIDX.

If either XARR(IPOS) or YARR(IPOS) is equal to the current no-data value, the label is justified against the next valid point. If horizontal justification is "L"eft or "C"entre, the next point is IPOS+1; if justification is "R"ight, the next point is IPOS-1.

If there are no valid points between IPOS and the end of the curve, the label is omitted.

If IPOS is greater than NARR (the number of points in XARR and YARR) or less than 1, the default is restored.

Availability

Section 4, released version 2-13.

Default

CVLBPS(0) restores the default.

See Also

CVLBJS, LABCV7 and LIMIDX.

Examples

Labelled curves
Storing and retrieving curve coordinates


CVTYPE

This page uses frames, but your browser doesn't support them.


CVTYPE

CVLBPS

Specifications

DDDATA

SUBROUTINE CVTYPE (ITYPE)

Purpose

to specify the type of curve to be drawn on 2-D graphs.

Argument(s)

ITYPE

INTEGER expression

Method for curve construction

ITYPE | Curve type
1 | A tight fitting smooth curve through every data point, which is confined between the same limits as the data. Sudden changes in the data result in sharp corners in the curve. A Cartesian curve drawn by this method is not invariant under rotation
2 | A looser fitting smooth curve through every data point, which will probably extend higher or lower than the data at turning points, but should not have sharp corners; a Cartesian curve drawn by this method is invariant under rotation
3 | Straight lines from point to point through the data, even on non-linear scales and polar charts
4 | Linear regression *
5 | Quadratic regression *
* If ITYPE=4 or 5, the curve drawn covers the range of the x scale defined by FNRNGE.

Description

By default, the 2-D composite graph drawing subroutines (eg. BRKNCV, DRAWAR, SHDEC2) draw curves using a tight fitting curve to interpolate between the data points. CVTYPE specifies an alternative methods of curve fitting.

CVTYPE has no effect on surface pictures, contour maps or cross-sections (see CTCURV).

Availability

Section 1, released before version 2-5.

Default

CVTYPE(1) restores the default.

See Also

CTCURV, FNRNGE, POLOUT and POLY.

Examples

Curve fitting by regression
Multiple scales on an x-y plot
Circular chart


DEFCAP

This page uses frames, but your browser doesn't support them.


DEFCAP

SUBROUTINE DEFCAP (ITYPE, VCHAR, HCHAR, NROWS, NCOLMS)

Purpose

to define an area for captions.

Argument(s)

ITYPE | INTEGER expression | Type of reservation
VCHAR | CHARACTER*1 | Vertical position of area
HCHAR | CHARACTER*1 | Horizontal position of area
NROWS | INTEGER expression | Number of lines in area
NCOLMS | INTEGER expression | Maximum number of characters in any line of a caption

Description

DEFCAP defines an area for captions which is large enough for NROWS lines of text containing NCOLMS characters; the size is calculated using the nominal text width of the current font.

VCHAR and HCHAR are single characters representing the initial letters of vertical and horizontal positions. These determine the position of the area and also whether it is associated with a picture or the SIMPLEPLOT page; this in turn effects the limits of the area, the size of the text and therefore the size of the area.

The possible interpretations of VCHAR, HCHAR and ITYPE are listed in Appendix T of the SIMPLEPLOT Supplement.

ITYPE determines the behaviour of the caption area.

If BOXCAP has been used, a box is drawn around the caption area.

Availability

Section 1, released version 2-11.

Diagnostics

  (Key/caption attempted with no page)2
 (Key/caption attempted with no picture)2
 (Key/caption height reduced)2
 (Key/caption width reduced)2
 (Maximum no. of keys/captions reached)2
 (No room for key/caption area)2

See Also

ADDCP7, BLNKKY, BOXCAP, DEFKEY, DEFPOS, KPOSXY, PUTCP7, QKYCAP and TITLE7.

Examples

Geographical text strings
Alternative formats of text strings
Marker symbols
Text in pictures - alternative character sets
Text in pictures - controlling number format
The Greek alphabet


DEFKEY

This page uses frames, but your browser doesn't support them.


DEFKEY

SUBROUTINE DEFKEY (ITYPE, VCHAR, HCHAR, NROWS, NCOLMS)

Purpose

to define an area for a key box.

Argument(s)

ITYPE | INTEGER expression | Type of reservation
VCHAR | CHARACTER*1 | Vertical position of area
HCHAR | CHARACTER*1 | Horizontal position of area
NROWS | INTEGER expression | Number of lines in area
NCOLMS | INTEGER expression | Maximum number of characters in any key caption

Description

DEFKEY defines an area for a key which is large enough for NROWS lines of text containing NCOLMS characters when written alongside a key sample. The size is calculated using the nominal text width of the current font.

A box is drawn [1] around the key unless cancelled by BOXKY. If ITYPE=1 or 2, the key is associated with the current picture, and the box is drawn immediately. If ITYPE=3, a key box is drawn with each subsequent new picture.

VCHAR and HCHAR are single characters representing the initial letters of vertical and horizontal positions. ITYPE is an integer between 1 and 3. The possible interpretations of VCHAR, HCHAR and ITYPE are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 1, released version 2-11.

Diagnostics

  (Key/caption attempted with no page)2
 (Key/caption attempted with no picture)2
 (Key/caption height reduced)2
 (Key/caption width reduced)2
 (Maximum no. of keys/captions reached)2
 (No room for key/caption area)2

See Also

BLNKKY, BOTHK7, BOXKY, DEFCAP, DEFKYW, DEFPOS, FILLK7, KPOSXY, LINEK7, MARKK7, QKYCAP and SHDEK7.

Examples

Sequences on contour maps
Drawing keys and captions
Multiple scales on an x-y plot
Thickened lines
Bundled attributes


DEFKYW

This page uses frames, but your browser doesn't support them.


DEFKYW

SUBROUTINE DEFKYW (NCHARS)

Purpose

to specify the width of samples in a key box.

Argument(s)

NCHARS INTEGER expression Width of sample in equivalent number of characters (or columns)

Description

By default, the space allocated for a key sample is 12 characters wide. This is sufficient to illustrate uniquely the thirteen standard SIMPLEPLOT software broken line patterns (-6..6), but can appear too wide for samples of shading pattern and marker symbols.

DEFKYW specifies the width of the space in terms of the equivalent number of characters (or columns).

DEFKYW takes effect when the key is set up. This depends on the type of key defined by DEFKEY(ITYPE, ...):

ITYPE | Box drawn
1 | when a new key is defined by DEFKEY
2 | when a new key is defined by DEFKEY
3 | whenever a new picture is started
MPK7H, MPK7V and SHKEYS correspond to ITYPE=2.

Availability

Section 4, released version 2-12.

Default

DEFKYW(0) restores the default.

See Also

DEFKEY and SHKEYS.

Examples

Sequences on contour maps
Thickened lines
Bundled attributes


DEFPOS

This page uses frames, but your browser doesn't support them.


DEFPOS

SUBROUTINE DEFPOS (VCMS, VJST, HCMS, HJST, ITYPE)

Purpose

to specify page coordinates of the movable descriptor, "M".

Argument(s)

VCMS | REAL expression | y (or vertical) coordinate
VJST | CHARACTER*1 | Vertical justification of area
HCMS | REAL expression | x (or horizontal) coordinate
HJST | CHARACTER*1 | Horizontal justification of area
ITYPE | INTEGER expression | Intended use of text

ITYPE | Text usage
0 | Default - determined by SIMPLEPLOT*
1 | Titles, keys or captions relating to pictures
2 | Titles, keys or captions relating to groups/pages
* Page usage is assumed, unless "M" is used in conjunction with a descriptor specifically relating to pictures (eg. "C"entre or "T"op).

Description

The movable picture descriptor, "M", is an additional descriptive position for titles, keys and caption areas. DEFPOS specifies a position for annotation by defining a point (HCMS,VCMS), and justification with respect to this point (VJST,HJST)

VCMS and HCMS are specified in centimetres relative to the bottom left-hand corner of the current SIMPLEPLOT page. The possible interpretations of VJST and HJST are listed in Appendix T if the SIMPLEPLOT Supplement.

Please note that a call to DEFPOS terminates a multi-line sequence of titles whether or not the defined position is used for a title.

The conversion subroutine, KXYXY, can be used to convert user coordinates (ICODE1=5), normalized page coordinates (ICODE1=4) or device coordinates (ICODE1=0, 1, 2) into physical page coordinates in centimetres (ICODE2=3).

Availability

Section plus, released version 2-12.

Default

DEFPOS(0.0,"D",0.0,"D",0) restores the default.

See Also

DEFCAP, DEFKEY, KPOSXY, KXYXY, MPK7H, MPK7V, SHKEYS and TITLE7.


DEVNAM

This page uses frames, but your browser doesn't support them.


DEVNAM

SUBROUTINE DEVNAM (STR)

Purpose

to specify a graphics device by name.

Argument(s)

STR STRING expression Site or absolute name of device

Description

If SIMPLEPLOT is used with a multiple device driver system (eg. the Single Entry Point system), a graphics output device can be specified by a number of alternative methods. DEVNAM specifies a graphics device when a program is executed.

If the program has not yet started plotting, DEVNAM nominates the device which will be opened when plotting starts. Only one device can be open at any time therefore, if a device is already open, the current page is terminated (graphics buffers are flushed) and the device is closed. The device identified by STR is nominated as the device which is to be opened when plotting resumes.

DEVNAM is only applicable at installations which offer SIMPLEPLOT with a multiple device driver system. With the S.E.P. system, STR represents either the site name or the absolute name of a device driver option; STR is assumed to be a site name unless it is preceded by a "/" which identifies an absolute name.

Availability

Section plus, released version 2-11.

Diagnostics

  (DEVICE CLOSED)1

Default

DEVNAM(" ") restores the device selection menu.

See Also

DEVNO and QDEV.


DEVNO

This page uses frames, but your browser doesn't support them.


DEVNO

SUBROUTINE DEVNO (IDEV)

Purpose

to specify a graphics device by number.

Argument(s)

IDEV INTEGER expression Number to identify device

Description

If SIMPLEPLOT is used with a multiple device driver system (eg. the Single Entry Point system), a graphics output device can be specified by a number of alternative methods. DEVNO specifies a graphics device when a program is executed.

If the program has not yet started plotting, DEVNO nominates the device which will be opened when plotting starts. Only one device can be open at any time; therefore, if a device is already open, the current SIMPLEPLOT page is terminated (graphics buffers are flushed) and the device is closed. The device identified by IDEV is nominated as the device which is to be opened when plotting resumes.

DEVNO is only applicable at installations which offer SIMPLEPLOT with a multiple device driver system. With the S.E.P. system, IDEV is interpreted either as a site number or an absolute number of a device driver option; site numbers are in the range 1- 999 and absolute numbers are in the range 1000- 32767.

Availability

Section 1, released before version 2-5.

Diagnostics

  (DEVICE CLOSED)1

Default

DEVNO(0) restores the device selection menu.

See Also

DEVNAM, QDEV and REDRAW.


DIAGDD

This page uses frames, but your browser doesn't support them.


DIAGDD

SUBROUTINE DIAGDD (ILEVEL)

Purpose

to specify the level of device driver diagnostics.

Argument(s)

ILEVEL INTEGER expression Level of device driver diagnostics

ILEVEL | Diagnostics level
0 | No device driver diagnostics
1 | Device driver error messages (default)
2 | Level 1 + device driver warning messages
3 | Level 2 + device driver informative messages

Description

The S.E.P. device driver system issues diagnostic messages which are classified as either error messages, warning messages or informative messages, and, by default, only error messages are issued. DIAGDD specifies an alternative level of device driver diagnostics, independently of the SIMPLEPLOT library messages.

For example,

  DIAGDD(0)  =  switches off all device driver diagnostics.

 DIAGDD(3)  >  switches on all device driver diagnostics.

Please refer to host specific information about how to control the destination of diagnostic messages.

Availability

Section 1, released version 2-13.

Default

DIAGDD(1) restores the default.

See Also

DIAGLV and DIAGOP.


DIAGLV

This page uses frames, but your browser doesn't support them.


DIAGLV

SUBROUTINE DIAGLV (ILEVEL)

Purpose

to specify the level of diagnostics.

Argument(s)

ILEVEL | INTEGER expression | Level of diagnostics
ILEVEL | Description | Messages
0 | No messages output at all | None
1 | Brief messages (default) | Type 1
2 | Level 1 messages plus fuller details | Type 1+2
3 | Level 1 messages plus subroutine trace | Type 1+3
4 | Level 2 messages plus subroutine trace | Type 1+2+3

Description

By default, SIMPLEPLOT issues diagnostic messages to provide information about progress, to warn of omissions, and for fatal errors. DIAGLV specifies an alternative level of diagnostic information. Three types of diagnostic output can be generated:
  1. Brief messages about key events during program execution
  2. Fuller details whenever any omission has been necessary
  3. Trace of each SIMPLEPLOT subroutine called
Five diagnostic levels are available, according to the value of ILEVEL, to output combinations of these.

Please refer to Appendix M of the SIMPLEPLOT Supplement for further information about diagnostic messages, and to host specific information about how to control the destination of diagnostic messages.

Availability

Section plus, released version 2-9.

Default

DIAGLV(1) restores the default.

See Also

DIAGDD, DIAGOP and QSTAT.

Examples

Hedgehog plots
Thickened lines


DIAGOP

This page uses frames, but your browser doesn't support them.


DIAGOP

SUBROUTINE DIAGOP (STR, ITYPE)

Purpose

to output a message to the SIMPLEPLOT diagnostics channel.

Argument(s)

STR | STRING expression | Message
ITYPE | INTEGER expression | Type of message

ITYPE | Suggested type of message
1 | Brief messages about key events during the execution of the program
2 | Fuller details whenever any omission has been necessary
3 | Trace of each subroutine called

Description

DIAGOP outputs the specified message, STR, on the SIMPLEPLOT diagnostic I/O channel according to the value of ITYPE and the current diagnostic level.

It is not necessary to follow these descriptions exactly but, if you do, DIAGOP interacts with DIAGLV such that user-defined messages behave in the same way as SIMPLEPLOT diagnostic messages. For example, after DIAGLV(3) user-defined messages of type 1 and 3 are output, but type 2 messages are omitted (see DIAGLV for further details).

Please refer to Appendix M of the SIMPLEPLOT Supplement for further information about diagnostic messages, and to host specific information about how to control the destination of diagnostic messages.

Availability

Section 1, released version 2-13.

See Also

DIAGDD and DIAGLV.


DRAWAR

This page uses frames, but your browser doesn't support them.


DRAWAR

SUBROUTINE DRAWAR (X1, DX, DARR, NARR)

Purpose

to draw a curve from an array of values.

Argument(s)

X1 | REAL expression | Value of independent variable for plotting DARR(1)
DX | REAL expression | Independent variable interval between function values
DARR | REAL array | Function values for plotting
NARR | INTEGER expression | Number of points

Description

Using the bundled line-drawing attributes of the current pen, DRAWAR draws [1] the curve which connects the following points:
  (X1,DARR(1)), (X1+DX,DARR(2)),...

 (X1+(NARR-1)*DX,DARR(NARR))
These points represent a set of values from a single array where the array elements hold function values yi=f(xi) and xi=x1+(i-1)dx. The type of curve depends on CVTYPE.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-11.

Diagnostics

  (Data curve exceeds scales)2

See Also

BRKNAR, BUNLPR, CLIPLV, CVTYPE, MARKAR, RIDDLE and SHDEAR.


DRAWBX

This page uses frames, but your browser doesn't support them.


DRAWBX

SUBROUTINE DRAWBX (X1, Y1, X2, Y2)

Purpose

to draw a box.

Argument(s)

X1,Y1,X2,Y2 REAL expressions Coordinates of opposite corners of the box, in units of the plotting scales

Description

Using the bundled line-drawing attributes of the current pen, DRAWBX draws [1] the box extending from x1 to x2 by y1 to y2. If x1=x2 or y1=y2, then nothing is drawn.

The points (x1, y1) and (x2, y2) are specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released version 2-8.

Diagnostics

  (**x1,y1,x2,y2**)2
 (Null box, nothing drawn)2

See Also

BRKNBX, BUNLPR, CLIPLV and SHDEBX.


DRAWCL

This page uses frames, but your browser doesn't support them.


DRAWCL

SUBROUTINE DRAWCL (XCENT, YCENT, RADIUS)

Purpose

to draw a circular function with specified centre and radius.

Argument(s)

XCENT,YCENT | REAL expressions | Coordinates of the centre of the circle in units of the plotting scales
RADIUS | REAL expression | Circle radius in plotting scale units

Description

Using the bundled line-drawing attributes of the current pen, DRAWCL draws [1] the circle (or the part of the circle which lies within the range of the plotting scales) centred at point (xcent, ycent), with radius RADIUS. The resulting shape is only geometrically circular when both scales are equal and linear.

The centre point and the radius are both specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; if it exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Circle exceeds scales)2

See Also

BRKNCL, BUNLPR, CLIPLV, KXYXY, SCALES and SHDECL.


DRAWCV

This page uses frames, but your browser doesn't support them.


DRAWCV

SUBROUTINE DRAWCV (XARR, YARR, NARR)

Purpose

to draw a curve from a set of coordinates in parallel arrays.

Argument(s)

XARR,YARR | REAL arrays | Coordinates of points, in units of the plotting scales
NARR | INTEGER expression | Number of points

Description

Using the bundled line-drawing attributes of the current pen, DRAWCV draws [1] the curve corresponding to the following points:
  (XARR(1), YARR(1)), (XARR(2), YARR(2)), ...

 (XARR(NARR), YARR(NARR))
A closed curve can be obtained by using data in which XARR(NARR)=XARR(1) and YARR(NARR)=YARR(1). The type of curve drawn depends on CVTYPE.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Data curve exceeds scales)2

See Also

BRKNCV, BUNLPR, CLIPLV, CVTYPE, MARKCV, RIDDLE and SHDECV.


DRAWFN

This page uses frames, but your browser doesn't support them.


DRAWFN

SUBROUTINE DRAWFN (FUNX)

Purpose

to draw a curve of a user-defined function, y=f(x) (or r=f(theta)).

Argument(s)

FUNX function name REAL function with one REAL argument, also declared in an EXTERNAL statement

Description

DRAWFN evaluates and draws [1] the curve of the specified function, FUNX using the bundled line-drawing attributes of the current pen.

With Cartesian coordinates, the specified function, FUNX, must calculate y given x, and with polar coordinates FUNX must calculate r given theta. The intervals of the independent variable over which DRAWFN evaluates the function, vary with the curvature of the curve.

Care must be taken in the programming of FUNX to ensure that it is continuous and cannot fail for any arguments within the plotting range. Discontinuities may cause SIMPLEPLOT to loop indefinitely.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Function curve exceeds scales)2

See Also

BRKNFN, BUNLPR, CLIPLV, FNRNGE, POLY, RIDDLE and SHDEFN.


DRAWLN

This page uses frames, but your browser doesn't support them.


DRAWLN

SUBROUTINE DRAWLN (X, Y)

Purpose

to draw a straight line between a point and zero.

Argument(s)

X,Y REAL expressions Coordinates of a point specified in units of the plotting scales

Description

Using the bundled line-drawing attributes of the current pen, DRAWLN draws [1] a straight line between the point (x,y) and (x,0.0) in Cartesian plotting, or between f(r,theta) and (0.0,theta) in polar plotting. Nothing is drawn when DRAWLN is called with a Cartesian picture whose vertical scale excludes zero.

The point (x,y) is specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (**x,y**)2

See Also

BRKNPT, BUNLPR, CLIPLV and RANGE.

Examples

Line diagrams


DRAWPR

This page uses frames, but your browser doesn't support them.


DRAWPR

SUBROUTINE DRAWPR (SUBR, T1, T2)

Purpose

to draw the user-defined parametric function.

Argument(s)

SUBR | subroutine name | subroutine with three arguments, (REAL T, REAL VARX, REAL VARY), also declared in an EXTERNAL statement
T1,T2 | REAL expressions | Values of the function parameter between which curve is to be drawn

Description

DRAWPR evaluates and draws [1] the curve of a user-defined parametric function using the bundled line-drawing attributes of the current pen.

The parametric function is specified in subroutine SUBR; SUBR must have three arguments: REAL T, the value of the function argument, and VARX and VARY, to receive REAL coordinates corresponding to T. SUBR is called by BRKNPR with values of T ranging from T1 to T2.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-9.

Diagnostics

  (Parametric function exceeds scales)2

See Also

BRKNPR, BUNLPR, CLIPLV, RIDDLE and SHDEPR.


ENDPAG

This page uses frames, but your browser doesn't support them.


ENDPAG

SUBROUTINE ENDPAG

Purpose

to finish a picture and group separately from starting another picture.

Argument(s)

None

Description

A SIMPLEPLOT page consists of a group of pictures (if GROUP has been called) or an individual picture otherwise. By default, when a SIMPLEPLOT program produces more than one page, each page is automatically finished by the start of another or the close down of graphics. If the graphics device is a remote device, an individual page may not be accessible until the page is terminated; in this case, it may be necessary to finish a page before the program starts another.

ENDPAG finishes the current page by flushing graphics buffers, performing the device page termination procedures, and outputting any diagnostic messages associated with the page. If GROUP has not been called, ENDPAG has a similar effect to ENDPIC; if GROUP has been called and ENDPAG is called before a requested group is full, the group is terminated and the next new picture starts a new group on a new page.

After ENDPAG, all attempts to output graphics are ignored until the start of another page.

Availability

Section 4, released version 2-11.

Diagnostics

  (END OF GROUP)1
 (END OF PICTURE)1
 (No. of incomplete page tasks=n)1

See Also

ENDPIC, ENDPLT, NEWPAG, OUTBUF, OWNIO and OWNNEW.

Examples

Waterfall charts and pen usage


ENDPIC

This page uses frames, but your browser doesn't support them.


ENDPIC

SUBROUTINE ENDPIC

Purpose

to finish a picture separately from starting another picture.

Argument(s)

None

Description

By default, when a SIMPLEPLOT program produces more than one picture, each picture is automatically finished by the start of another or the close down of graphics. ENDPIC finishes the current picture by flushing any graphics buffers, and outputting any diagnostic messages associated with the picture.

If GROUP has been called, and the latest picture does not complete the group, ENDPIC leaves it in a state to continue the group when the next picture is started.

If the group is completed, the next picture starts a new SIMPLEPLOT page but any titles, keys or captions positioned relative to the page or group will be drawn on the current page.

Availability

Section 4, released version 2-7.

Diagnostics

  (END OF PICTURE)1
 (No. of incomplete picture tasks=n)1

See Also

ENDPAG, ENDPLT, MOVEON, OUTBUF, OWNIO and OWNNEW.


ENDPLT

This page uses frames, but your browser doesn't support them.


ENDPLT

SUBROUTINE ENDPLT

Purpose

to close the plotting device and SIMPLEPLOT at the end of plotting.

Argument(s)

None

Description

ENDPLT flushes any graphics output buffers, closes the current graphics device (if open) and closes any permanent and temporary files opened by SIMPLEPLOT.

Every SIMPLEPLOT program should call ENDPLT when all plotting is complete. Failure to close the device may result in loss of some or all of the last picture, and the associated diagnostics. Failure to close down SIMPLEPLOT may result in temporary and/or permanent files being left open. ENDPLT should be called even if a SIMPLEPLOT program does no plotting, eg. if it only manipulates data.

If plotting is attempted when SIMPLEPLOT has been closed, SIMPLEPLOT is automatically reopened.

Availability

Section 1, released before version 2-5.

Diagnostics

  (DEVICE CLOSED)1
  (SIMPLEPLOT CLOSED)1

See Also

DEVNO and DEVNAM.


EQSCAL

This page uses frames, but your browser doesn't support them.


EQSCAL

SUBROUTINE EQSCAL (XSTART, XSTOP, YSTART, YSTOP, IUNITS)

Purpose

to specify similar linear scales for Cartesian or polar plotting.

Argument(s)

XSTART | REAL expression | Value at start of x (or r) scale
XSTOP | REAL expression | Value at end x (or r) scale
YSTART | REAL expression | Value at start of y (or theta) scale
YSTOP | REAL expression | Value at end of y (or theta) scale
IUNITS | INTEGER expression | Type of units

IUNITS | Units | XSTART, XSTOP | YSTART, YSTOP
-1 | Cartesian | Values ignored, centimetres used
0 | Cartesian | Horizontal units | Vertical units
 |  | RSTART, RSTOP | THSTRT, THSTOP
1 | Polar | Radial units | Angles in degrees
2 | Polar | Radial units | Angles in radians
3 | Polar | Radial units | User-defined scale

Description

EQSCAL specifies the limits and units of the current plotting scales, ensuring that 1 unit in x is the same physical length as 1 unit in y. The ranges of the scales, XSTART to XSTOP and YSTART to YSTOP can be expressed in different units, indicated by the value of IUNITS.

The plotting units can be switched by COORDS within the plotting of a picture, without cancelling EQSCAL.

When scaling is controlled by EQSCAL default axes are drawn from XSTART to XSTOP and YSTART to YSTOP. over the requested ranges rather than the extended ranges used to fit the picture size.

Availability

Section 1, released version 2-10.

Default

Calling EQSCAL with XSTART=XSTOP or YSTART=YSTOP restores the default or IUNITS=-1 can be used to set dissimilar linear scales.

See Also

AXES7, COORDS, NEWPIC, POLAR7, SCALES, XSCALE and YSCALE.

Examples

Scales on contour maps and map keys
Polar contour map
Hedgehog plots
A part-cycle polar plot
Circles
Drawing axes
Circular chart


FFSET

This page uses frames, but your browser doesn't support them.


FFSET

SUBROUTINE FFSET (ISET)

Purpose

to specify an alternative source of fast area-fill characters.

Argument(s)

ISET INTEGER expression Fast area-fill character source

ISET | Fast area-fill character source
<=-1 | Alternative hardware/firmware sets (if available)
0 | Default (see above)
1 | Shaded rectangles using currently selected area-fill shading method (see SHSET)
2 | Currently selected text characters (see CHSET)
3 | Currently selected broken line patterns (see LINSET)

Description

For efficient operation and clarity, SIMPLEPLOT is set up to use the most appropriate source of fast area-fill characters for each device. FFSET selects an alternative source of fast area-fill characters to be used for fast area-fill shaded contour maps (MPTYPE(2) or MPTYPE(3)) and shaded surfaces (RASTER(1)).

By default, hardware (or firmware) fast area-fill characters are used if they are available; when no hardware/firmware characters are available, the most efficient alternative on the current device is used for ISET=0.

If the number of fast area-fill characters required exceeds the number available, shaded rectangles are used for additional characters; these rectangles are drawn using the currently selected area-fill shading method (see SHSET) and correspond in size to the current fast-area fill characters (see FFSIZE).

Availability

Section plus, released version 2-11.

Default

FFSET(0) restores the default.

See Also

CHSET, FFSIZE, LINSET, MPTYPE, RASTER and SHSET.

Examples

Raster emulation and the painter's algorithm


FFSIZE

This page uses frames, but your browser doesn't support them.


FFSIZE

SUBROUTINE FFSIZE (WCMS, HCMS)

Purpose

to specify the size of fast area-fill characters.

Argument(s)

WCMS | REAL expression | Character width (in cms)
HCMS | REAL expression | Character height (in cms)

Description

By default, the size of fast area-fill characters depends on the type of picture being drawn:
  • Shaded contour maps: the target height and width of fast area-fill characters are equal to the default target width of text characters which is related to picture size (see TEXTSZ).
  • Shaded pictures using raster process: (eg. shaded surfaces) the target height and width of fast area-fill characters are 75 dots per inch.
If different sizes of fast area-fill characters are available, FFSIZE can be used to specify a target size; the size nearest WCMS * HCMS (in centimetres) is used.

If ordinary text characters are used as fast area-fill characters, SIMPLEPLOT attempts to scale them to achieve the size specified by FFSIZE; if FFSIZE has not been called, their size is affected by the TEXT* subroutines in the same way as other text.

On colour (or grey-scale) pixel devices, the minimum fast area-fill character size is one pixel. The physical size of a single pixel can be calculated (see QPAGE and QPIXLS) and used to specify the finest resolution.

Availability

Section plus, released version 2-11.

Default

Call FFSIZE with WCMS=0.0 or HCMS=0.0 restores the default width or height respectively.

See Also

FFSET, MPTYPE, QFFSIZ, RASTER and TEXTSZ.

Examples

Shaded surface pictures
3-D bar chart


FIGFMT

This page uses frames, but your browser doesn't support them.


FIGFMT

SUBROUTINE FIGFMT (CHFORM, NUMINT, NDEC)

Purpose

to specify the format of REAL numbers drawn on pictures.

Argument(s)

CHFORM | CHARACTER*1 | Type of format
NUMINT | INTEGER expression | Number of digits before point
NDEC | INTEGER expression | Number of decimal places

CHFORM | Effect
"F" | for fixed-point representation of all values
"E" | for floating-point representation of all values
"G" | "E" for very small or large values, "F" otherwise

Description

By default, the format of REAL numbers (either drawn on pictures or converted to text strings by KREAL) is chosen to produce the smallest number of characters while still representing the value of the number. FIGFMT specifies an alternative format.

CHFORM corresponds to Fortran format specifiers. If CHFORM="G", the number of characters taken to represent the value in both "E" and "F" format is calculated and the format which takes up least space is used; in the case of these being equal, "F" format is used.

NUMINT specifies how many digits are required before the decimal point in the mantissa of floating-point representations but has no effect on fixed-point representations. NUMINT=0 forces zero mantissa, but this is not omitted from the written form (eg. 0.123E4).

NDEC specifies how many decimal places are to be included - by default this depends on the value of the number. NDEC=0 indicates no decimal places, NDEC=-1 indicates no decimal places and no decimal point, and NDEC=-2 restores the default.

FIGFMT can be used to control the format of axis annotation: CHFORM controls whether a fixed-point or floating-point format is used for numerical axis labels but values of NUMINT and NDEC are ignored.

Availability

Section 1, released version 2-11.

Default

FIGFMT("G",1,-2) restores the default.

See Also

FIGSGN, KREAL and PIINCL.

Examples

Text in pictures - alternative character sets
Bar chart and pie chart


FIGSGN

This page uses frames, but your browser doesn't support them.


FIGSGN

SUBROUTINE FIGSGN (SIGN, ESIGN)

Purpose

to specify the sign conventions for positive numbers and exponents.

Argument(s)

SIGN | CHARACTER*1 | Representation of sign of positive number
ESIGN | CHARACTER*1 | Representation of sign of positive exponent

SIGN | Description | Examples
or ESIGN |  |  |
"+" | Always include sign | "+12.4" | "+0.123E+4"
" " | Space before +ve values | " 12.4" | " 0.123E 4"
"D" | Default (no + sign) | "12.4" | "0.124E4"

Description

By default, REAL numbers (either drawn on pictures or converted to text strings by KREAL) are preceded by a sign only if the value is negative or it is part of an exponent; FIGSGN specifies alternative conventions for the signs of positive numbers and/or exponents.

Availability

Section 1, released version 2-11.

Default

FIGSGN("D","D") restores the default.

See Also

FIGFMT, KREAL and PIINCL.

Examples

Text in pictures - alternative character sets


FILLKY

This page uses frames, but your browser doesn't support them.


FILLKY

SUBROUTINE FILLKY (ISHADE, CAP, NCAP)

SUBROUTINE FILLK7 (ISHADE, CAP)

Purpose

to draw an annotated sample of fast area-fill characters in a key.

Argument(s)

ISHADE | INTEGER expression | Shading pattern number
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

FILLK7/FILLKY inserts a key to fast area-fill characters (as used on the shaded contour maps or raster pictures) in the next empty space in the current key or caption area (defined by DEFKEY/DEFCAP or selected by RESNXT).

A rectangular sample of the fast-area fill characters, corresponding to shading pattern ISHADE, is drawn on the left of the entry; the caption, CAP, is drawn [2] alongside the sample.

REAL and INTEGER values can be converted to text strings using the conversion subroutines, KREAL and KNUMB respectively.

Availability

Section plus, released version 2-10.

Diagnostics

  (Caption truncated)2
 (Key/caption area full)2
 (No active key/caption area)2

See Also

ADDJST, BLNKKY, DEFKEY, FFSET, MPK7H, MPK7V, MPTYPE, RASTER, SHDEK7, SHPATT and SQSHAD.


FITPAG

This page uses frames, but your browser doesn't support them.


FITPAG

SUBROUTINE FITPAG (ITYPE)

Purpose

to specify the interpretation of PAGE on fixed picture devices.

Argument(s)

ITYPE INTEGER expression Interpretation of PAGE

ITYPE | Device usage
0 | Output constrained to fit device, device size used as page size. The arguments of PAGE are only used to determine the orientation (portrait or landscape) of an area which can be rotated.
1 | Page proportions as in specified by PAGE. The arguments of PAGE are observed on all devices; if the requested page size does not fit within a fixed picture device, the page is shrunk, but its proportions are retained, ensuring comparability of layout between output on different graphics devices.
2 | Device independent layout, text, ie. WYSIWYG (what you see is what you get) output. All attempts to accommodate device differences are bypassed so that output looks similar on different devices. For example, software text is used if the exact size cannot be achieved with hardware text.
3 | WYSIWYG output which may be rotated on all devices to honour page size.

Description

FITPAG specifies the interpretation of the arguments to PAGE.

Availability

Section 4, released version 2-8.

Default

FITPAG(0) restores the default.

See Also

PAGE and PAGVW.


FNAREA

This page uses frames, but your browser doesn't support them.


FNAREA

SUBROUTINE FNAREA (XMIN, XMAX, YMIN, YMAX)

Purpose

to specify the x-y plotting ranges for 3-D functions, z=f(x,y).

Argument(s)

XMIN | REAL expression | Minimum x value included
XMAX | REAL expression | Maximum x value included
YMIN | REAL expression | Minimum y value included
YMAX | REAL expression | Maximum y value included

Description

By default, contours of functions drawn by FN* are plotted over the ranges of the data of the current picture, and surface pictures are plotted over ranges 0.0 to 10.0 in both x and y. FNAREA specifies the ranges XMIN to XMAX and YMIN to YMAX over which 3-D functions z=f(x,y) are plotted.

FNAREA can also be used to specify the x and y scales to be used on a null isometric picture (see ISNEW) and subsequent plotting (via KISXY); SFZSCL specifies z scale. This is because SIMPLEPLOT assumes that if there is no data to be drawn, a function is to be drawn.

Availability

Section 2, released before version 2-5.

Default

Calling FNAREA with XMIN=XMAX and/or YMIN=YMAX restores the default (if equal, the values are otherwise ignored).

See Also

ISNEW, KISXY and SFZSCL.

Examples

Contour maps of a user-defined function
Isometric drawing
Surface pictures of a user-defined function
Labelling contour curves


FNCNTS

This page uses frames, but your browser doesn't support them.


FNCNTS

SUBROUTINE FNCNTS (FUNXY)

Purpose

to draw a contour map from a 3-D function z=f(x,y).

Argument(s)

FUNXY function name REAL function with two REAL arguments, also declared in an EXTERNAL statement

Description

FNCNTS draws a contour map on the current picture representing values of the specified 3-D function. Contours are drawn for equally-spaced z values within the range of values of FUNXY. By default, an interval is allocated to give between 5 and 10 contour levels over the range.

When plotting the function FUNXY with parameters X and Y, the value of FUNXY(X,Y) is interpreted as the surface height, z, at the point (x,y).

The contours drawn by FNCNTS use the four pen pointers as follows:

  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set
CTBRKN overrides the bundled line-drawing attributes of pens associated with the four pen pointers.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour map not all in range)2

See Also

CTBRKN, CTCURV, CTLABS, CTNUMB, FNAREA, FNCONT, LIMSFN, RIDDLE, SFMESH, SQBRKN, SQPEN, SQZLAB and SQZVAL.

Examples

Contour maps of a user-defined function


FNCONT

This page uses frames, but your browser doesn't support them.


FNCONT

SUBROUTINE FNCONT (ZLEV, FUNXY)

Purpose

to draw a contour curve from a 3-D function z=f(x,y).

Argument(s)

ZLEV | REAL expression | Contour level
FUNXY | function name | REAL function with two REAL arguments, also declared in an EXTERNAL statement

Description

FNCONT draws [1] a contour curve on the current picture. The contour curve corresponds to z=ZLEV from the specified function FUNXY.

When plotting the function FUNXY with parameters X and Y, the value of FUNXY(X,Y) is interpreted as the surface height, z, at the point (x,y).

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour curve not all in range)2

See Also

CTBRKN, CTCURV, CTHOLD, CTLABS, CTNUMB, FNAREA, FNCNTS, LIMSFN, QCURVE, RIDDLE and SFMESH.

Examples

Labelling contour curves


FNCUT

This page uses frames, but your browser doesn't support them.


FNCUT

SUBROUTINE FNCUT (X1, Y1, X2, Y2, FUNXY)

Purpose

to draw a 2-D curve of a surface section from a function z=f(x,y).

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of two points
FUNXY | function name | REAL function with two REAL arguments, also declared in an EXTERNAL statement

Description

If the surface represented by the function FUNXY were cut along the straight line from (x1, y1) to (x2, y2), the side view of the section would show as a two-dimensional curve of the variation of the function along that line.

FNCUT draws [1] the curve of surface height vs. distance from (x1, y1) on the current picture - suitable scales must be set up before attempting to draw a section.

When plotting the function FUNXY with parameters X and Y, the value of FUNXY(X,Y) is interpreted as the surface height, z, at the point (x,y).

Availability

Section 2, released before version 2-5.

Diagnostics

  (Surface section not all in range)2

See Also

CTBRKN, CTCURV, CTHOLD, FNAREA, LIMSFN and QCURVE.


FNRNGE

This page uses frames, but your browser doesn't support them.


FNRNGE

SUBROUTINE FNRNGE (START, STOP)

Purpose

to specify a restricted x range over which to plot 2-D functions y=f(x).

Argument(s)

START,STOP REAL expressions Values of the independent variable between which function to be drawn

Description

By default, DRAWFN, BRKNFN and SHDEFN plot the curve of a function over the complete range of the scale of the independent variable. FNRNGE specifies an alternative range. On polar pictures, FNRNGE specifies the theta range over which to plot the function r=f(theta). By default, the first cycle (0- 360°) of a complete polar graph is used or the range of scale of the independent variable.

FNRNGE is essential for functions which would become infinite within the default range, or which would produce multi-cycle polar function curves.

If the 2-D composite graph drawing subroutines (eg. BRKNCV, DRAWAR, SHDEC2, etc.) linear or quadratic regression curves (see CVTYPE), the curve drawn covers the range of the x scale defined by FNRNGE.

Availability

Section 1, released before version 2-5.

Default

Calling FNRNGE with START=STOP restores the default.

See Also

BRKNFN, CVTYPE, DRAWFN, EQSCAL, SCALES and SHDEFN.


FNSHAD

This page uses frames, but your browser doesn't support them.


FNSHAD

SUBROUTINE FNSHAD (ZLEV1, ZLEV2, ISHADE, FUNXY)

Purpose

to draw the shaded area between two contour levels from a 3-D function z=f(x,y).

Argument(s)

ZLEV1,ZLEV2 | REAL expressions | Contour levels
ISHADE | INTEGER expression | Shading pattern number
FUNXY | function name | REAL function with two REAL arguments, also declared in an EXTERNAL statement

Description

FNSHAD shades the area between contour levels z=ZLEV1 and ZLEV2 for the function FUNXY; the area is drawn on the current picture using shading pattern ISHADE. By default, the contours themselves are not drawn (see SHEDGE).

When plotting the function FUNXY with parameters X and Y, the value of FUNXY(X,Y) is interpreted as the surface height, z, at the point (x,y). If function values, z, coincide with contour levels, only those equal to zmin are included within the shaded region, ie. zmin<= z < zmax, where zmin=min(ZLEV1,ZLEV2) and zmax=max(ZLEV1,ZLEV2).

Availability

Section plus, released version 2-5.

Diagnostics

  (Shaded contour not all in range)2

See Also

CTLABS, CTNUMB, FNAREA, FNSHDS, LIMSFN, MPTYPE, SFMESH and SHEDGE.


FNSHDS

This page uses frames, but your browser doesn't support them.


FNSHDS

SUBROUTINE FNSHDS (FUNXY)

Purpose

to draw a shaded contour map from a 3-D function z=f(x,y).

Argument(s)

FUNXY function name REAL function with two REAL arguments, also declared in an EXTERNAL statement

Description

FNSHDS draws a shaded contour map on the current picture from the specified function FUNXY. By default, the contour curves are drawn at equally-spaced z values using an interval chosen to give between 5 and 10 contours levels over the range of values of FUNXY; each of the contour intervals is shaded with a sequence of shading patterns; the contours themselves are not drawn (see SHEDGE).

When plotting the function FUNXY with parameters X and Y, the value of FUNXY(X,Y) is interpreted as the surface height, z, at the point (x,y).

Availability

Section plus, released version 2-5.

Diagnostics

  (Shaded contours not all in range)2

See Also

CTLABS, CTNUMB, FNAREA, FNCNTS, FNSHAD, LIMSFN, MPTYPE, SFMESH, SHEDGE, SHPATT and SQ*.

Examples

Scales on contour maps and map keys


FNSURF

This page uses frames, but your browser doesn't support them.


FNSURF

SUBROUTINE FNSURF (FUNXY)

Purpose

to start a new picture and draw a surface from a 3-D function z=f(x,y).

Argument(s)

FUNXY function name REAL function with two REAL arguments, also declared in an EXTERNAL statement

Description

FNSURF starts a new picture and draws a surface of the specified function over the ranges of x and y specified by the latest call of FNAREA. If FNAREA has not been called, or has been used to indicate that the default ranges are required, the defaults (x from 0.0 to 10.0, y from 0.0 to 10.0) are used by FNSURF.

When plotting the function FUNXY with parameters X and Y, the value of FUNXY(X,Y) is interpreted as the surface height, z, at the point (x,y).

In order to draw a surface picture of polar data, z=f(r,theta), specify polar units with COORDS before calling FNSURF.

FNSURF uses the four pens pointers as follows:

  • [1] z >= 0, on underside of surface.
  • [2] z < 0, on underside of surface.
  • [3] z >= 0, top side of surface.
  • [4] z < 0, on top side of surface.
A shaded surface can be drawn according to a prior call of ISSHAD.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Surface not all within picture)2
 (SURFACE OMITTED: CONSTANT DATA)1

See Also

FNAREA, IS*, ISSHAD, LIMSFN, RIDDLE, SFEQZ, SFEQZD, SFLIMS, SFMESH and SFZSCL.

Examples

Surface pictures of a user-defined function


GETXY

This page uses frames, but your browser doesn't support them.


GETXY

SUBROUTINE GETXY (VARX, VARY, ICODE)

Purpose

to input the coordinate of a data point from an interactive device.

Argument(s)

VARX,VARY | REAL variables | To receive coordinates of a point
ICODE | INTEGER variable | To receive value identifying method of input

Description

Some graphics devices, when used interactively, are capable of allowing graphics input, ie. a device operation can be initiated to allow the user to select a point on the display area, and the coordinates of the point be transmitted to the computer. GETXY inputs the coordinates, (x,y), of a point on an interactive device.

VARX and VARY must be names of REAL variables to receive the user coordinates of a point, and ICODE must be the name of an INTEGER variable to receive the code number of the key used for input. A command is sent to the terminal to prepare to receive graphics input, then a reply is requested in whatever form the device allows.

When the input is received by SIMPLEPLOT, the code of the key pressed (eg. which keyboard key was used, or which button was pressed) is placed in ICODE, and the coordinates are converted to (x,y) user coordinates and placed in VARX and VARY. The conversion subroutine KXYXY can be used to convert user coordinates into page coordinates or device coordinates.

Please note that GETXY only operates on devices with input capability, and which have suitable device drivers and the necessary physical connections.

Availability

Section 4, released version 2-7.

Diagnostics

  (Graphics input failed)1
 (Graphics input not available)1

See Also

KXYXY.

Examples

Converting between (x,y) and long/lat coordinates


GGBDPT

This page uses frames, but your browser doesn't support them.


GGBDPT

SUBROUTINE GGBDPT (BEARNG, DIST)

Purpose

to draw a line for a fixed bearing and distance on the current map.

Argument(s)

BEARNG | REAL expression | Bearing (in degrees)
DIST | REAL expression | Distance travelled (in kilometres)

Description

GGBDPT draws [1] a line from the current point on bearing BEARNG, representing the distance DIST. The current point is defined as the last point specified by GGLLPT or GGBDPT; if neither of these subroutines has been called, or if GGBRK has been called subsequently, an error message is generated and no drawing takes place.

BEARNG gives the bearing East of North. DIST gives the length of the line in kilometres on the surface of the Earth, which is taken as being of radius 6380 km. DIST can take any value, positive or negative.

If the bearing is due North or due South, when one of the Poles is reached it is no longer possible to continue on the same bearing. Lines which do not reach the Poles continue to circle the Earth until they measure DIST kilometres.

GGBDPT and GGLLPT both join two points, but a line of constant bearing and a great circle joining two points are different.

GGBDPT must be called after a new picture has been started by GGNEW, otherwise an error message is generated and nothing is drawn.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGBDPT:Constant bearing attempted over Pole]
{} [GGBDPT:Current point has not been set]
{} [GGBDPT:Inappropriate bearing from Pole: v]
{} [GGBDPT:Plotting attempted before valid call of GGNEW]
{} [GGBDPT:Point(s) off current picture - some drawing omitted]

See Also

BRKNPT, GGBRK, GGBRKN, GGLLPT, VGBDLL and VGLLBD.

Examples

Map projections
Bearing and distance


GGBRK

This page uses frames, but your browser doesn't support them.


GGBRK

SUBROUTINE GGBRK

Purpose

to force a break between two map lines.

Argument(s)

None

Description

Lines on maps can be drawn using GGBDPT and GGLLPT. Lines are drawn from the end of the previous line drawn - this starting coordinate is known as the current point .

When no lines have been drawn, there is no `current point' until one is specified by GGLLPT.

GGBRK may be called at any stage to cancel the `current point', so that the next sequence of lines is disconnected from the last.

Availability

Section 6, released version 2-12.

See Also

BREAK, BRKNPT, JOINPT, GGLLPT and GGBDPT.

Examples

Map projections
Bearing and distance


GGBRKN

This page uses frames, but your browser doesn't support them.


GGBRKN

SUBROUTINE GGBRKN (LTYPE)

Purpose

to specify the broken line pattern used by subsequent GG* drawing subroutines.

Argument(s)

LTYPE INTEGER expression Type of broken line pattern

Description

Following a call of GGBRKN, any lines drawn by GG* drawing subroutines use the specified broken line pattern, LTYPE. GGBRKN affects all subsequent drawing until the next call of GGBRKN.

GGBRKN affects the following subroutines:

{@{}l@{ - }l@{}} GGLLPT | draw a line along a Great Circle
GGBDPT | draw a line of constant bearing
GGCIRC | draw a circle
GGMAP | draw a selected set of boundaries
GGGRAT | draw longitude/latitude graticule
GGPERI | draw a boundary around current map
GGBRKN takes effect immediately.

Availability

Section 6, released version 2-12.

Default

GGBRKN(-999) restores the default.

See Also

BUNLPR, PEN and THCKMG.

Examples

Selecting a region
Map projections
Line styles and labels
Clipping against a rectangle
Controlling the graticule
Bearing and distance


GGCENT

This page uses frames, but your browser doesn't support them.


GGCENT

SUBROUTINE GGCENT (RLONG, RLAT)

Purpose

to specify the centre of projection for azimuthal projections or the standard parallel/central meridian for appropriate projections.

Argument(s)

RLONG,RLAT REAL expressions Coordinates of the centre of projection

Description

GGCENT specifies that the centre of projection for subsequent azimuthal maps is to be (RLONG,RLAT). All points which are the same distance from the centre of projection on the Earth's surface are equidistant from this point on the projection. The actual distance between a plotted point and the centre of projection depends on the projection and picture dimensions used.

On cylindrical equal-area and cylindrical equidistant projections, RLAT specifies the standard parallel. For example, if RLAT is set to 30.0, the projection is drawn with standard parallels at +30.0 or -30.0. The same is true if RLAT is set to -30.0.

As the standard parallel moves further from the Equator (default), the resulting map is taller and thinner. At +90.0 or -90.0, the map would be of zero width, and thus cannot be plotted. In this event, a diagnostic is issued and the default (RLAT=0.0) is restored.

RLONG and RLAT should be in the standard form for input coordinates.

RLONG is also used to set the central meridian of oval , conic and transverse projections (as specified by GGPROJ(IPROJ), where 200 <= IPROJ < 500).

GGCENT takes effect at the next call of GGNEW.

Availability

Section 6, released version 2-12.

Default

GGCENT(0.0,0.0) restores the default.

Diagnostics

  [GGCENT:Latitude v out-of-range]

See Also

GGHGHT, GGPARL and GGPROJ.

Examples

Circles around the world
Line styles and labels
Underlying Cartesian scales
Clipping against a rectangle
Controlling the graticule
Drawing contours
Hedgehog plots


GGCIRC

This page uses frames, but your browser doesn't support them.


GGCIRC

SUBROUTINE GGCIRC (CLONG, CLAT, RADIUS)

Purpose

to draw a circle of a specified centre and radius on the current map.

Argument(s)

CLONG,CLAT | REAL expressions | Coordinates of the centre
RADIUS | REAL expression | Radius (in kilometres)

Description

GGCIRC draws [1] a circle of radius RADIUS, centred on the point (CLONG,CLAT). The circle drawn is a geometric three-dimensional circle - all points are equidistant from the centre on a sphere. RADIUS is the radius of the circle in kilometres on the Earth's surface and can take any positive value.

(CLONG,CLAT) can lie outside the current limits determined by GGREGN/GGRGCL and GGCLIP. However, only those parts of the circle which are within range are plotted.

If RADIUS is greater than half the Earth's circumference (roughly equal to 20,000 km), a diagnostic is issued and nothing is drawn. If any of the circle is outside the range, a diagnostic is issued.

GGCIRC must be called after the first new picture has been started by GGNEW. If it is not, an error message is generated and nothing is drawn.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGCIRC:Latitude v out-of-range]
{} [GGCIRC:Plotting attempted before valid call of GGNEW]
{} [GGCIRC:Point(s) off current picture - some drawing omitted]

See Also

GGBRKN, GGCLIP, GGPERI, GGREGN and GGRGCL.

Examples

Circles around the world
Shortest distance between two points


GGCLIP

This page uses frames, but your browser doesn't support them.


GGCLIP

SUBROUTINE GGCLIP (ITYPE)

Purpose

to specify the clipping region of maps.

Argument(s)

ITYPE INTEGER expression Type of clipping region

ITYPE | Region drawn
1 | all available points within the region selected
2 | all points inside the physical rectangle containing the region selected
3 | all points inside the physical rectangle with corners (RLONG1,RLAT1) and (RLONG2,RLAT2)

Description

GGREGN defines a region bounded by a pair of longitudes and latitudes; GGRGCL defines a region as a circle of a given radius. GGCLIP specifies the clipping of maps relative to either region.

GGCLIP(2) plots all points within the bounding rectangle of the region:

  • After GGREGN(RLONG1,RLAT1,RLONG2,RLAT2), the perimeter of the rectangle contains the points (RLONG1,RLAT1), (RLONG2,RLAT1), (RLONG2,RLAT2), and (RLONG1,RLAT2).

  • If GGRGCL has been called, the perimeter contains the extreme points on the perimeter of the bounding circle.
GGCLIP(3) is identical to GGCLIP(2) for regions specified by GGRGCL. After GGREGN(RLONG1,RLAT1,RLONG2,RLAT2), GGCLIP(3) specifies the clipping region as the rectangle with corners at (RLONG1,RLAT1) and (RLONG2,RLAT2).

GGCLIP takes effect at the next call of GGNEW.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGCLIP:Integer argument n out-of-range]

Default

GGCLIP(1) restores the default.

See Also

GGREGN and GGRGCL.

Examples

Clipping against a rectangle
Controlling the graticule


GGEQLL

This page uses frames, but your browser doesn't support them.


GGEQLL

SUBROUTINE GGEQLL (STRTLN, STEPLN, STRTLT, STEPLT)

Purpose

to specify the region for data to be converted by KGLLRG.

Argument(s)

STRTLN | REAL expression | Longitude of first column
STEPLN | REAL expression | Longitudinal interval between data columns
STRTLT | REAL expression | Latitude of first row
STEPLT | REAL expression | Latitudinal interval between data rows

Description

GGEQLL specifies the rectangular region to be used by KGLLRG when converting an array of long/lat data to a regular x-y grid. By default, the array of long/lat data is assumed to cover the current region of the world (as defined by GGREGN or GGEQLL).

GGEQLL specifies an alternative region such that data corresponds to longitudes STRTLN, STRTLN+STEPLN, STRTLN+(2.0*STEPLN), etc, and latitudes STRTLT, STRTLT+STEPLT, STRTLT+(2.0*STEPLT), etc. If the array read by KGLLRG has dimensions NLONG*NLAT, the data covers the following ranges:

  STRTLN to STRTLN+(NLONG-1)*STEPLN in longitude, and

 STRTLT to STRTLT+(NLAT-1)*STEPLT in latitude.
If the longitudinal range exceeds 360°, more than one value would be recorded for the same point; in this case, the default longitudinal range is used. If either end of the latitudinal range does not lie between -90° and +90°, the default latitudinal range is used. If an inappropriate range is selected, a diagnostic is issued by KGLLRG.

Availability

Section 6, released version 2-13.

Diagnostics

  [GGEQLL:Latitude v out of range]

Default

GGEQLL(STRTLN,0.0,STRTLT,0.0) restores the default.

See Also

GGREGN and KGLLRG.

Examples

Contouring on a projected region


GGGRAT

This page uses frames, but your browser doesn't support them.


GGGRAT

SUBROUTINE GGGRAT (GRTYPE)

Purpose

to draw a set of meridians and/or parallels on the current map.

Argument(s)

GRTYPE CHARACTER*2 Type of graticule lines to be drawn

GRTYPE | Graticule lines drawn
"LO" | longitude - meridians drawn
"LA" | latitude - parallels drawn
"LL" | longitude and latitude - complete graticule drawn

Description

GGGRAT draws [1] a set of parallels (latitudinal lines), meridians (longitudinal lines) or the complete graticule (a network of parallels and meridians) over the region specified by GGREGN/GGRGCL and GGCLIP.

Although only the first two characters need be specified, other characters may be added to improve the readability of the code. Thus, "Long", and "Longitude" are equally valid to select meridians. If GRTYPE starts with an invalid pair of letters, a diagnostic is issued, and nothing is drawn.

Please note that while graticule lines are analogous to grids and axes on other plots, SIMPLEPLOT grid/axis-drawing subroutines (eg. AXGRID, AXSBDV, AXIS7) should not be used on map pictures. The interval between graticule lines is specified by GGGRDV.

GGGRAT must be called after a new picture has been started by GGNEW, otherwise an error message is generated and nothing is drawn.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGGRAT:Plotting attempted before valid call of GGNEW]
{} [GGGRAT:Point(s) off current picture - some drawing omitted]
{} [GGGRAT:String X too short]
{} [GGGRAT:Unrecognised string XX]

See Also

GGGRDV.

Examples

Graticule and perimeter
Line styles and labels
Underlying Cartesian scales
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Converting between (x,y) and long/lat coordinates
Hedgehog plots


GGGRDV

This page uses frames, but your browser doesn't support them.


GGGRDV

SUBROUTINE GGGRDV (GRTYPE, OFFSET, DELTA)

Purpose

to specify the base and interval for graticule lines.

Argument(s)

GRTYPE | CHARACTER*2 | Lines to be altered
OFFSET | REAL expression | Base value of intervals
DELTA | REAL expression | Interval between graticule lines

GRTYPE | Graticule lines affected
"LO" | longitude - meridians
"LA" | latitude - parallels
"LL" | longitude and latitude - all graticule lines

Description

GGGRDV sets the base and interval for graticule lines drawn by subsequent calls to GGGRAT. If the base is B and the interval I, parallels and/or meridians are drawn at B, B+I, B+2I... and at B-I, B-2I etc.

If DELTA=0.0, the default interval used is determined by the range of longitudes and/or latitudes to be drawn. The interval is determined as follows:

{@{}ll@{}} Range | Interval
range less than 3° | no graticule lines drawn
3° <= range <6° | 1°
6° <= range <10° | 2°
10° <= range <30° | 5°
30° <= range <60° | 10°
60° <= range <180° | 30°
range >= 180° | 60°

Availability

Section 6, released version 2-12.

Diagnostics

  [GGGRDV:String X too short]
{} [GGGRDV:Unrecognised string XX]

Default

GGGRDV(GRTYPE,0.0,0.0) restores the default.

See Also

GGGRAT.

Examples

Controlling the graticule


GGHGHT

This page uses frames, but your browser doesn't support them.


GGHGHT

SUBROUTINE GGHGHT (HEIGHT)

Purpose

to specify the origin of projection for general azimuthal and satellite projections.

Argument(s)

HEIGHT REAL expression Distance of origin above the centre of projection in terms of the Earth's radius

Description

HEIGHT is a REAL value giving the distance of the origin of projection from the Earth's surface. It is measured as a multiple of the Earth's radius (taken as being 6380 km).

The most common values of HEIGHT for azimuthal projections lie between 2.0 and 3.0. For example, for James' projection HEIGHT=2.37, for La Hire's HEIGHT=2.71. The orthographic azimuthal projection is a special case which can only be specified by GGPROJ because the value of HEIGHT would be infinity.

For general azimuthal projections, the value of HEIGHT must be greater than 2.0.

GGHGHT only affects general azimuthal and satellite projections (GGPROJ(100) and GGPROJ(103)). GGHGHT has no effect on other projections.

GGHGHT takes effect at the next call of GGNEW.

Availability

Section 6, released version 2-12.

Default

GGHGHT(3.0) restores the default.

See Also

GGCENT and GGPROJ.

Examples

Controlling the graticule


GGINIT

This page uses frames, but your browser doesn't support them.


GGINIT

SUBROUTINE GGINIT

Purpose

to reset all SIMPLEPLOT defaults relating to maps.

Argument(s)

None

Description

Specification subroutines change SIMPLEPLOT's default behaviour. The specification of each subroutine includes details of how to restore this default behaviour individually. GGINIT restores the default behaviour of all map-drawing subroutines simultaneously. The effect is equivalent to calling all appropriate GG* subroutines with the default values given in the specifications.

GGINIT also resets the `current point' set by GGLLPT and GGBDPT. A new current point is set at the next call to GGLLPT.

Please note that some defaults are not restored until the next new map picture is started (with GGNEW).

Immediate | at next GGNEW
GGBRKN | GGCENT | GGCLIP
GGEQLL | GGHGHT | GGPARL
GGGRDV | GGPROJ | GGREGN
GGSFMT | GGRGCL |
GGSLDA |  |
See individual specifications for more details.

Availability

Section 6, released version 2-12.

See Also

INITSP and GGNEW.


GGLLPT

This page uses frames, but your browser doesn't support them.


GGLLPT

SUBROUTINE GGLLPT (RLONG, RLAT)

Purpose

to draw a line along a great circle to a given point on the current map.

Argument(s)

RLONG,RLAT REAL expressions Coordinates of the point

Description

GGLLPT draws [1] a line on a map to (RLONG,RLAT) from the last point specified by GGLLPT or GGBDPT. If neither of these subroutines has been called, or if the last call was followed by a call of GGBRK, GGLLPT moves to (RLONG, RLAT) where a new line can be started.

(RLONG, RLAT) can lie outside the current region determined by GGREGN/GGRGCL and GGCLIP. In this case, a line is drawn towards (RLONG,RLAT) but the line stops at the edge of the picture. (RLONG, RLAT) remains the current point from which the next line is drawn.

If any of the line requested is outside the current limits, a diagnostic is issued.

The line drawn is along a great circle but is not necessarily straight (this depends on the position of the line and the projection used).

GGLLPT must be called after the first new picture has been started by GGNEW. If it is not, an error message is generated and nothing is drawn.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGLLPT:Latitude v out-of-range]
{} [GGLLPT:Plotting attempted before valid call of GGNEW]
{} [GGLLPT:Point(s) off current picture - some drawing omitted]

See Also

BRKNPT, GGBDPT, BREAK, GGBRKN and VGLLSD.

Examples

Map projections
Graticule and perimeter
Line styles and labels
Bearing and distance
Converting between (x,y) and long/lat coordinates


GGMAP

This page uses frames, but your browser doesn't support them.


GGMAP

SUBROUTINE GGMAP (ITYPE)

Purpose

to draw a set of map boundaries on the current map.

Argument(s)

ITYPE INTEGER expression Type of boundaries to be drawn

ITYPE | Boundaries drawn
1 | coastlines only
2 | political boundaries only
3 | coastlines and political boundaries

Description

GGMAP draws [1] the region of the world specified by GGREGN/GGRGCL, clipping against the boundary specified by GGCLIP.

If ITYPE is outside the range 1-3, a diagnostic is issued and nothing is drawn.

If coastlines and political boundaries are to be drawn in a different colours or in different line style, they should be drawn separately, selecting the pen with PEN and/or line style with GGBRKN before drawing.

If a map data file cannot be opened or is unreadable, a diagnostic is issued and no further drawing can be performed. See Appendix H of the SIMPLEPLOT Reference manual for more information.

GGMAP must be called after the first new picture has been started by GGNEW. If it is not, an error message is generated and nothing is drawn.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGMAP:Cannot open data file]
{} [GGMAP:Cannot open index file]
{} [GGMAP:Error reading from data file]
{} [GGMAP:Error reading from index file]
{} [GGMAP:Integer argument n out-of-range]
{} [GGMAP:Plotting attempted before valid call of GGNEW]
{} [GGMAP:Point(s) off current picture - some drawing omitted]

See Also

GGBRKN, GGCLIP, GGREGN, GGRGCL and QGSCAL.

Examples

A simple map
Selecting a region
Map projections
Circles around the world
Graticule and perimeter
Line styles and labels
Underlying Cartesian scales
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Converting between (x,y) and long/lat coordinates
Drawing contours
Contouring on a projected region
Hedgehog plots


GGNEW

This page uses frames, but your browser doesn't support them.


GGNEW

SUBROUTINE GGNEW

Purpose

to start a new picture for drawing maps.

Argument(s)

None

Description

GGNEW starts a new picture and sets the SIMPLEPLOT scales used by subsequent maps. It must be called before any of the GG* drawing subroutines can take effect. If one of these subroutines is called before a new map picture is started, an error message is issued and nothing is drawn.

The scales depend on values set by auxiliary subroutines such as GGCENT, GGCLIP, GGHGHT, GGPARL, GGPROJ, GGREGN and GGRGCL. The values set by these subroutines only take effect at the following call of GGNEW.

The scales units remain unchanged until the next call of either GGNEW or the SIMPLEPLOT scale-setting subroutines such as EQSCAL or SCALES. The scale units set by GGNEW can be inquired by calling QGSCAL.

If a projection has been selected with an invalid Centre of Projection or Origin, GGNEW issues a diagnostic and uses the default region.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGNEW:Cylindrical Equal Area cannot be centred on Pole]
{} [GGNEW:General Azimuthal must have origin > 2.0]
{} [GGNEW:None of current region may be plotted]

See Also

QGSCAL.

Examples

A simple map
Selecting a region
Map projections
Circles around the world
Graticule and perimeter
Line styles and labels
Underlying Cartesian scales
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Converting between (x,y) and long/lat coordinates
Drawing contours
Contouring on a projected region
Hedgehog plots


GGPARL

This page uses frames, but your browser doesn't support them.


GGPARL

SUBROUTINE GGPARL (RLAT1, RLAT2)

Purpose

to specify the standard parallel(s) for appropriate projections.

Argument(s)

RLAT1 | REAL expression | Latitude of the first standard parallel
RLAT2 | REAL expression | Latitude of the second standard parallel

Description

The standard parallel is the line of latitude around which some projections show zero distortion. On these projections, it is possible to alter one or more standard parallels in order to preserve shape and distance.

Some projections have just one standard parallel (eg. cylindrical equal-area , cylindrical equidistant , simple conic ). This is specified by RLAT1 and the value of RLAT2 has no effect on these projections.

For projections with two standard parallels, relative shape and distance are preserved between RLAT1 and RLAT2. In the current version of Maps, no projection has two standard parallels, so the value of RLAT2 is unimportant.

RLAT1 and RLAT2 should be in the standard form for input coordinates (latitudes must be between -90.0 and +90.0).

The standard parallel for cylindrical projections can also be specified by the second argument of GGCENT.

GGPARL takes effect at the next call of GGNEW.

Availability

Section 6, released version 2-13.

Default

GGPARL(0.0,0.0) restores the default.

Diagnostics

  [GGPARL:Latitude v out-of-range]

See Also

GGCENT and GGPROJ.

Examples

Underlying Cartesian scales


GGPERI

This page uses frames, but your browser doesn't support them.


GGPERI

SUBROUTINE GGPERI (ITYPE)

Purpose

to draw a boundary perimeter around the current map.

Argument(s)

ITYPE INTEGER expression Type of boundary

ITYPE | Boundary
1 | The outer limits of the map drawn
2 | The rectangle containing the map drawn

Description

GGPERI draws [1] the boundary containing the current map.

The distinction between the values of ITYPE can be seen on any non-rectangular projection.

GGPERI must be called after the first new picture has been started by GGNEW. If it is not, an error message is generated and nothing is drawn.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGPERI:Integer argument n out-of-range]
{} [GGPERI:Plotting attempted before valid call of GGNEW]
{} [GGPERI:Point(s) off current picture - some drawing omitted]

See Also

GGCLIP and PERIM.

Examples

Graticule and perimeter
Line styles and labels
Underlying Cartesian scales
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Converting between (x,y) and long/lat coordinates
Contouring on a projected region


GGPROJ

This page uses frames, but your browser doesn't support them.


GGPROJ

SUBROUTINE GGPROJ (IPROJ)

Purpose

to specify the map projection of the next new map picture.

Argument(s)

IPROJ INTEGER expression Number relating to projection
IPROJ

< 100 | Cylindrical projections | < 200 | Azimuthal projections
0 | Equal-area cylindrical (default) | 100 | General azimuthal
1 | Mercator | 101 | Equidistant azimuthal
2 | Plate Carree | 102 | Equal-area azimuthal
3 | Peters | 103 | Satellite
4 | Equidistant cylindrical | 104 | Orthographic
5 | Gall's stereographic | 105 | Gnomonic
6 | Central perspective | 106 | Stereographic
< 300 | Oval projections | < 500 | Transverse projections
201 | Sanson-Flamsteed | 401 | Transverse Mercator
202 | Hammer-Aitoff | 402 | Cassini

< 400 Conic projections

300 Simple conic

Description

By default, maps are drawn using the equal-area cylindrical projection. GGPROJ specifies an alternative projection according to the value of IPROJ.

GGPROJ takes effect after the next call of GGNEW.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGPROJ:Integer argument n out-of-range]

Default

GGPROJ(0) restores the default (equal-area cylindrical).

See Also

GGCENT, GGHGHT and GGPARL.

Examples

Map projections
Map lines
Circles around the world
Graticule and perimeter
Line styles and labels
Underlying Cartesian scales
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Converting between (x,y) and long/lat coordinates
Drawing contours
Contouring on a projected region
Hedgehog plots


GGREGN

This page uses frames, but your browser doesn't support them.


GGREGN

SUBROUTINE GGREGN (RLONG1, RLAT1, RLONG2, RLAT2)

Purpose

to specify the map region to be plotted bounded by longitudes and latitudes.

Argument(s)

RLONG1,RLAT1 | REAL expression | Coordinate of one corner of region
RLONG2,RLAT2 | REAL expression | Coordinate of other corner

Description

By default, the full extent of the Earth's surface is drawn on a map. GGREGN specifies a region of the Earth's surface to be drawn. The area drawn is enclosed within the boundary specified by GGCLIP.

RLONG1, RLAT1, RLONG2 and RLAT2 should be in the standard form for input coordinates (latitudes must be between -90.0 and +90.0, longitudes can take any value, which is interpreted as its equivalent between -180.0 and +180.0).

If RLAT1 = RLAT2, the default latitude range (-90.0 to +90.0) is used.

GGREGN takes effect at the next call of GGNEW; GGREGN overrides GGRGCL and vice versa.

Availability

Section 6, released version 2-12.

Diagnostics

  [GGREGN:Latitude v out-of-range]

Default

GGREGN(-180.0,-90.0,180.0,90.0) restores the default (the maximum available area of the world is drawn).

See Also

GGCLIP and GGRGCL.

Examples

Selecting a region
Map lines
Graticule and perimeter
Line styles and labels
Underlying Cartesian scales
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Converting between (x,y) and long/lat coordinates
Contouring on a projected region


GGRGCL

This page uses frames, but your browser doesn't support them.


GGRGCL

SUBROUTINE GGRGCL (RADIUS)

Purpose

to specify the map region to be plotted as a circle.

Argument(s)

RADIUS REAL expression Radius of the area drawn (in km)

Description

By default, the full extent of the Earth's surface is drawn on a map. GGRGCL specifies the circular region of the Earth's surface to be drawn. The area drawn is defined as those points which are within a distance RADIUS km from the centre of projection (specified by GGCENT).

RADIUS can take any positive value, but if it is greater than half the circumference of the world (about 20,000 km), it is taken as equal to this value and the full world is drawn.

GGRGCL takes effect at the next call of GGNEW; GGRGCL overrides GGREGN and vice versa.

GGRGCL only affects cylindrical (GGPROJ(IPROJ) with IPROJ < 100) and azimuthal projections (100 <= IPROJ < 200).

Availability

Section 6, released version 2-13.

Default

GGRGCL(0.0) restores the default (the radius of the Earth, the maximum available area).

See Also

GGCENT, GGCLIP, GGPROJ and GGREGN.

Examples

Selecting a region


GGSFMT

This page uses frames, but your browser doesn't support them.


GGSFMT

SUBROUTINE GGSFMT (NCOMP, CHDEGS, CHMINS, CHSECS)

Purpose

to set the format of strings from KGLAT/KGLONG.

Argument(s)

NCOMP | INTEGER expression | Number of components written
CHDEGS | STRING expression | Suffix for degrees
CHMINS | STRING expression | Suffix for minutes
CHSECS | STRING expression | Suffix for seconds

Description

By default, strings produced by the conversion subroutines, KGLONG and KGLAT, are in the form (d)dd° mm'ss'' C. if ss and mm are zero, seconds and minutes are omitted. GGSFMT specifies that all strings contain NCOMP components. The effect is shown in the table below:

{@{}llll@{}} NCOMP=0 | NCOMP=1 | NCOMP=2 | NCOMP=3
90° N | 90° N | 90° 0'N | 90° 0' 0.0''N
45° 30'S | 46° S | 45° 30'S | 45° 30' 0.0''S
150° 13'12.0''E | 150° E | 150° 13'E | 150° 13'12.0''E
0° 0' 3.6''W | 0° W | 0° 0'W | 0° 0' 3.6''W
CHDEGS, CHMINS and CHSECS set the characters used to represent degrees, minutes and seconds. They can be any string or one of "/D", "M", "S" or "/N". ("/N" is not the same as " " which is interpreted as a single space):

Escape character | Interpretation | Escape character | Interpretation
"/D" | ° | "/M" | '
"/S" | '' | "/N" | no character
As the default degree, minute and second signs are written using characters from font 22, it is advisable to write text containing these signs with character set 5 or 22, which give characters with an appropriate height.

If CHDEGS, CHMINS or CHSECS are longer than 80 characters, a diagnostic is issued and the separator is truncated. The format of the seconds component of the string can be specified further using FIGFMT.

Availability

Section 6, released version 2-13.

Default

GGSFMT(0,"/D","/M","/S") restores the default.

See Also

CHSET, FIGFMT, GGSLDA, KGLAT and KGLONG.

Examples

Geographical text strings


GGSLDA

This page uses frames, but your browser doesn't support them.


GGSLDA

SUBROUTINE GGSLDA (LABARR, NARR)

Purpose

to load a new set of compass labels for strings produced by KGLONG and KGLAT.

Argument(s)

LABARR | STRING array | Containing set of labels
NARR | INTEGER expression | Number of items in LABARR

Description

By default, strings produced by KGLONG and KGLAT are in the form:
   (d)dd° mm' ss'' C
The default value of C is a single character - "N", "E", "S" or "W".

GGSLDA(LABARR,NARR) resets the first NARR compass labels to the strings in LABARR. If NARR > 4, only the first four strings in LABARR are used. The strings in LABARR are always in the order North, East, South, West.

If NARR=0, LABARR is not examined and the default labels are loaded.

If a string is blank (" "), coordinates North and East are written as positive numbers; coordinates South and West are negative.

Availability

Section 6, released version 2-13.

Default

GGSLDA(LABARR,0) restores the default.

See Also

GGSFMT, KGLAT and KGLONG.

Examples

Geographical text strings


GROUP

This page uses frames, but your browser doesn't support them.


GROUP

SUBROUTINE GROUP (NHORIZ, NVERT)

Purpose

to specify how pictures are to be grouped on the SIMPLEPLOT page.

Argument(s)

NHORIZ | INTEGER expression | Number of pictures to be placed horizontally
NVERT | INTEGER expression | Number of pictures to be placed vertically

Description

By default, SIMPLEPLOT positions pictures one per page. GROUP specifies that pictures are to be grouped together on a page in a configuration of NHORIZ pictures across by NVERT down.

After GROUP has been called, the next new picture subroutine positions the picture in the top left of a new SIMPLEPLOT page; subsequent new pictures fill the group left to right, top to bottom. When enough pictures have been drawn to fill the group, the next new picture automatically starts a new group (on a new SIMPLEPLOT page).

If either the margins or the picture size is changed after a group has been started, subsequent pictures are drawn using the changed sizes but the total group area remains fixed. Such changes may therefore affect the number of pictures which can be accommodated in the group.

GROUP finishes the plotting on the current SIMPLEPLOT page if a picture has been started on it; this is to avoid any confusion due to the resetting of page layout.

There are no explicit limits to the number of pictures in a group but there may be practical constraints due to other elements of the layout.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Grouping discontinued)1

Default

Calling GROUP with either argument set to zero or both arguments set to 1 restores the default.

See Also

BOXGRP, ENDPAG, NEWPIC, NEWPAG and PAGVW.

Examples

Contour maps of tartan-gridded data
A simple map
Selecting a region
Map projections
Map lines
Circles around the world
Different shaded areas for open curves
Fine control of waterfall charts
Raster emulation and the painter's algorithm
Backdrops and bases


HSTCLC

This page uses frames, but your browser doesn't support them.


HSTCLC

SUBROUTINE HSTCLC (DARR, NDARR, X1, DX, FARR, NFARR)

Purpose

to calculate data frequencies from raw data.

Argument(s)

DARR | REAL array | Raw data
NDARR | INTEGER expression | Number of elements in DARR
X1 | REAL variable | Offset value for subdivisions
DX | REAL variable | Frequency interval
FARR | REAL array | To receive frequency table
NFARR | INTEGER expression | Number of elements in FARR

Description

HSTCLC scans the array DARR and builds a frequency table in the array FARR. The value in DX when HSTCLC is called is used as the frequency interval unless it is found that the number of intervals would exceed NFARR, in which case a suitable frequency interval is chosen and the value of DX is reset. Interval subdivisions are placed at X1 plus integer multiples of DX, and X1 is reset to the DARR value at the interval subdivision at the start of FARR(1). DX and X1 must be names of variables which have already been given values before HSTCLC is called because their values are used, and may be changed.

Availability

Section 1, released before version 2-5.

See Also

HSTCUM and HSTPLT.


HSTCUM

This page uses frames, but your browser doesn't support them.


HSTCUM

SUBROUTINE HSTCUM (X1, DX, FARR, NARR)

Purpose

to draw a cumulative histogram from frequencies.

Argument(s)

X1 | REAL expression | Offset value for subdivisions
DX | REAL expression | Frequency interval
FARR | REAL array | Frequency table
NARR | INTEGER expression | Number of elements in FARR

Description

HSTCUM draws a cumulative histogram on the current picture from frequency values in FARR. Frequencies can be calculated from raw data using HSTCLC.

Availability

Section 1, released before version 2-5.

Diagnostics

  (HISTOGRAM OMITTED: ZERO INTERVAL)1

See Also

HSTSHD, HSTCLC and HSTPLT.


HSTDIR

This page uses frames, but your browser doesn't support them.


HSTDIR

SUBROUTINE HSTDIR (XTORF, FTORF)

Purpose

to specify the directions of scales for histograms drawn by HSTGRM.

Argument(s)

XTORF | LOGICAL expression | Whether to reverse direction of x scale
FTORF | LOGICAL expression | Whether to reverse direction of frequency scale

Description

By default, the scales on a histogram drawn by HSTGRM are calculated to fit the data exactly and are configured such that scales go from a small value to a larger value. HSTDIR specifies any combination of scale directions, by indicating for each whether to reverse the x scale and/or the frequency (or y) scale; the range of the scales can be specified by HSTRNG.

Availability

Section 4, released version 2-11.

Default

HSTDIR(.FALSE.,.FALSE.) restores the default.

See Also

HSTRNG and HSTGRM.

Examples

Alternative histograms and the direction of scales


HSTGRM

This page uses frames, but your browser doesn't support them.


HSTGRM

SUBROUTINE HSTGRM (DARR, NARR, X1, DX, CAPX, CAPY)

Purpose

to draw a histogram from raw data on the current picture.

Argument(s)

DARR | REAL array | Raw data
NARR | INTEGER expression | Number of elements in DARR
X1 | REAL expression | Offset value for subdivision
DX | REAL expression | Frequency interval
CAPX | STRING expression | x-axis caption
CAPY | STRING expression | y-axis caption

Description

HSTGRM builds a frequency table from the values in the array DARR, and draws a histogram with annotated axes on the current picture.

DX specifies the required frequency interval; if DX=0.0, a suitable frequency interval is chosen internally. Interval subdivisions are placed at all values of the form x1+n,dx (where n is any INTEGER and dx is the frequency interval) within the range of values in the array DARR.

HSTGRM draws an x-axis and a y-axis which can be configured using appropriate AX* subroutines with CHAXIS="XC" and "YC" respectively. The x-axis is labelled with CAPX and the y-axis labelled with the caption CAPY. By default, the number of x-axis subdivisions relates directly to the frequency interval, DX, therefore AXSBDV should be used with care.

By default, a histogram displaying frequencies is drawn and the boxes are unshaded; the scales are calculated to fit the data exactly and both scales run in the natural direction of the corresponding axis. These default settings can be altered by HSTTYP, HSTSHD, HSTRNG and HSTDIR respectively.

Current plotting scales are ignored by HSTGRM but not reset.

Availability

Section 4, released version 2-11.

See Also

HSTDIR, HSTRNG, HSTTYP and HSTSHD.

Examples

A simple histogram
Shading and the range of histogram scales
Alternative histograms and the direction of scales


HSTPLT

This page uses frames, but your browser doesn't support them.


HSTPLT

SUBROUTINE HSTPLT (X1, DX, FARR, NARR)

Purpose

to draw a histogram from frequencies.

Argument(s)

X1 | REAL expression | Offset value for subdivisions
DX | REAL expression | Frequency interval
FARR | REAL array | Frequency table
NARR | INTEGER expression | Number of elements in FARR

Description

HSTPLT draws a histogram on the current picture from frequency values in FARR. Frequencies can be calculated from raw data using HSTCLC.

Availability

Section 1, released before version 2-5.

Diagnostics

  (HISTOGRAM OMITTED: ZERO INTERVAL)1

See Also

HSTSHD, HSTCLC and HSTCUM.


HSTRNG

This page uses frames, but your browser doesn't support them.


HSTRNG

SUBROUTINE HSTRNG (XMIN, XMAX, FMIN, FMAX)

Purpose

to specify the range of scales for histograms drawn by HSTGRM.

Argument(s)

XMIN | REAL expression | Minimum horizontal scale value
XMAX | REAL expression | Maximum horizontal scale value
FMIN | REAL expression | Minimum vertical scale value
FMAX | REAL expression | Maximum vertical scale value

Description

By default, the scales of a histogram drawn by HSTGRM are calculated to accommodate the data exactly. HSTRNG specifies alternative range of scales (the direction of scales can be specified separately by HSTDIR).

If the specified scales can not accommodate the entire histogram, part of the picture cannot be drawn. This contributes to the number of incomplete picture tasks and a diagnostic is issued at the end of the picture.

Current plotting scales are ignored by HSTGRM but not reset.

Availability

Section 4, released version 2-11.

Default

Calling HSTRNG with XMAX<=XMIN and/or FMAX<=FMIN restores the default. eg. HSTRNG(0.0,0.0,0.0,0.0).

See Also

HSTGRM and HSTDIR.

Examples

Shading and the range of histogram scales


HSTSHD

This page uses frames, but your browser doesn't support them.


HSTSHD

SUBROUTINE HSTSHD (ISHADE)

Purpose

to specify a shading pattern for the boxes used to draw a histogram.

Argument(s)

ISHADE INTEGER expression Shading pattern number

Description

By default, histograms are drawn with unshaded boxes. To draw a shaded histogram (using HSTGRM, HSTPLT or HSTCUM) a single shading pattern can be selected by HSTSHD.

Availability

Section 4, released version 2-11.

Default

HSTSHD(-1) restores the default.

See Also

SHSET and SHEDGE.

Examples

Shading and the range of histogram scales
Alternative histograms and the direction of scales


HSTTYP

This page uses frames, but your browser doesn't support them.


HSTTYP

HSTSHD

Specifications

INITBL

SUBROUTINE HSTTYP (ITYPE)

Purpose

to specify the type of histogram to be plotted by HSTGRM.

Argument(s)

ITYPE

INTEGER expression

Type of histogram

ITYPE | Type of histogram
1 | Standard histogram
2 | Cumulative histogram
3 | Complementary (or inverse) cumulative histogram

Description

By default, HSTGRM draws a standard histogram in which the boxes represent the frequencies calculated from the raw data. HSTTYP changes the type of histogram drawn.

HSTTYP must be called before HSTGRM.

Availability

Section 4, released version 2-11.

Default

HSTTYP(1) restores the default.

See Also

HSTGRM.

Examples

Alternative histograms and the direction of scales


INITBL

This page uses frames, but your browser doesn't support them.


INITBL

SUBROUTINE INITBL

Purpose

to cancel all current blanked areas.

Argument(s)

None

Description

INITBL cancels all areas blanked by CHMASK, DEFCAP and MKMASK. Subsequent drawing is only masked against newly defined blanked areas.

The use of masked areas affects the speed of a plot, so INITBL results in faster output.

Availability

Section 1, released version 2-14.

See Also

CHMASK, DEFCAP and MKMASK.


INITSP

This page uses frames, but your browser doesn't support them.


INITSP

SUBROUTINE INITSP

Purpose

to reset all SIMPLEPLOT defaults.

Argument(s)

None

Description

All specification or reset subroutines change SIMPLEPLOT's default behaviour.

The documentation for each specification subroutine includes details of how to restore this default behaviour individually.

INITSP restores the default behaviour of all subroutines simultaneously. There are a few exceptions to this rule: the specification subroutines which control characteristics of the I/O interface such as the diagnostic level and the current device are not reset by INITSP. The subroutines in this category include DIAGLV, DEVNAM, DEVNO, IOCHAN, OWNNEW, OWNFIL. Similarly, INITSP does not reset the device palette (defined by PENRGB or PENHLS) nor does it affect metafile I/O.

INITSP finishes the plotting on the current SIMPLEPLOT page regardless of whether it contains a picture. This is to avoid any confusion due to the resetting of page layout.

Availability

Section 1, released version 2-5.

See Also

ENDPLT.


IOCHAN

This page uses frames, but your browser doesn't support them.


IOCHAN

SUBROUTINE IOCHAN (ITYPE, ICHAN)

Purpose

to specify a value to be associated with a SIMPLEPLOT internal I/O channel.

Argument(s)

ITYPE | INTEGER expression | Type of channel usage
ICHAN | INTEGER expression | Value to be associated with that channel

ITYPE | Channel usage
1 | Diagnostics
2 | Prompt output
3 | Prompt input
4 | Graphics output
5 | Graphics input
6 | Configuration
8 | Scratch file used for shading
9 | Hershey font file
10 | Scratch file used for metafiles

Description

By default, SIMPLEPLOT allocates all input and output channels internally. IOCHAN specifies an alternative value (eg. Fortran logical unit number, GKS connection identifier etc.) for the type of usage described by ITYPE.

Valid values of ICHAN and their effect may depend on the host processor, device driver system and (where ITYPE=4, 5 or 6) the individual device driver in use.

In order to allow IOCHAN to be used repeatedly before SIMPLEPLOT is fully initialized, it does not trigger the initial diagnostic message:

   (SIMPLEPLOT Mark 2-15(nnn)X)

Availability

Section plus, released version 2-12.

Default

IOCHAN(ITYPE,-1) restores the default. The default is not restored by INITSP.

See Also

MTFILE, OWNFIL and Appendix H, Host Specific Information.


ISANG

This page uses frames, but your browser doesn't support them.


ISANG

SUBROUTINE ISANG (ANGLE)

Purpose

to specify the angle at which surface pictures are drawn.

Argument(s)

ANGLE REAL expression Angle in degrees

Description

By default, surfaces are drawn such that the angle between the horizontal plane and the base plane is 15.0°. ISANG specifies an alternative angle.

The viewing corner of the data (see ISVIEW) is positioned at the front of the picture before rotation is performed, and therefore will not be at the front of the picture for angles between 90.0° and 270.0°.

Availability

Section 2, released before version 2-5.

Default

ISANG(15.0) restores the default.

See Also

ISVIEW.

Examples

Surface pictures of tartan-gridded data
Surface pictures of ungridded data
Waterfall charts and cascade surface pictures
Backdrops and bases
Stacked 3-D barchart


ISAXDR

This page uses frames, but your browser doesn't support them.


ISAXDR

SUBROUTINE ISAXDR (CAPX, NCAPX, CAPY, NCAPY, CAPZ, NCAPZ)

SUBROUTINE ISAXD7 (CAPX, CAPY, CAPZ)

Purpose

to draw 3-D axes on an isometric picture.

Argument(s)

CAPX | STRING expression | x-axis caption
CAPY | STRING expression | y-axis caption
CAPZ | STRING expression | z-axis caption
NCAPX | INTEGER expression | Number of characters in CAPX
NCAPY | INTEGER expression | Number of characters in CAPY
NCAPZ | INTEGER expression | Number of characters in CAPZ

Description

By default, the surface pictures drawn by the *SURF subroutines do not include axes. ISAXDR/ISAXD7 draws x-yz axes on the current surface picture.

The x-yz diagram indicating the directions of change of x, y and z, can be omitted by calling ISDIAG.

Availability

Section plus, released version 2-9.

Diagnostics

  (Isometric axes inappropriate)2

See Also

AXIS7, ISAXES and ISDIAG.

Examples

Waterfall charts and cascade surface pictures
Shaded contour maps and surfaces
Shaded surface pictures
Controlling shading patterns on shaded surfaces
3-D bar chart
Stacked 3-D barchart


ISAXES

This page uses frames, but your browser doesn't support them.


ISAXES

SUBROUTINE ISAXES (TORF)

Purpose

to specify whether surface pictures are to include 3-D axes.

Argument(s)

TORF LOGICAL expression Whether axes required

Description

By default, surface pictures drawn by FNSURF, RGSURF, XSURF, XYSURF, YSURF, ZSURF and ZZSURF do not have axes on them. ISAXES specifies whether or not x-yz axes are to be drawn as part of a surface picture.

Captions "X", "Y" and "Z" are automatically given to the x-axis, y-axis and z-axis respectively.

If ISAXES is active, the x-yz diagram normally controlled by ISDIAG is omitted.

Availability

Section plus, released version 2-9.

Default

ISAXES(.FALSE.) restores the default.

See Also

AXIS7, ISAXD7 and ISDIAG.

Examples

Surface pictures of tartan-gridded data


ISAXFC

This page uses frames, but your browser doesn't support them.


ISAXFC

SUBROUTINE ISAXFC (IXFIX, IYFIX, IZFIX)

Purpose

to specify the colours for filled rear planes of Isometric pictures.

Argument(s)

IXFIX | INTEGER expression | Fill index for rear x plane
IYFIX | INTEGER expression | Fill index for rear y plane
IZFIX | INTEGER expression | Fill index for rear z plane

Description

ISAXFC specifies colour indices for filling the rear planes of Isometric pictures. If a non-negative value is specified for any plane, it is filled whenever a new image is started. ISAXFC must therefore be called before ISNEW.

IXFIX specifies the colour index for the rear plane(s) with x constant, IYFIX specifies the colour index for the rear plane(s) with y constant, and IZFIX specifies the colour index for the rear plane(s) with z constant.

If colour index -1 is specified, the associated plane is not filled. This is the default.

Availability

Section plus, released version 2-14.

Default

ISAXFC(-1,-1,-1) restores the default.

Diagnostics

  (INTEGER out of range)1

See Also

ISAXGC.

Examples

3-D bar chart
Stacked 3-D barchart
Reversing the direction of 3-D bars


ISAXGC

This page uses frames, but your browser doesn't support them.


ISAXGC

SUBROUTINE ISAXGC (IXCIX, IYCIX, IZCIX)

Purpose

to specify the colour indices for grid lines on the rear planes of Isometric pictures.

Argument(s)

IXCIX | INTEGER expression | Colour index for x
IYCIX | INTEGER expression | Colour index for y
IZCIX | INTEGER expression | Colour index for z

Description

ISAXGC specifies colour indices for grid lines on the rear planes of the Isometric picture. When grids have been requested, they are drawn in the raster image whenever a new image is started. ISAXGC must therefore be called before ISNEW.

IXCIX specifies the colour index for grid lines on the rear plane(s) with x constant, IYCIX specifies the colour index for grid lines on the rear plane(s) with y constant, and IZCIX specifies the colour index for grid lines on the rear plane(s) with z constant.

If index -1 is specified, the associated grids are omitted. This is the default.

Availability

Section plus, released version 2-14.

Default

ISAXGC(-1,-1,-1) restores the default.

Diagnostics

  (ISAXGC: Colour index I out of range)1

See Also

ISAXFC.

Examples

Stacked 3-D barchart
Reversing the direction of 3-D bars


ISBRBZ

This page uses frames, but your browser doesn't support them.


ISBRBZ

SUBROUTINE ISBRBZ (ZVAL)

Purpose

to specify the base z value for bars in Isometric 3-D barcharts.

Argument(s)

ZVAL REAL expression Required base z value

Description

By default, Isometric 3-D barcharts show each bar extending from zero z, to a z value from an array. ISBRBZ can be called before ISBRFL to set an alternative base z value.

Availability

Section plus, released version 2-14.

Default

ISBRBZ(0.0) restores the default.

See Also

ISBRFL.

Examples

3-D bar chart


ISBRFC

This page uses frames, but your browser doesn't support them.


ISBRFC

SUBROUTINE ISBRFC (ICODE)

Purpose

to specify how colour sequences should be used on subsequent Isometric 3-D barcharts.

Argument(s)

ICODE INTEGER expression Usage (see below)

ICODE | Different colours
0 | Faces of bars distinguished by pen pointers (Default)
1 | Data Rows distinguished by colour sequence
2 | Data Columns distinguished by colour sequence
3 | Data Sets distinguished by colour sequence
4 | Data magnitudes distinguished by colour sequence

Description

ISBRFL fills a ViSualization 3-D barchart. ISBRFC can be called before ISBRFL, to specify how colours are used for the bars.

When ICODE = 0, three colour indices distinguish the three planes of each bar: the x plane uses the first colour index, the y plane uses the second, and the z plane uses the third.

When ICODE > 0, all planes of a bar are shaded with the same colour index. SQSHAD may be called to specify the sequence of colour indices. When SQSHAD has not been called, the colour indices are used in the natural sequence 1, 2, 3, ...

The edges of each plane are drawn using pen pointer [4]. Pen pointer values are controlled by SETPNS.

Availability

Section plus, released version 2-14.

Default

ISBRFC(0) restores the default.

See Also

SQSHAD.

Examples

3-D bar chart
Reversing the direction of 3-D bars


ISBRFL

This page uses frames, but your browser doesn't support them.


ISBRFL

SUBROUTINE ISBRFL (D3ARR, NX, NY, NSETS)

Purpose

to fill a Isometric 3-D barchart.

Argument(s)

D3ARR | REAL 3-D array | NX * NY * NSETS array of user (z) values
NX,NY,NSETS | INTEGER expressions | Dimensions of 3-D data array

Description

ISBRFL starts a new picture and draws a Isometric 3-D barchart. The barchart represents NSETS sets of values in array D3ARR, stacked on top of each other. The sets may be stacked downward with the first set at the top, or upward with the first set at the bottom, as specified by ISBRUP.

Different colours may be used to distinguish between data columns, data rows, or data sets, or data magnitudes, as specified by ISBRFC.

If all the values in D3ARR are equal to the base z value set by ISBRBZ, a diagnostic is issued and nothing is drawn.

Availability

Section plus, released version 2-14.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (BAR CHART OMITTED: NULL RANGE)1

See Also

ISBRBZ, ISBRFC and ISBRSZ.

Examples

3-D bar chart
Stacked 3-D barchart
Reversing the direction of 3-D bars


ISBRSZ

This page uses frames, but your browser doesn't support them.


ISBRSZ

SUBROUTINE ISBRSZ (X1, X2, Y1, Y2)

Purpose

to specify the widths of bars in Isometric 3-D barcharts.

Argument(s)

X1,X2 | REAL expressions | Limits of bars in x direction
Y1,Y2 | REAL expressions | Limits of bars in y direction

Description

By default, each bar in Isometric 3-D barcharts extends from 0.1 to 0.9 of the space available in both x and y. ISBRSZ can be called to specify alternative limits.

When X2 is not greater than X1, or either lies outside the range 0.0 to 1.0, the default in x is restored; when Y2 is not greater than Y1, or either lies outside the range 0.0 to 1.0, the default in y is restored.

Availability

Section plus, released version 2-14.

Default

ISBRSZ(0.0, 0.0, 0.0, 0.0) restores the default.

See Also

ISBRFL.

Examples

Stacked 3-D barchart
Reversing the direction of 3-D bars


ISBRUP

This page uses frames, but your browser doesn't support them.


ISBRUP

SUBROUTINE ISBRUP (IUP)

Purpose

to specify the stacking direction for Isometric 3-D barcharts.

Argument(s)

IUP INTEGER expression Whether bars stack upwards

IUP | Direction
0 | Downward (Default)
1 | Upward

Description

ISBRUP is called before ISBRFL to specify whether multiple data sets should be stacked downward with the first set at the top, or upward with the first set at the bottom.

Availability

Section plus, released version 2-14.

Diagnostics

  (ISBRUP: Integer I out of range)1

Default

ISBRUP(0) restores the default.

See Also

ISBRFL.

Examples

Reversing the direction of 3-D bars


ISCURV

This page uses frames, but your browser doesn't support them.


ISCURV

SUBROUTINE ISCURV (NSTEPS)

Purpose

to specify the smoothness of curves on crosshatched and cascade surface pictures.

Argument(s)

NSTEPS INTEGER expression Number of steps

Description

Outline surfaces are drawn as rapidly as possible using straight lines between points on an underlying grid; however, the curves used to draw the mesh lines on crosshatched and cascaded pictures (see ISTYPE) are interpolated between mesh intersections to improve the picture. By default, the number of steps used depends on the picture size; fewer steps are used on smaller pictures. ISCURV specifies the number of steps when interpolating between grid intersections.

After ISCURV has been called, each piece of curve between intersections is drawn in NSTEPS steps, interpolated on a smooth curve through the intersections. Small values of NSTEPS lead to faster processing, but less smooth drawings.

The fineness of the underlying mesh can be controlled by ISMESH or SFMESH.

Availability

Section 2, released before version 2-5.

Default

Calling ISCURV with NSTEPS less than 2 (the minimum value possible) restores the default.

See Also

ISMESH and SFMESH.


ISDIAG

This page uses frames, but your browser doesn't support them.


ISDIAG

SUBROUTINE ISDIAG (TORF)

Purpose

to specify whether surface pictures are to include an x-yz diagram.

Argument(s)

TORF LOGICAL expression Whether a diagram is required

Description

By default, a diagram is drawn alongside surfaces with arrows indicating the directions of change of the 3 variables, x, y and z. ISDIAG specifies whether or not an x-yz diagram is to be drawn as part of a surface picture. ISDIAG must be called before a surface is drawn.

If ISAXES is active, the x-yz diagram is omitted regardless of ISDIAG.

Availability

Section 2, released version 2-6.

Default

ISDIAG(.TRUE.) restores the default.

See Also

ISAXES.

Examples

Waterfall charts and cascade surface pictures
Shaded contour maps and surfaces
Shaded surface pictures
Controlling shading patterns on shaded surfaces
Reversing the direction of 3-D bars


ISFULL

This page uses frames, but your browser doesn't support them.


ISFULL

SUBROUTINE ISFULL (TORF)

Purpose

to specify whether surface pictures fill the space available.

Argument(s)

TORF LOGICAL expression Whether to fill the space

Description

By default, surface pictures are drawn such that all rotations of the surface can be drawn to the same scale within the picture size. This allows comparisons of rotated pictures but can result in a very small picture with a large empty area around it. ISFULL specifies whether or not surfaces are to be drawn to reach the picture limits.

After a call of ISFULL(.TRUE.), each surface picture is drawn on a scale to make the surface as big as possible within the picture limits but without changing the aspect ratio.

Availability

Section 2, released version 2-7.

Default

ISFULL(.FALSE.) restores the default.

See Also

ISRISE.

Examples

Shaded surface pictures
Controlling shading patterns on shaded surfaces
3-D bar chart
Reversing the direction of 3-D bars


ISMESH

This page uses frames, but your browser doesn't support them.


ISMESH

SUBROUTINE ISMESH (MXY)

Purpose

to specify the fineness of detail in surface pictures.

Argument(s)

MXY INTEGER expression Total number of mesh lines used in x and y

Description

The processing of all surface pictures is based on the same mesh of lines at equally-spaced x values and equally-spaced y values as are drawn on crosshatched (and cascaded) surfaces. By default, for data on a regular grid the data grid is used, and for all other types of data MXY=20 is used. ISMESH can be to specify the total number of x lines and y lines (MXY=MX+MY).

The relative values of MX and MY determine the relative lengths of the x scale and y scale in the picture. The distribution of MXY between MX and MY depends on the data type and the x-y ranges of the data. For equally-spaced gridded data, if either of the x-y scales has not been specified, MX and MY are given values proportional to the numbers of data values in the x and y directions; if both of the x-y scales are known, MX and MY are set in a similar ratio to x-range:y-range, unless that ratio would produce either MX or MY less than 5, in which case MX=MY=MXY/2.

Larger values of MX and MY produce surfaces with finer detail, and cross-hatched pictures with a closer mesh, but the processing is necessarily slower.

ISMESH has no effect while SFMESH is active.

Availability

Section 2, released before version 2-5.

Default

Calling ISMESH with MXY less than 4 restores the default.

See Also

ISCURV and SFMESH.

Examples

Surface pictures of a user-defined function


ISNEW

This page uses frames, but your browser doesn't support them.


ISNEW

SUBROUTINE ISNEW

Purpose

to start a null isometric picture.

Argument(s)

None

Description

ISNEW starts a new picture and sets up scales for three-dimensional plotting. The scales are the same as would be set for surface pictures - the x-y scales cover the ranges specified by a previous call of FNAREA (or default to 0.0 to 10.0 for both x and y); the z scale is as specified by a previous call of SFZSCL (or the same default, 0.0 to 10.0).

ISNEW is a graphics subroutine but, by default, does no drawing. If one of the BOX* subroutines has been called to generate boxes around pictures, groups or pages, these are drawn [1] when a new picture is started.

Any point (x,y,z) on this new isometric picture can be addressed as a Cartesian pair (x,y) using the conversion subroutine KISXY. Hence, any of the graph drawing subroutines (eg. CP7PT, BRKNPT, MARKPT) can be used on an isometric picture.

Availability

Section 2, released before version 2-5.

See Also

FNAREA, SFZSCL and KISXY.

Examples

Isometric drawing


ISRISE

This page uses frames, but your browser doesn't support them.


ISRISE

SUBROUTINE ISRISE (FACTOR)

Purpose

to specify the proportions of surface pictures.

Argument(s)

FACTOR REAL expression Specifies the maximum height of the surface above the base plane

Description

By default, the z scale of surface pictures is set by assigning some length on the picture to cover the range of surface heights to be represented. ISRISE specifies that the length to cover the range of surface heights on surface pictures is to be FACTOR* picture width* cos(ANGLE) where ANGLE is the angle (in degrees) between the horizontal plane and the base plane as specified by ISANG.

Availability

Section 2, released before version 2-5.

Default

ISRISE(0.4) restores the default.

See Also

ISANG and ISFULL.

Examples

Waterfall charts and cascade surface pictures


ISSBAS

This page uses frames, but your browser doesn't support them.


ISSBAS

SUBROUTINE ISSBAS (IBASE)

Purpose

to specify the type of base on shaded surface pictures.

Argument(s)

IBASE INTEGER expression Type of shading used for base

IBASE | Type of shading used
0 | None (default)
1 | Solid shading but only when skirts are also drawn
2 | Solid shading (see ISSPAT)

Description

By default, shaded surfaces are drawn with neither a skirt, a backdrop nor a base. ISSBAS specifies the method used for drawing a base.

IBASE specifies the type of shading to be used for drawing the base at the foot of the skirts.

By default, shading pattern 0 (rub-out) is used for solid shading but an alternative pattern can be selected using ISSPAT.

Availability

Section plus, released version 2-13.

Default

ISSBAS(0) restores the default.

See Also

ISSBCK, ISSHAD, ISSKRT, ISSPAT, ISTYPE, RASTER and SQSHAD.

Examples

Backdrops and bases


ISSBCK

This page uses frames, but your browser doesn't support them.


ISSBCK

SUBROUTINE ISSBCK (IBACK)

Purpose

to specify the type of backdrops on shaded surface pictures.

Argument(s)

IBACK INTEGER expression Type of shading used for backdrop

IBACK | Type of shading used
0 | None (default)
1 | Solid shading; default pattern 0 (see ISSPAT)
2 | Vertical lines
3 | Horizontal lines parallel to the x-y plane
4 | Shaded horizontal bands, parallel to the x-y plane

Description

IBACK specifies the type of shading used for the backdrop, the area behind the surface which covers the full range of the z-axis.

By default, shading pattern 0 (rub-out) is used for solid shading but an alternative pattern can be selected using ISSPAT.

Availability

Section plus, released version 2-13.

Default

ISSBCK(0) restores the default.

See Also

ISSBAS, ISSHAD, ISSKRT, ISSPAT, ISTYPE, RASTER and SQSHAD.

Examples

Backdrops and bases


ISSHAD

This page uses frames, but your browser doesn't support them.


ISSHAD

SUBROUTINE ISSHAD (IMETHD)

Purpose

to specify the method of shading used on shaded surface pictures.

Argument(s)

IMETHD INTEGER expression Method of shading

IMETHD | Shading method
0 | No shading (default)
1 | Shading in whole quadrilaterals (fastest)
2 | Quadrilaterals split into 2
3 | Quadrilaterals split into 4
4 | Shading corresponding to contours (slowest but most accurate)

Description

By default, the *SURF subroutines draw a surface represented by lines but with no shading. ISSHAD specifies the method for shading subsequent surfaces according to the value of IMETHD.

By default, the shaded surface is drawn as a raster picture (see RASTER) using the currently selected fast area-fill characters. Shaded surfaces may includelines according to a prior call of ISTYPE (eg. outlines, crosshatching). Axes, text and keys are not drawn as part of this raster picture. The fineness of detail of the raster image is controlled by FFSIZE.

Availability

Section plus, released version 2-13.

Default

ISSHAD(0) restores the default.

See Also

ISSBAS, ISSBCK, ISSKRT, ISSPAT, ISTYPE and RASTER.

Examples

Shaded surface pictures
Raster emulation and the painter's algorithm
Controlling shading patterns on shaded surfaces
Backdrops and bases


ISSKRT

This page uses frames, but your browser doesn't support them.


ISSKRT

SUBROUTINE ISSKRT (ISKIRT)

Purpose

to specify the type of skirts on shaded surface pictures.

Argument(s)

ISKIRT INTEGER expression Type of shading used for skirts

ISKIRT | Type of shading used
0 | None (default)
1 | Solid shading; default pattern 9 (see ISSPAT)
2 | Vertical lines superimposed over solid shading
3 | Horizontal lines parallel to the x-y plane
4 | Shaded horizontal bands, parallel to the x-y plane

Description

ISKIRT specifies the type of shading used for skirts, the area on the picture between the edge of the surface and the plane of the x and y axes.

Availability

Section plus, released version 2-13.

Default

ISSKRT(0) restores the default.

See Also

ISSBAS, ISSBCK, ISSHAD, ISSPAT, ISTYPE, RASTER and SQSHAD.

Examples

Shaded surface pictures


ISSPAT

This page uses frames, but your browser doesn't support them.


ISSPAT

SUBROUTINE ISSPAT (CHFACE, ISHADE)

Purpose

to specify the shading patterns to be used on shaded surfaces.

Argument(s)

CHFACE | CHARACTER*2 | Face of skirt, backdrop or base
ISHADE | INTEGER expression | Shading pattern of the face

Description

By default, shaded surfaces are drawn without skirts, backdrops or a base. If ISSBAS, ISSBCK or ISSKRT has been called to specify shaded skirts, backdrops and/or base, the default shading pattern used is pattern 0 (rub-out). ISSPAT selects an alternative.

Individual faces can be selected for shading, with the 2 character string CHFACE. The first character of CHFACE refers to the face ("A" to "D" for skirts/backdrops, "G" for bases). The second character refers to the position ("I"nner, "O"uter or "B"ackdrop). The possible interpretations of CHFACE are listed in Appendix T of the SIMPLEPLOT Supplement.

For ungridded data, or rectangular data with no-data values, skirts do not necessarily occur at the rectangular faces; skirts dropped from holes and from surfaces where the boundary is not along a face, are identified by CHFACE="ND".

A wildcard character, "*", can be used in place of either character of CHFACE to denote a set of faces. For example, CHFACE="**" for all faces of skirts, backdrops and the base; "*B" for all backdrops; "A*" for the inner skirt, outer skirt and backdrop associated with face A.

If no skirt, backdrop nor base is drawn, or shaded contour bands are drawn, ISSPAT has no effect.

Availability

Section plus, released version 2-13.

Diagnostics

  (Invalid shading area: XX)1

Default

ISSPAT("**",0) restores the default.

See Also

ISSBAS, ISSBCK, ISSKRT, ISSHAD, RASTER, SHSET and SQSHAD.

Examples

Backdrops and bases


ISTYPE

This page uses frames, but your browser doesn't support them.


ISTYPE

SUBROUTINE ISTYPE (ITYPE)

Purpose

to specify the type of surface picture.

Argument(s)

ITYPE INTEGER expression Type of picture

ITYPE | Type of surface picture
0 | No lines drawn
1 | Surface outline (default)
2 | Surface outline and a set of contours
3 | Crosshatched picture
4 | Set of curves of z against x
 | for a set of equally-spaced y values
5 | Set of curves of z against y
 | for a set of equally-spaced x values

Description

By default, the *SURF subroutines draw a surface outline with no shading. ISTYPE specifies an alternative type of surface picture. The number of curves drawn in crosshatched and cascaded pictures (ITYPE=3, 4 or 5) can be controlled by ISMESH or SFMESH.

Availability

Section 2, released before version 2-5.

Default

ISTYPE(1) restores the default.

See Also

ISMESH, ISSHAD and SFMESH.

Examples

Surface pictures of tartan-gridded data
Surface pictures of a user-defined function
Waterfall charts and cascade surface pictures
Shaded contour maps and surfaces
Controlling shading patterns on shaded surfaces
Backdrops and bases


ISVIEW

This page uses frames, but your browser doesn't support them.


ISVIEW

SUBROUTINE ISVIEW (ICORNR)

Purpose

to specify the view point for surface pictures.

Argument(s)

ICORNR INTEGER expression Viewing corner

Description

Each surface picture covers a rectangular region of the x-y plane, even when the data structure plotted by *SURF is non-rectangular. By default, surface pictures represent the surface viewed with one of the corners of the rectangle at the front, and the opposite corner at the back.

By default, the minimum x and minimum y are at the front. ISVIEW specifies an alternative corner to be at the front. ICORNR specifies the viewing corner; corners are numbered 0, 1, 2, 3 in a clockwise direction, starting from 0 at the first data point.

The viewing corner of the data is positioned at the front of the picture before any rotation is performed (see ISANG), and therefore will not be at the front of the picture for angles between 90.0° and 270.0°.

Availability

Section 2, released before version 2-5.

Default

ISVIEW(0) restores the default.

See Also

ISANG and ISYUP.

Examples

Surface pictures of tartan-gridded data


ISYUP

This page uses frames, but your browser doesn't support them.


ISYUP

SUBROUTINE ISYUP (TORF)

Purpose

to specify the direction of change of y on surface pictures.

Argument(s)

TORF LOGICAL expression Whether y increases upwards

Description

On Cartesian pictures, x is conventionally represented as increasing from left to right, and y as increasing from the bottom upwards. Tabulated data is also presented with x increasing from left to right, but y usually increases downwards.

By default, on surface pictures, data is treated in a conventional Cartesian sense with y values increasing upwards. ISYUP specifies the direction of change of y on surface pictures. If TORF=.FALSE., then y values are represented as increasing downwards, as is conventional for tables.

Availability

Section 2, released before version 2-5.

Default

ISYUP(.TRUE.) restores the default.

See Also

ISVIEW.


JOINPT

This page uses frames, but your browser doesn't support them.


JOINPT

SUBROUTINE JOINPT (X, Y)

Purpose

to draw a straight line to the point (x,y) (or (R,theta))).

Argument(s)

X,Y REAL expressions Coordinates of a point specified in units of the plotting scales

Description

JOINPT draws a straight line to the point (x,y), or (R,theta) if the polar coordinates have been specified by COORDS, EQSCAL or POLAR7. The line uses using the bundled line-drawing attributes of the current pen.

A line is started by the first call to JOINPT, or BRKNPT. The first call of JOINPT/BRKNPT moves to (x,y) without drawing anything; subsequent calls draw a straight line from the previous point to the specified point. The line is straight even on non-linear scales and polar charts.

A line is interrupted explicitly by BREAK, or if any other plotting subroutine is called. The next call of JOINPT/BRKNPT moves to the first point of a new line. MARKPT and CP7PT draw a symbol/caption at a specified (x,y), followed by the equivalent to the first call to JOINPT/BRKNPT. A sequence of symbols joined by straight lines can be drawn by repeating the following calls for a sequence of points:

JOINPT(X,Y)

MARKPT(X,Y,MKTYPE)

The point (x,y) is specified in units of the current plotting scales (user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (**x,y**)2

See Also

BREAK, BRKNPT, BUNLPR, CLIPLV, CP7PT and MARKPT.

Examples

Hedgehog plots
Bundled attributes


KGLAT

This page uses frames, but your browser doesn't support them.


KGLAT

SUBROUTINE KGLAT (RLAT, STR, LENVAR)

Purpose

to convert a REAL latitude to the equivalent text string.

Argument(s)

RLAT | REAL expression | Latitudinal value
STR | STRING variable | To receive text string
LENVAR | INTEGER variable | To receive number of characters used in STR

Description

KGLAT converts a latitudinal value into a string representation. RLAT gives the latitude positive for North, and negative for South.

By default, STR is in the form, dd° mm'ss''C, where dd gives degrees and is a positive INTEGER in the range 0 to 90; mm gives minutes and is a positive INTEGER in the range 0 to 59; ss gives seconds and is a positive REAL in the range 0.0 <= ss < 60.0 with 1 decimal place; C is a single character - "N" for North, "S" for South.

By default, if mm=0 and ss=0.0, they are not written.

Examples of the possible values of STR are as follows:

RLAT | value of STR
90.0 | 90° N
-45.5 | 45°30' S
-0.001 | 0°0'3.6''S
0.0 | 0° N
The format of STR is affected by GGSFMT/GGSLDA.

LENVAR is set to the number of significant characters in STR. If STR is not long enough to contain the converted latitude, SIMPLEPLOT places as much of the latitude as possible into STR and issues a diagnostic. If RLAT is outside the range -90.0 to 90.0, STR is space-filled, LENVAR is set to 0, and a diagnostic is issued.

Availability

Section 6, released version 2-13.

Diagnostics

  [KGLAT:Latitude v out-of-range]
{} [KGLAT:String too short for latitude]

See Also

GGSFMT, GGSLDA and KGLONG.

Examples

Geographical text strings


KGLLRG

This page uses frames, but your browser doesn't support them.


KGLLRG

SUBROUTINE KGLLRG (ARR2IN, NLONG, NLAT, ARR2OUT, NXVAR, NYVAR)

Purpose

to convert a long/lat data array to an equivalent x-y grid.

Argument(s)

ARR2IN | REAL 2-D array | Data values over a long/lat grid
NLONG | INTEGER expression | Number of columns in ARR2IN
NLAT | INTEGER expression | Number of rows in ARR2IN
ARR2OUT | REAL 2-D array | To receive data values over a regular grid
NXVAR,NYVAR | INTEGER expressions | Number of columns and rows in ARR2OUT

Description

KGLLRG converts a grid of equally-spaced longitudes and latitudes to an equivalent x-y grid. ARR2IN is array dimensioned NLONG*NLAT. If NLONG or NLAT is less than 2, an error message is written and nothing is drawn.

By default, contours are drawn over the area specifies by GGREGN. After GGREGN(RLONG1,RLAT1,RLONG2,RLAT2), the respective steps in longitude and latitude are:

  (RLONG2 - RLONG1) / (NLONG - 1) and (RLAT2 - RLAT1) / (NLAT - 1)

GGEQLL can be called to explicitly set the contour region. If the plotting region is a circle set by GGRGCL, it is advisable to use GGEQLL.

ARR2OUT is an array of NXVAR equally-spaced x values and NYVAR equally-spaced y values. Each element of ARR2OUT refers to the data value at the equivalent (x,y) point. If the point does not fall within the limits specified by GGREGN, its element is set to the current no-data value.

KGLLRG uses the scales on the current picture, and should therefore be called after GGNEW.

Availability

Section 6, released version 2-13.

Diagnostics

  [KGLLRG:Array too small]
{} [KGLLRG:Latitudinal step too large]
{} [KGLLRG:Longitudinal step too large]
{} [KGLLRG:Scales have not been set]

See Also

GGEQLL, GGREGN and QGSCAL.

Examples

Drawing contours
Contouring on a projected region


KGLLXY

This page uses frames, but your browser doesn't support them.


KGLLXY

SUBROUTINE KGLLXY (RLONG, RLAT, VARX, VARY)

Purpose

to convert from long/lat to x-y coordinates.

Argument(s)

RLONG | REAL expression | Longitude of a point
RLAT | REAL expression | Latitude of a point
VARX | REAL variable | To receive x coordinate
VARY | REAL variable | To receive y coordinate

Description

KGLLXY converts a point on the current map, specified by longitude and latitude, into its equivalent position in the underlying Cartesian scales. RLONG and RLAT should be in the standard form for input coordinates (latitudes must be between -90.0 and +90.0, longitudes may take any value, which is interpreted as its equivalent between -180.0 and +180.0).

The values returned in VARX and VARY are in units of the underlying Cartesian scales.

If the projection of the coordinate (RLONG, RLAT) lies at infinity (eg. the Poles on a Mercator projection), an error message is issued and no-data values are returned.

For most azimuthal projections (not equidistant or equal-area ), if (RLONG, RLAT) is too far from the centre of projection it cannot be plotted. If this is the case, KGLLXY issues an error message and returns no-data values.

Availability

Section 6, released version 2-12.

Diagnostics

  [KGLLXY:Latitude v out-of-range]
{} [KGLLXY:Point(s) unavailable on current projection]
{} [KGLLXY:Scales have not been set]

See Also

EQSCAL, KGXYLL and KXYXY.

Examples

Line styles and labels
Clipping against a rectangle
Controlling the graticule
Bearing and distance
Shortest distance between two points
Hedgehog plots


KGLONG

This page uses frames, but your browser doesn't support them.


KGLONG

SUBROUTINE KGLONG (RLONG, STR, LENVAR)

Purpose

to convert a REAL longitude to the equivalent text string.

Argument(s)

RLONG | REAL expression | Longitudinal value
STR | STRING variable | To receive text string
LENVAR | INTEGER variable | To receive number of characters used in STR

Description

KGLONG converts a longitudinal value into the equivalent CHARACTER representation. RLONG gives the longitude in degrees East of Greenwich. If RLONG is negative, its absolute value gives the position West of Greenwich.

By default, STR is in the form, (d)dd° mm'ss''C, where,

  ddd gives degrees and is a positive INTEGER in the range 0 to 180;

 mm gives minutes and is a positive INTEGER in the range 0 to 59;

 ss gives seconds and is a positive REAL in the range 0.0 <= ss < 60.0, with 1 decimal place;

 C is a single character - "E" for East, "W" for West.
By default, if mm=0 and ss=0.0, they are not written.

Examples of the possible values of STR are as follows:

RLONG | value of STR
90.0 | 90° E
-45.5 | 45°30' W
-209.22 | 150°13'12.0''E
-0.001 | 0°0'3.6'' W
0.0 | 0° E
The format of STR is affected by GGSFMT/GGSLDA, but not by FIGFMT.

LENVAR is set to the number of significant characters in STR.

If STR is not long enough to contain the converted longitude, SIMPLEPLOT places as much of the longitude as possible into STR and issues a diagnostic.

  [KGLONG:String too short for longitude]

Availability

Section 6, released version 2-13.

See Also

GGSFMT, GGSLDA and KGLAT.

Examples

Geographical text strings


KGXYLL

This page uses frames, but your browser doesn't support them.


KGXYLL

SUBROUTINE KGXYLL (X, Y, VARLNG, VARLAT)

Purpose

to convert from x-y to long/lat coordinates.

Argument(s)

X | REAL expression | x coordinate of point
Y | REAL expression | y coordinate of point
VARLNG | REAL variable | To receive equivalent longitude
VARLAT | REAL variable | To receive equivalent latitude

Description

X and Y can take any value in units of the underlying Cartesian plotting scales. The point (X,Y) need not lie on the current map. It must, however, refer to a point which would be drawn if the region specified by GGREGN is large enough.

If (X,Y) refers to a point which cannot be drawn, a diagnostic is issued and no-data values are returned.

VARLNG is returned in the range -180.0 to +180.0, and VARLAT is in the range -90.0 to +90.0.

Availability

Section 6, released version 2-12.

Diagnostics

  [KGXYLL:No coordinates for requested x-y point x,y]
{} [KGXYLL:Scales have not been set]

See Also

EQSCAL, KGLLXY and KXYXY.

Examples

Converting between (x,y) and long/lat coordinates


KISXY

This page uses frames, but your browser doesn't support them.


KISXY

SUBROUTINE KISXY (X3, Y3, Z3, X2, Y2)

Purpose

to convert a point (x,y,z) on a surface picture to its 2-D equivalent.

Argument(s)

X3,Y3,Z3 | REAL expressions | Coordinates of a point, specified in 3-D picture units
X2,Y2 | REAL variables | To receive the coordinates of a point specified in internal 2-D picture units

Description

On surface pictures, user coordinates are described by 3 variables (x,y,z) but the underlying coordinate system remains Cartesian and can be addressed as such. Any of the general plotting subroutines can be used by first converting a 3-D user coordinate into a 2-D picture coordinate using KISXY.

If any of the isometric coordinates, X3, Y3 or Z3, is equal to the current no-data value, then both X2 and Y2 are set to this no-data value. All plotting subroutines ignore coordinates for which either ordinate corresponds to the no-data value.

Availability

Section 2, released version 2-11.

Diagnostics

  (Isometric coordinates inappropriate)1

See Also

BRKNPT, CP7LB, CP7PT, CP7XC, CP7YC, JOINPT, MARKPT and NODATA.

Examples

Isometric drawing


KNUMB

This page uses frames, but your browser doesn't support them.


KNUMB

SUBROUTINE KNUMB (IVAL, STR)

Purpose

to convert an INTEGER value to the equivalent text string.

Argument(s)

IVAL | INTEGER expression | Value to be converted
STR | STRING variable | To receive text string

Description

KNUMB converts an INTEGER value into the equivalent CHARACTER representation.

STR should be declared as a CHARACTER variable long enough to represent IVAL. should be sufficient for most INTEGERs. If STR is not long enough to contain the converted INTEGER, SIMPLEPLOT places as much of the number as possible into STR and issues a diagnostic.

sdiag{

  1{String too short for INTEGER}
}

Availability

Section 1, released version 2-11.

See Also

CP7LB, CP7PT, CP7XC, CP7YC and KREAL.

Examples

Conversion on waterfall charts
Geographical text strings
Marking individual points
Bundled attributes
Raster emulation and the painter's algorithm


KPOSXY

This page uses frames, but your browser doesn't support them.


KPOSXY

SUBROUTINE KPOSXY (ITYPE, VCHAR, HCHAR, VCMS, VJST, HCMS, HJST)

Purpose

to convert a descriptive position into page coordinates.

Argument(s)

ITYPE | INTEGER expression | Intended use of position
VCHAR | CHARACTER*1 | Vertical position of area
HCHAR | CHARACTER*1 | Horizontal position of area
VCMS | REAL variable | To receive vertical coordinate
VJST | CHARACTER*1 variable | To receive vertical justification
HCMS | REAL variable | To receive horizontal coordinate
HJST | CHARACTER*1 variable | To receive horizontal justification

ITYPE | Text usage
1 | Titles
2 | Key or captions areas

Description

KPOSXY returns coordinates (HCMS,VCMS) and justification (VJST,HJST) corresponding to a descriptive position (VCHAR,HCHAR) on the current page.

HCMS and VCMS describe the horizontal and vertical page coordinates of a title, key or caption area, specified in centimetres relative to the bottom left-hand corner of the current SIMPLEPLOT page HCHAR, VCHAR, HJST and VJST are all single characters, whose possible interpretations are listed in Appendix T of the SIMPLEPLOT Supplement.

KPOSXY can only return sensible values for a picture or page which has already been started. If no picture/page has been started, or if ITYPE is not equal to 1 or 2, a diagnostic is issued and VCMS, HCMS, VJST, and HJST are returned with values 0.0, 0.0, "B", and "L" respectively.

Availability

Section plus, released version 2-12.

Diagnostics

  (KPOSXY argument invalid)1
 (KPOSXY called in wrong state)1

See Also

DEFPOS and KXYXY.


KPVXY

This page uses frames, but your browser doesn't support them.


KPVXY

SUBROUTINE KPVXY (X3, Y3, Z3, X2, Y2)

Purpose

to convert a point (x,y,z) on a perspective picture to its 2-D equivalent.

Argument(s)

X3,Y3,Z3 | REAL expressions | Coordinates of a point, specified in 3-D picture units
X2,Y2 | REAL variables | To receive the coordinates of a point specified in internal 2-D picture units

Description

On perspective pictures, user coordinates are described by three variables (x,y,z) but the underlying coordinate system remains Cartesian and can be addressed as such. Any of the general plotting subroutines can be used by first converting a 3-D user coordinate into a 2-D picture coordinate using KPVXY.

If any of the perspective coordinates, X3, Y3 or Z3, is equal to the current no-data value, then both X2 and Y2 are set to this no-data value. All plotting subroutines ignore coordinates for which either ordinate corresponds to the no-data value.

Availability

Section 5, released version 2-11.

Diagnostics

  (Perspective coordinates inappropriate)1

See Also

BRKNPT, CP7PT, JOINPT, NODATA, PVDRAW and PVSCAL.


KREAL

This page uses frames, but your browser doesn't support them.


KREAL

SUBROUTINE KREAL (RVAL, STR)

Purpose

to convert a REAL value to the equivalent text string.

Argument(s)

RVAL | REAL expression | Value to be converted
STR | STRING variable | To receive text string

Description

KREAL converts any REAL value into the equivalent CHARACTER representation.

STR should be declared as a CHARACTER variable long enough to represent RVAL. Most REAL numbers can be represented by a relatively small number of characters but, if STR is declared as a variable, it should be able to accommodate even exceptionally large or small values. If STR is not long enough to contain the converted REAL, SIMPLEPLOT places as much of the number as possible into STR and issues a diagnostic.

sdiag{

  1{String too short for REAL}
}

Availability

Section 1, released version 2-11.

See Also

CP7LB, CP7PT, CP7XC, CP7YC, FIGFMT and KNUMB.

Examples

Labelling contour curves
Text in pictures - alternative character sets


KSCALE

This page uses frames, but your browser doesn't support them.


KSCALE

SUBROUTINE KSCALE (START, STOP, DIV, VSTART, VSTOP, VDIV)

Purpose

to convert scale limits such that they span whole subdivisions.

Argument(s)

START | REAL expression | Value required near beginning of scale
STOP | REAL expression | Value required near end of scale
DIV | REAL expression | Subdivision required
VSTART | REAL variable | To receive value to use at beginning of scale
VSTOP | REAL variable | To receive value to use at end of scale
VDIV | REAL variable | To receive subdivision value to use

Description

KSCALE takes the values START, STOP and DIV which describe the scale requirements, and converts them to VSTART, VSTOP and VDIV which satisfy the requirements and, if necessary, extend the scales to coincide with whole multiples of the scale subdivision. KSCALE does not affect scales directly, but it computes values which may be used to set scales or axis subdivisions as arguments for SCALES, EQSCAL, AXSBDV.

DIV is the requested subdivision; if DIV is zero, SIMPLEPLOT allocates a subdivision size related to the range of the scale, and its value is placed in VDIV; if DIV is non-zero, VDIV is given the magnitude of DIV and the sign of STOP-START.

If the physical length of an axis is too small for annotations at all multiples of VDIV to fit, the annotation interval is a multiple of VDIV; KSCALE knows nothing about axis length.

If START=STOP, then VSTART, VSTOP and VDIV are returned with values START, STOP and DIV respectively.

Availability

Section 1, released version 2-12.

See Also

AXSBDV and SCALES.

Examples

Sequences on contour maps
Labelling contour curves
Waterfall charts and cascade surface pictures
Multiple scales on an x-y plot
Controlling shading patterns on shaded surfaces


KTREAL

This page uses frames, but your browser doesn't support them.


KTREAL

SUBROUTINE KTREAL (UNITS, IVAL1, IVAL2, RVAL, VALUE)

Purpose

to convert time-date value from external time-date triple to internal REAL form.

Argument(s)

UNITS | CHARACTER*1 | "T"ime, "M"onths or "W"eeks
IVAL1 | INTEGER expression | Hours or years
IVAL2 | INTEGER expression | Minutes, months or week number
RVAL | REAL expression | Seconds, date or day of week
VALUE | REAL variable | To receive encoded time-date value

UNITS | IVAL1 | IVAL2 | RVAL
"T"ime | Hours | Minutes | Seconds
"M"onths | Year | Month | Date
"W"eeks | Year | Week no. | Day of week

Description

Time and date based data can be converted from the values of the three components (hours, minutes, seconds or year, month, day) to a single REAL value which can be used by SIMPLEPLOT for plotting coordinates and for setting picture scales. KTREAL converts such values.

Years in this century can be abbreviated to two digits - any year in the range 0- 99 received by KTREAL has 1900 added to it in the conversion.

Days of the week are interpreted such that RVAL=1.0 represents Sunday, 2.0 represents Monday, etc.

Values encoded by KTREAL should be used first to set up suitable plotting scales, and then as coordinates for plotting.

If {UNITSis not equal to"T"}, "M" or "W", then VALUE is returned with value 0.0.

Availability

Section plus, released version 2-12.

Diagnostics

  (Invalid time-date units: X)1

See Also

KTSTR and KTTRI.

Examples

Tinted bar chart


KTSTR

This page uses frames, but your browser doesn't support them.


KTSTR

SUBROUTINE KTSTR (COMPNT, VALUE, STR, LENGTH)

Purpose

to convert one component of encoded time-date value from internal REAL to text.

Argument(s)

COMPNT | CHARACTER*2 | Time-date component
VALUE | REAL expression | Encoded time-date
STR | STRING variable | To receive text string
LENGTH | INTEGER variable | To receive number of characters used in STR

COMPNT | Meaning | COMPNT | Meaning
"YE" | Year | "DE" | Days elapsed
"MO" | Month | "HO" | Hour
"WE" | Week number | "MI" | Minute
"DM" | Day of the month | "SE" | Second
"DW" | Day of the week |  |

Description

KTSTR converts the internal REAL representation of a time-date value into the text representation of one component of time-date annotations.

VALUE is interpreted as an encoded time-date, and STR is set to the text representation of the component of VALUE identified by COMPNT.

If COMPNT does not correspond to these values, a diagnostic is issued. In this case, or if VALUE corresponds to the current no-data value, STR is returned as " " and LENGTH=0.

The format of STR is affected by TIMFMT, TIMLDA and TIMLDC. LENGTH is set to the number of significant characters in STR.

If STR is not long enough to contain the converted component, SIMPLEPLOT places as much of the component as possible into STR and issues a diagnostic.

Availability

Section plus, released version 2-12.

Diagnostics

  (Invalid component type: XX)1
 (String too short for component)1

See Also

KTREAL, KTTRI, TIMFMT, TIMLDA and TIMLDC.


KTTRI

This page uses frames, but your browser doesn't support them.


KTTRI

SUBROUTINE KTTRI (UNITS, VALUE, IVAL1, IVAL2, RVAL)

Purpose

to convert encoded time-date value from internal REAL to external triple form.

Argument(s)

UNITS | CHARACTER*1 | "T"ime, "M"onths or "W"eeks
VALUE | REAL expression | Encoded time-date value
IVAL1 | INTEGER variable | To receive hours or years
IVAL2 | INTEGER variable | To receive minutes, months or week number
RVAL | REAL variable | To receive seconds, date or day of week

UNITS | IVAL1 | IVAL2 | RVAL
"T"ime | Hours | Minutes | Seconds
"M"onths | Year | Month | Date
"W"eeks | Year | Week no. | Day of week

Description

KTTRI converts time-date data encoded into a REAL value into the external form consisting of three components.

Days of the week are interpreted such that RVAL=1.0 represents Sunday, 2.0 represents Monday, etc.

If {UNITSis not equal to"T"}, "M" or "W", then IVAL1, IVAL2 and RVAL are returned with values 0, 0 and 0.0 respectively.

Availability

Section plus, released version 2-12.

Diagnostics

  (Invalid time-date units: X)1

See Also

KTREAL and KTSTR.


KVXYD

This page uses frames, but your browser doesn't support them.


KVXYD

SUBROUTINE KVXYD (X3D, Y3D, Z3D, VARX2D, VARY2D, VARDEP)

Purpose

to convert a three-dimensional point (x,y,z) to its two-dimensional equivalent plus depth.

Argument(s)

X3D,Y3D,Z3D | REAL expressions | Coordinates of a point, specified in 3-D units before transformation
VARX2D,VARY2D | REAL variables | To receive the coordinates of the projected point
VARDEP | REAL variable | To receive the distance of the projected point from the Viewing Plane

Description

KVXYD converts a three-dimensional point (X3D,Y3D,Z3D) to (VARX2D,VARY2D), the equivalent 2-D coordinates once transformation and projection have been applied. VARX2D and VARY2D are measured in terms of the underlying SIMPLEPLOT scales.

KVXYD also calculates the value of the depth, VARDEP. By default, if a point is within the limits specified by VS3DLM, its depth lies in the range -sqrt(3) <= VARDEP <= sqrt(3). Points between the Origin and the Viewing Position have negative depths - the greater the depth, the further away a point is from the Viewing Position.

The permissible range of depths is altered following a call to VSFULL.

Availability

Section 7, released version 2-13.

See Also

QVDPLM, QVSCAL, VS3DLM, VSFULL, VSVRTP and VSVXYZ.

Examples

Annotation


KWZVAL

This page uses frames, but your browser doesn't support them.


KWZVAL

SUBROUTINE KWZVAL (ICURVE, ZVAL, RVAL)

Purpose

to convert a z value on a waterfall chart to its equivalent in terms of the label scale.

Argument(s)

ICURVE | INTEGER expression | Number of relevant curve
ZVAL | REAL expression | Coordinate of a point specified in data units
RVAL | REAL variable | Equivalent value in units of the label scale

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. There is an underlying numerical scale controlling the label scale. KWZVAL delivers the value in the underlying scale corresponding to a given data value ZVAL in a particular curve ICURVE.

The returned value, RVAL, can be used as an ordinate to the general point-by-point plotting subroutines to augment a waterfall chart.

KWZVAL can not return a sensible value if no waterfall scales exist. If WFCHT, WFDRAW or WFZSCL has not been called already, a diagnostic is issued and the current no-data value returned in RVAL.

If ZVAL is equal to the current no-data value, RVAL is set to the no-data value.

Availability

Section plus, released version 2-13.

Diagnostics

  (No current waterfall Z scale)1

See Also

QWZSCL, WFCHT, WFDRAW and WFZSCL.

Examples

Conversion on waterfall charts
Controlling the scales on waterfall charts


KXYXY

This page uses frames, but your browser doesn't support them.


KXYXY

SUBROUTINE KXYXY (ICODE1, XIN, YIN, ICODE2, XOUT, YOUT)

Purpose

to convert coordinates of a point to other units.

Argument(s)

ICODE1 | INTEGER expression | Code for units of (xin,yin)
XIN | REAL expression | x coordinate of a point
YIN | REAL expression | y coordinate of a point
ICODE2 | INTEGER expression | Code for units of (xout,yout)
XOUT | REAL variable | To receive x coordinate
YOUT | REAL variable | To receive y coordinate
ICODE | Units | Origin
0 | Device units | Bottom left of device plotting area
1 | Pixels | Bottom left of device plotting area
2 | Centimetres | Bottom left of device plotting area
3 | Centimetres | Bottom left of SIMPLEPLOT page
4 | Normalized units | Bottom left of SIMPLEPLOT page
5 | User coordinates | User origin of picture/graph

Description

A point on the plotting area can be described by a Cartesian pair specified in various different units; KXYXY converts the coordinates of a point between any of the units specified by ICODE. Normalized units (code 4) are in the range 0.0 to 1.0 on the SIMPLEPLOT page.

If the code for either pair is between 0 and 2, the device must have been opened. For codes 3 and 4, a SIMPLEPLOT page must have been started, and for code 5 a new picture must have been started. If KXYXY is called when the relevant information is not available, a diagnostic is issued.

If ICODE1=5, and XIN or YIN is equal to the current no-data value, XOUT and YOUT are set to no-data, and will be ignored by plotting subroutines.

The orientation of the SIMPLEPLOT page and the device are not necessarily the same. The orientation of (x,y) for codes 3- 5 can be affected by calls to FITPAG, GROUP, PAGE and PAGVW.

Availability

Section plus, released version 2-11.

Diagnostics

  (KXYXY not viable)1

See Also

KISXY, KPVXY and NODATA.


KZRG

This page uses frames, but your browser doesn't support them.


KZRG

SUBROUTINE KZRG (XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS, Z2ARR, NX, NY)

Purpose

to generate a regular grid of values from ungridded (x,y,z) coordinates.

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements
Z2ARR | REAL 2-D array | To receive values over a regular grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

KZRG converts the ungridded data held in ZARR into a regular grid of values in the array Z2ARR(NX,NY) using interpolation. Before using KZRG, the element array I2ARR(NNODES,NELEMS) must be set up; ZORDER or ZORDEN can be used for this purpose.

In this way, surface pictures of randomly positioned (x,y,z) coordinates can be drawn either directly by ZSURF, or indirectly by KZRG followed by RGSURF. As ZSURF is very slow, conversion to a regular grid for surface pictures is advisable whenever there is sufficient storage available for the extra array Z2ARR.

KZZRG is more efficient than KZRG.

Availability

Section 2, released version 2-11.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1

See Also

KZZRG.


KZZRG

This page uses frames, but your browser doesn't support them.


KZZRG

SUBROUTINE KZZRG (XARR, YARR, ZARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS, Z2ARR, NX, NY)

Purpose

to generate a regular grid of values from ungridded (x,y,z) coordinates.

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements
Z2ARR | REAL 2-D array | To receive values over a regular grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

KZZRG converts the ungridded data held in ZARR into a regular grid of values in the array Z2ARR(NX,NY) using interpolation.

Before using KZZRG, the element array I2ARR(NNODES,NELEMS) and the neighbour array N2ARR(NNODES,NELEMS) must be set up; ZZORDR or ZZORDN can be used for this purpose.

In this way, surface pictures of randomly positioned (x,y,z) coordinates can be drawn either directly by ZZSURF, or indirectly by KZZRG and RGSURF. As ZZSURF can be slow, conversion to a regular grid for surface pictures is advisable whenever there is sufficient storage available for the extra array Z2ARR.

KZZRG is more efficient than KZRG.

Availability

Section 2, released version 2-11.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1

See Also

KZRG.

Examples

Surface pictures of ungridded data
Contour maps of ungridded data


LABANG

This page uses frames, but your browser doesn't support them.


LABANG

SUBROUTINE LABANG (IDEGS)

Purpose

to specify the angle of labels drawn by CP7LB, CP7XC or CP7YC.

Argument(s)

IDEGS INTEGER expression Angle in degrees

Description

By default, the labels drawn by CP7LB, CP7XC or CP7YC are drawn horizontally. LABANG specifies the angle at which they are to be drawn.

The effect of LABANG on hardware text varies according to capabilities of the device. For example, if text can only be drawn horizontally, each character will be staggered to emulate the effect of angled text.

Availability

Section 4, released version 2-6.

Default

LABANG(0) restores the default.

See Also

LABJST, CP7LB, CP7XC and CP7YC.

Examples

Labelling Points


LABCV

This page uses frames, but your browser doesn't support them.


LABCV

SUBROUTINE LABCV (XARR, YARR, NARR, LTYPE, CAP, NCAP)

SUBROUTINE LABCV7 (XARR, YARR, NARR, LTYPE, CAP)

Purpose

to draw a labelled curve.

Argument(s)

XARR,YARR | REAL arrays | Coordinates of points, in units of the plotting scales
NARR | INTEGER expression | Number of points
LTYPE | INTEGER expression | Type of broken line pattern
CAP | STRING expression | Label for curve
NCAP | INTEGER expression | Number of characters in CAP

Description

Using broken line pattern LTYPE, LABCV/LABCV7 draws [1] the curve corresponding to (XARR(1), YARR(1)), (XARR(2), YARR(2)), ... (XARR(NARR), YARR(NARR)). The label, CAP, is drawn [2] along the curve. By default, the label is vertically centred on the curve, and left justified to point (XARR(NARR/2),YARR(NARR/2)). An alternative justification and position can be specified by CVLBJS/CVLBPS.

The base of each letter is parallel to the curve and the label is drawn in the direction of the curve. If the label is too long, it is truncated. LABCV7 will not interpret embedded commands specified by STRLV.

A closed curve can be obtained by using data in which XARR(NARR)=XARR(1) and YARR(NARR)=YARR(1). The curve is drawn through all points which are not equal to the current no-data value. If fewer than 2 points are valid, a diagnostic is issued and nothing is drawn.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness). If LTYPE=-999, all the bundled line-drawing attributes of the current pen are used.

Availability

Section 4, released version 2-13.

Diagnostics

  (Data curve exceeds scales)2
 (Insufficient number of valid points)1
 (Requested point unavailable)1
 (Text truncated on curve label)2

See Also

BRKNCV, BUNLPR, CLIPLV, CVLBJS and CVLBPS.

Examples

Labelling contour curves
Labelled curves
Storing and retrieving curve coordinates


LABJST

This page uses frames, but your browser doesn't support them.


LABJST

SUBROUTINE LABJST (VJUST, HJUST)

Purpose

to specify the justification of labels drawn by CP7LB, CP7LBM, CP7XC or CP7YC.

Argument(s)

VJUST | CHARACTER*1 | Vertical justification of label
HJUST | CHARACTER*1 | Horizontal justification of label

VJUST | Vertical justification
"D" | Default
"T" | Top of letters
"C" | Halfway between "T" and "B"
"B" | Bottom of letters (not including descenders)
HJUST | Horizontal justification
"D" | Default
"L" | At the left (beginning) of the label
"C" | Halfway between "L" and "R"
"R" | At the right (end) of the label
"P" | Preceding the label
"F" | Following the label

Description

By default, the labels drawn by CP7LB, CP7XC and CP7YC are positioned such that the bottom, left-hand corner of the label coincides with the specified (x,y) coordinates. Labels drawn by CP7LBM CAPLBM are justified "B"ottom "P"receding by default. LABJST specifies the position of the label relative to the point.

This (x,y) point is interpreted as one of nine possible positions described by combinations of values of VJUST and HJUST.

Availability

Section 4, released version 2-6.

Default

LABJST("D","D") restores the default.

See Also

LABANG, CP7LB, CP7XC and CP7YC.

Examples

Conversion on waterfall charts
Underlying Cartesian scales
Controlling the scales on waterfall charts


LIMEXC

This page uses frames, but your browser doesn't support them.


LIMEXC

SUBROUTINE LIMEXC (DARR, NARR, VARMIN, VARMAX)

Purpose

to find the minimum and maximum values in a REAL array.

Argument(s)

DARR | REAL array | Data values
NARR | INTEGER expression | Number of elements of DARR to be examined
VARMIN | REAL variable | To receive minimum value
VARMAX | REAL variable | To receive maximum value

Description

LIMEXC (LIMits EXClusive) searches through array DARR from DARR(1) to DARR(NARR) and sets VARMIN to the minimum value, VARMAX to the maximum value.

VARMIN and VARMAX must be the names of variables because LIMEXC assigns values to them.

LIMEXC ignores any values which are equal to the current no-data value.

Availability

Section 1, released before version 2-5.

See Also

LIMINC and NODATA.

Examples

Shaded contour map
Multiple scales on an x-y plot
Controlling shading patterns on shaded surfaces
3-D bar chart


LIMIDX

This page uses frames, but your browser doesn't support them.


LIMIDX

SUBROUTINE LIMIDX (DARR, NARR, IMIN, IMAX)

Purpose

to find the position of each of the minimum and maximum values of a REAL array.

Argument(s)

DARR | REAL array | Data values
NARR | INTEGER expression | Number of elements in DARR to be examined
IMIN | INTEGER variable | Position of minimum value
IMAX | INTEGER variable | Position of maximum value

Description

LIMIDX finds the position of the minimum and maximum values in a REAL array. If the array is indexed from 1 to NARR, DARR(IMIN) is the lowest value in the array, and DARR(IMAX) is the highest value.

If DARR contains more than one value equal to the minimum or maximum, IMIN or IMAX refer to the position of the first occurrence.

LIMIDX ignores any values which are equal to the current no-data value. If all the values correspond to the current no-data value, IMIN and IMAX are set to zero.

Availability

Section 1, released version 2-13.

See Also

LIMEXC, LIMINC and NODATA.

Examples

Storing and retrieving curve coordinates


LIMINC

This page uses frames, but your browser doesn't support them.


LIMINC

SUBROUTINE LIMINC (DARR, NARR, VARMIN, VARMAX)

Purpose

to find the minimum and maximum values in a REAL array.

Argument(s)

DARR | REAL array | Data values
NARR | INTEGER expression | Number of elements of DARR to be examined
VARMIN | REAL variable | To be reset to minimum value
VARMAX | REAL variable | To be reset to maximum value

Description

LIMINC (LIMits INClusive) searches through array DARR from DARR(1) to DARR(NARR). If the minimum is less than the existing value of VARMIN, VARMIN is set to the minimum value; otherwise, VARMIN is left unaltered. If the maximum is greater than the existing value of VARMAX, VARMAX is set to the maximum value; otherwise VARMAX is left unaltered.

VARMIN and VARMAX must be the names of variables which have already been given values, because LIMINC uses the existing values, and may assign new values to them.

LIMINC ignores any values which are equal to the current no-data value.

Availability

Section 1, released before version 2-5.

See Also

LIMEXC and NODATA.

Examples

Controlling shading patterns on shaded surfaces


LIMSFN

This page uses frames, but your browser doesn't support them.


LIMSFN

SUBROUTINE LIMSFN (FUNXY, VARMIN, VARMAX)

Purpose

to find the range of function values to be used for contours of a 3-D function z=f(x,y).

Argument(s)

FUNXY | function name | REAL function with two REAL arguments, also declared in an EXTERNAL statement
VARMIN,VARMAX | REAL variables | To receive values of limits

Description

LIMSFN evaluates the function FUNXY, which must be a REAL function with two REAL arguments, at every point which would be used for plotting the function, and sets VARMIN and VARMAX to the minimum and maximum respectively.

The values returned by LIMSFN can be affected by the range of the independent variables (see FNAREA), and the underlying grid used to calculate the function (see SFMESH).

Availability

Section 2, released version 2-11.

See Also

FNAREA, SFLIMS and SFMESH.

Examples

Labelling contour curves


LINEKY

This page uses frames, but your browser doesn't support them.


LINEKY

SUBROUTINE LINEKY (LTYPE, CAP, NCAP)

SUBROUTINE LINEK7 (LTYPE, CAP)

Purpose

to draw an annotated sample of a broken line pattern in a key.

Argument(s)

LTYPE | INTEGER expression | Type of broken line pattern
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

LINEKY/LINEK7 inserts a key to a broken line pattern (as used by the BRKN* subroutines) in the next empty space in the current key or caption area (defined by DEFKEY/DEFCAP or selected by RESNXT). A sample of the broken line pattern is drawn [1] on the left of the entry; the caption, CAP, is drawn [2] alongside the sample.

If line style has been requested as a bundled attribute, LTYPE overrides the line style of the bundle (but not colour or thickness) unless

LTYPE=-999 which indicates that all the bundled line-drawing attributes of the current pen are to be used.

REAL and INTEGER values can be converted to text strings using the conversion subroutines, KREAL and KNUMB respectively.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Caption truncated)2
 (Key/caption area full)2
 (No active key/caption area)2

See Also

ADDJST, BLNKKY, BOTHK7, BUNLPR, DEFKEY and LINSET.

Examples

Sequences on contour maps
Thickened lines


LINSET

This page uses frames, but your browser doesn't support them.


LINSET

SUBROUTINE LINSET (ISET)

Purpose

to specify an alternative source of broken line patterns.

Argument(s)

ISET INTEGER expression Broken line pattern source

ISET | Pattern source
0 | Hardware/firmware broken lines (if available)
1 | Device independent software broken line patterns

Description

For efficient operation and clarity, SIMPLEPLOT is set up to draw some broken lines on pictures using device hardware or firmware if possible. LINSET can be used to select an alternative source of patterned lines.

Hardware broken line patterns are chosen to correspond as much as possible to the SIMPLEPLOT software line patterns.

Availability

Section 1, released version 2-8.

Default

LINSET(0) restores the default.

See Also

CHSET, FFSET, MKSET and SHSET.


List of Messages

This page uses frames, but your browser doesn't support them.


List of Messages

Diagnostic Messages

SIMPLEPLOT issues diagnostic messages to provide information about progress,
to warn of omissions and also for fatal errors.
For example, a typical execution of a SIMPLEPLOT program which draws two
pictures on separate pages, might produce the following diagnostics:
(SIMPLEPLOT Mark 2-15(000)F)
(DEVICE OPENED: LN03R)
(END OF PICTURE)
(END OF PICTURE)
(DEVICE CLOSED)
(SIMPLEPLOT CLOSED)
Please refer to Appendix H of the SIMPLEPLOT Reference manual for host specific
information about how to control the destination of diagnostic messages.

List of Messages

The following list includes all diagnostic messages which can be
produced by SIMPLEPLOT-PLUS functions at 2-15, and an explanation of why they
occur.
The number given after each message indicates the type of message, and
therefore at which diagnostic level it is output.

(>999 omissions, no active page)1 | more than 999 omissions have accumulated before a page has been started
(>999 omissions, no active picture)1 | more than 999 omissions have accumulated before a picture has been started
(>9999 incomplete page tasks)1 | more than 9999 incomplete page tasks have accumulated by the end of the page
(>9999 incomplete picture tasks)1 | more than 9999 incomplete picture tasks have accumulated by the end of the picture
(**x,y**)2 | the (x,y) coordinates of a point to which plotting has been omitted
(**x1,y1,x2,y2**)2 | the coordinates of two points, (x1,y1) and (x2,y2), between which plotting has been omitted
(axlban not satisfied)2 | AXLBAN has been called to request a specific location for axis annotation but, due to layout restrictions, annotations have been placed elsewhere
(axlbtm cancelled: XX)1 | AXLBTM has been called to restore the default components for time-date axis annotations
(axsbtk not satisfied)2 | AXSBTK has been called to request a specific location for axis tick marks but, due to layout restrictions, they have been placed elsewhere
(BAR CHART OMITTED: INVALID DIMENSIONS)1 | the 2-D data array has not been given valid dimensions
(BAR CHART OMITTED: NULL RANGE)1 | all the values in the Z array used to draw a 3-D bar chart have been set to the base z level. This means that the z scale cannot be set.
(Caption truncated)2 | the caption added to a key or caption area (using ADDCP7, BLNKKY, BOTHK7, FILLK7, LINEK7, MARKK7, PUTCP7 or SHDEK7) is too long to fit within the predefined area and has been truncated
(Circle exceeds scales)2 | the extent of a circle (drawn using BRKNCL, DRAWCL or SHDECL) exceeds the current picture scales
(Constant data: default Z scale used)1 | WFCHT or the first call of WFDRAW has a set of equal z values. This means that there is no data to set the scales for each waterfall curve
(Contour curve not all in range)2 | the extent of a contour curve (drawn using *CONT) exceeds the current picture scales
(Contour map not all in range)2 | the extent of a set of contour curves (drawn using *CNTS) exceeds the current picture scales
(Curve storage empty)1 | QCURVE has been called when there are no stored curve coordinates to be retrieved
(Data curve exceeds scales)2 | the extent of a curve (drawn using BRKNAR, BRKNCV, DRAWAR, DRAWCV, LABCV7, SHDEA2, SHDEAR, SHDEC2 or SHDECV) exceeds the current picture scales
(DATA GRID NOT MONOTONIC)1 | a tartan grid (x, x-y or y) has been specified, or SQZVAL has been called, with non-monotonic values
(DEVICE CLOSED)1 | device closed following either a call to ENDPLT to terminate plotting or to DEVNO/DEVNAM or REDRAW to open another device
(DEVICE OPENED: device name)1 | communication with the selected device (for input or output) has started
(Element boundary not all in range)2 | the extent of an element boundary (drawn using ZEDGE or ZZEDGE) exceeds the current picture scales
(Element not all in range)2 | the extent of a single element (drawn using ZELEM) exceeds the current picture scales
(Elements not all in range)2 | the extent of a set of elements (drawn using ZELEMS or ZZELMS) exceeds the current picture scales
(END OF GROUP)1 | GROUP has been called and the specified configuration has been completed. The next picture will be on a new SIMPLEPLOT page
(END OF PICTURE)1 | the current picture has been completed either by an explicit call (ENDPIC, ENDPAG or ENDPLT) or because a new picture has been started
(External character file not available)1 | the Hershey file cannot be opened
(External character file unreadable)1 | the Hershey file was opened but is unreadable
(Failed to read LOGO file)1 | BOXPG2 has been unable to read an encoded LOGO file
(Function curve exceeds scales)2 | the extent of a function curve (drawn using BRKNFN, DRAWFN or SHDEFN) exceeds the current picture scales
(Graphics input failed)1 | GETXY has been called and graphics input has failed
(Graphics input not available)1 | GETXY has been called when the currently selected device has no graphics input
(Grouping discontinued)1 | GROUP has been called to restore the default picture configuration (one per page)
(HISTOGRAM OMITTED: ZERO INTERVAL)1 | HSTPLT or HSTCUM has been called with DX=0
(Inappropriate axis type: XX)2 | one of the axis functions has been called with an inappropriate type of axis. It is not possible to use the function with CHAXIS=XX
(Inappropriate component type: XX)2 | TIMLDA has been called with an inappropriate type of component, COMPNT=XX
(Insufficient number of valid points)1 | LABCV7 has been called with an array which contains fewer than two valid points (ie. not equal to the current no-data value)
(INVALID ARGUMENT: ARRAY SIZE)1 | an array has not been given valid dimensions
(Invalid axis type: XX)1 | one of the axis functions has been called with an invalid type of axis. CHAXIS=XX is not a recognized axis type.
(Invalid component type: XX)1 | KTSTR, TIMFMT, TIMLDA or TIMLDC has been called with an unrecognized component, COMPNT=XX
(Invalid external character file)1 | the Hershey file was opened and is readable but is not in the correct format
(Invalid shading area: XX)1 | ISSPAT has been called with an unrecognized type of shading area, CHFACE=XX
(Invalid time-date units: X)1 | one of the time-date functions (KTREAL, KTTRI) has been called with an unrecognizable units descriptor, UNITS=X
(Isometric axes inappropriate)2 | isometric axes have been requested (using ISAXD7) when the current picture is not a surface picture
(Isometric coordinates inappropriate)1 | KISXY has been called to convert isometric coordinates when the current picture is not a surface picture
(Key/caption area full)2 | there is no room for the caption/key entry (requested by ADDCP7, BLNKKY, BOTHK7, FILLK7, LINEK7, MARKK7 or SHDEK7)
(Key/caption attempted with no page)2 | a key or caption area has been defined (using DEFCAP or DEFKEY with ITYPE=1 or 2, MPK7H, MPK7V or SHKEYS) before a page has been started
(Key/caption attempted with no picture)2 | a key or caption area has been defined using picture-related positional descriptors before a picture has been started
(Key/caption height reduced)2 | the size of a key or caption area (defined using DEFCAP, DEFKEY, MPK7H, MPK7V or SHKEYS) has been reduced due to restrictions of the current page and/or picture size and the size of text
(Key/caption width reduced)2 | the width of a key or caption area (defined using DEFCAP, DEFKEY, MPK7H, MPK7V or SHKEYS) has been reduced due to restrictions of the current page and/or picture size and the size of text
(kposxy argument invalid)1 | KPOSXY has been called with an unrecognized argument
(kposxy called in wrong state)1 | KPOSXY has been called before a page or picture has been started
(kxyxy NOT VIABLE)1 | KXYXY has been called before the device is opened or before a page/picture has been started
(MAP KEY OMITTED: CONSTANT DATA)1 | a map key has been requested (using MPK7H or MPK7V) with the limits of the data range equal, and no z-scale specified elsewhere (by SFZSCL)
(MAP KEY OMITTED: NULL RANGE)1 | a map key has been requested (using MPK7H or MPK7V) which would cover a null z range
(Margin modified)1 | the margin requested (using MARGIN) has had to be modified due to layout constraints
(Maximum no. of keys/captions reached)2 | the number of blanked or reserved key and caption areas (defined using DEFCAP or DEFKEY with ITYPE=2 or 3, or MPK7H, MPK7V or SHKEYS) has exceeded the maximum of 9
(Maximum no. of masked areas reached)1 | the number of masked areas used for individual marker symbols and text strings has exceeded the maximum of 50; subsequent marked areas take the place of the oldest areas and overdrawing of these areas may occur
(METAFILE ABANDONED: WRITE FAILURE)1 | a metafile has been set up but while the completed page was being copied, a WRITE failure occurred
(moveon cancelled)1 | MOVEON has been called to restore the default picture positioning
(n omissions, no active page)1 | n omissions have accumulated before a page has been started
(n omissions, no active picture)1 | n omissions have accumulated before a picture has been started
(No active key/caption area)2 | there is no defined area for the caption/key entry (requested by ADDCP7, BLNKKY, BOTHK7, FILLK7, LINEK7, MARKK7, PUTCP7 or SHDEK7)
(No current waterfall Z scale)1 | KWZVAL or QWZSCL has been called when there are no existing waterfall scales
(No room for key/caption area)2 | The space available for a key or caption area (defined using DEFCAP, DEFKEY, MPK7H, MPK7V or SHKEYS) is not even sufficient for one line of text containing only one character
(No. of incomplete page tasks= n)1 | n incomplete page tasks have accumulated by the end of the page
(No. of incomplete picture tasks= n)1 | n incomplete picture tasks have accumulated by the end of the picture
(None of title will fit in)2 | The space available for a title is not wide enough for a single character
(Null box, nothing drawn)2 | the extent of a box (drawn using BRKNBX, DRAWBX or SHDEBX) exceeds the current picture scales
(ownfil ignored: invalid argument)1 | OWNFIL has been called with an unrecognized argument
(page cancelled)1 | PAGE has been called to restore the default page size
(PAGE COPIED TO METAFILE)1 | a metafile has been set up and the completed page drawn by the program has been copied to the metafile
(page ignored: invalid argument)1 | PAGE has been called with a negative argument
(PAGE OMITTED FROM METAFILE)1 | a metafile has been set up but the page drawn by the program has been omitted because the program called MTMISS during the production of the page
(Page Size modified)1 | the page size requested (using PAGE) has had to be modified due to layout constraints
(pagpos cancelled)1 | PAGPOS has been called to restore the default page positioning
(Parametric function exceeds scales)2 | the extent of a parametric function curve (drawn using BRKNPR, DRAWPR or SHDEPR) exceeds the current picture scales
(Periphery modified)1 | the size of the periphery requested (using PERIPH) has had to be modified due to layout constraints
(picpos cancelled)1 | PICPOS has been called to restore the default picture positioning
(picrst: argument invalid)1 | PICRST has been called with an argument outside the valid range 1 to 10
(picsav: argument invalid)1 | PICSAV has been called with an argument outside the valid range 1 to 10
(picsiz cancelled)1 | PICSIZ has been called to restore the default picture size
(picsiz ignored: invalid argument)1 | PICSIZ has been called with a negative argument
(Picture Position modified)1 | the picture position requested (using PICPOS) has had to be modified due to layout constraints
(Picture Size modified)1 | the picture size requested (using PICSIZ) has had to be modified due to layout constraints
(PIE CHART OMITTED: -VE AND +VE VALUES)1 | PIECHT has been called with both negative and positive segment values
(PIE CHART OMITTED: LESS THAN 1 SEGMENT)1 | a pie chart has been requested with NSEGS < 1
(POLAR OMITTED: ZERO RADIUS)1 | POLAR/POLAR7 has been called with zero value for maximum radial scale value
(qibrfl invalid dimensions)1 | The z array for QIBRFL has been allocated invalid dimensions
(Range >=100; linear scale used)1 | SCALES, XSCALE or YSCALE has been called for a normal probability scale which exceeds 100
(Range through 0; linear scale used)1 | SCALES, XSCALE or YSCALE has been called for a non-linear scale which includes zero
(Read failed on external character file)1 | the Hershey file has been read from but a subsequent read has failed
(REDRAWING ABANDONED)1 | a function other than MTDRAW or MTCLOS has been called and interrupted the line-by-line redrawing process
(Requested point unavailable)1 | CVLBPS has been specified a reference point for LABCV7 which cannot be used
(resnxt ignored, area not reserved)1 | RESNXT has been called specifying a position for which there is no corresponding reserved area
(Shaded contour not all in range)2 | the extent of a shaded contour region (drawn using *SHAD) exceeds the current picture scales
(Shaded contours not all in range)2 | the extent of a shaded contour map (drawn using *SHDS) exceeds the current picture scales
(Shading lines too fragmented)1 | if a very complex shaded area is to be filled using software shading, circumstances can arise when the shading line must be broken up into more pieces than can be stored; subsequent shading of the area is abandoned
(SIMPLEPLOT CLOSED)1 | is issued by ENDPLT and indicates that all activity by SIMPLEPLOT has finished and all associated files have been closed
(SIMPLEPLOT Mark 2-15(nnn)X)1 | indicates that SIMPLEPLOT is in use; it is issued by the first call to any SIMPLEPLOT function except DIAGLV with ILEVEL=0, OWNFIL and IOCHAN
(START OF GROUP)1 | GROUP has been called and the next picture will be the first in a group formation
(String too short for component)1 | KTSTR has been called with a string variable which is not large enough to hold the converted time or date
(String too short for INTEGER)1 | KNUMB has been called with a string variable which is not large enough to hold the converted
(String too short for REAL)1 | KREAL has been called with a string variable which is not large enough to hold the converted number
(Surface label inappropriate)2 | SFLAB has been called when there is no current z scale (for a contour map or a surface picture) to be labelled
(Surface not all within picture)2 | the extent of a surface (drawn using *SURF exceeds the current picture scales
(SURFACE OMITTED: CONSTANT DATA)1 | surface drawing has been attempted for an array containing values which are all the same
(Surface section not all in range)2 | the extent of a cross-sectional curve (drawn using *CUT) exceeds the current picture scales
(Symbol clipped)2 | a marker symbol (drawn by CP7PT, MARKAR, MARKCV or MARKPT) has exceeded the current clipping window (the picture or the page)
(Symbol spills over boundary)2 | a marker symbol (drawn by CP7PT, MARKAR, MARKCV or MARKPT) is centred on the edge of the current picture
(Text clipped)2 | a caption (drawn by CP7LB, CP7PT, CP7XC or CP7YC) or title has exceeded the current clipping window (the picture or the page)
(Text label unavailable: XX)2 | TIMFMT has been called with an unrecognized type of label, LBTYPE=XX
(Text omitted: too many lines)2 | the key/caption area is not full but the caption/key entry contains more lines than can be accommodated (ie. the caption includes active escape sequences to insert new lines)
(Text truncated on curve label)2 | the label of a labelled curve would have extended beyond the end of the curve and has therefore been truncated
(Title attempted with no page)2 | a title has been requested before a page has been started
(Title attempted with no picture)2 | a title has been requested using picture-related positional descriptors before a picture has been started
(Title omitted below bottom)2 | an additional title has been requested towards the bottom of the SIMPLEPLOT page but there is not enough room beneath the existing line(s) of title
(Title too tall)2 | The space available for a title is not even sufficient for one line of text
(Title truncated)2 | a title is too long to fit within the limiting area (which depends on the position) and has been truncated
(Too many axis intervals: default used)1 | the axis interval (specified using AXSBDV) is less than 1.0-4* axis range
(Too many contours: default used)1 | SFEQZ or SFEQZD has been called to specify a contour interval less than 1.0-4* contour range
(Too many points in waterfall curve)1 | WFCHT or WFDRAW has been called with more than 1024 points
(Too many vectors in shading)1 | occurs only when a very complex shaded area contains too many points; subsequent shading of the area is abandoned
(Too many waterfall curves on picture)1 | WFDRAW has been called when the picture already contains number of curves specified by WFNCVS
(Triangulation data duplicated)1 | data cannot be triangulated because of duplicated data (eg. (x,y,z1) and (x,y,z2))
(Triangulation failed)1 | triangulation process has failed; try again with ZZORDN to normalize data first
(Triangulation impossible)1 | data cannot be triangulated, eg. points are co-linear
(Triangulation incomplete)1 | maximum size of element array is too small to store all elements
(Unclosed shaded area)1 | SHSTOP has been called but you have tried to shade an incomplete shape
(USER SHADING ABANDONED)1 | SHSTRT has been called but the user-defined shape has not been completed before a function has been called which is not one of those allowed for drawing the shape
(v1 requested)2 | the value, v1, of a layout parameter requested (by MARGIN or PERIPH) which has had to be modified
(v2 used)2 | the modified value, v2, of a layout parameter requested (by MARGIN or PERIPH) which is actually used
(Waterfall chart not all in range)2 | the extent of a waterfall chart (drawn using WFCHT) exceeds the current picture scales
(Waterfall curve not all in range)2 | the extent of a waterfall curve (drawn using WFDRAW) exceeds the current picture scales
(WATERFALL OMITTED: INVALID DIMENSIONS)1 | 2-D array has not been given valid dimensions
(x1 y1 requested)2 | the values, x1 and y1, of layout parameters requested (by PAGE, PICPOS or PICSIZ) which have had to be modified
(x2 y2 used)2 | the modified values, x2 and y2, of layout parameters requested (by PAGE, PICPOS or PICSIZ) which are actually used


MARGDV

This page uses frames, but your browser doesn't support them.


MARGDV

SUBROUTINE MARGDV (PICTYP)

Purpose

to specify the distribution of picture margins.

Argument(s)

PICTYP | CHARACTER*1 | Type of picture
PICTYP | Picture type | Margin distribution
"D" | Default | Large left-hand and bottom, small right-hand and top
"C" | Cartesian (x-y) plot | Large on "XC" and "YC" axis sides, small on other
"B" | Bar chart | Large on "LB" and "NB" axis sides, small on other
"I" | Isometric picture | Large on "XI", "YI", "ZI" axis sides, small on other
"W" | Waterfall chart | Large on "LW" and "NW" axis sides, small on other
"O" | Other, eg. polar plot, pie chart | Equal distribution on all sides

Description

By default, margins are distributed such that the gap allocated to the right-hand side and the top is approximately the size of a single character, and the larger residue is allocated to the left-hand side and bottom.

MARGDV specifies that, while PICMRG is not active, subsequent new pictures should be set up with the margins distributed to suit the specified type of picture.

MARGDV must be called before the new picture to which it refers is started.

Availability

Section 1, released version 2-12.

Default

MARGDV("D") restores the default.

See Also

MARGIN and PICMRG.

Examples

Bar chart and pie chart


MARGIN

This page uses frames, but your browser doesn't support them.


MARGIN

SUBROUTINE MARGIN (CMS)

Purpose

to specify the overall size of the margin around individual pictures.

Argument(s)

CMS REAL expression Width of margin (in cms)

Description

MARGIN specifies the size of the margin around individual pictures.

If MARGIN has not been called, SIMPLEPLOT calculates the following using the current minimum size of text:

  SPACE = 5*character width + 3.3*character height
The maximum default value of SPACE is 2cm.

SIMPLEPLOT imposes minimum and maximum values on picture margins. The maximum size allowed for a margin is half the smaller dimension of the picture, and the minimum margin is 0.01cm.

The distribution of the overall margin depends on the current text size. If the total margin size is less than 2 text characters, it is distributed equally on all sides of the picture. With larger margins, the gap allocated to the top and right-hand side is approximately the size of 1 character, and the larger residue is allocated to the bottom and left-hand side. TEXTSZ, TEXTMN and CHSET change text characteristics which can indirectly change margin sizes.

MARGIN overrides PICMRG and vice versa.

Availability

Section 1, released before version 2-5.

Diagnostics

  (v1 requested)2
 (v2 used)2
 (Margin modified)1

Default

Calling MARGIN with a negative argument restores the default.

See Also

MARGDV and PICMRG.


MARKAR

This page uses frames, but your browser doesn't support them.


MARKAR

SUBROUTINE MARKAR (X1, DX, DARR, NARR, MKTYPE, NSTEP)

Purpose

to draw marker symbols at a set of values held in an array.

Argument(s)

X1 | REAL expression | Value of independent variable for plotting DARR(1)
DX | REAL expression | Independent variable interval between function values
DARR | REAL array | Function values for plotting
NARR | INTEGER expression | Number of points
MKTYPE | INTEGER expression | Type of marker symbol
NSTEP | INTEGER expression | Interval between points marked

Description

MARKAR draws [3] a set of marker symbols, MKTYPE, centred on the following points:
  (X1,DARR(1)), (X1+(NSTEP*DX),DARR(1+NSTEP)),

 (X1+(2*NSTEP*DX),DARR(1+(2*NSTEP))),...
These points represent a set of values from a single array where the array elements hold function values yi=f(xi) and xi=x1+(i-1)dx.

By default, all drawing is restricted by the limits of the picture scales; marker symbols can spill over the edge of a picture but the coordinates at the centre of the symbol must not exceed these limits. If coordinates exceed these limits, the symbol is omitted and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-11.

Diagnostics

  (Symbol clipped)2
 (Symbol spills over boundary)2

See Also

BRKNAR, CLIPLV, MARKCV, MKSIZE, and SHDEAR.

Examples

A simple polar plot


MARKCV

This page uses frames, but your browser doesn't support them.


MARKCV

SUBROUTINE MARKCV (XARR, YARR, NARR, MKTYPE, NSTEP)

Purpose

to draw marker symbols at a set of coordinates.

Argument(s)

XARR,YARR | REAL arrays | Coordinates of points, in units of the plotting scales
NARR | INTEGER expression | Number of points
MKTYPE | INTEGER expression | Type of marker symbol
NSTEP | INTEGER expression | Interval between points marked

Description

MARKCV draws [3] a set of marker symbols, MKTYPE, centred on the following points:

  (XARR(1), YARR(1)),

 (XARR(1+NSTEP), YARR(1+NSTEP)), ...

 (XARR(1+(2*NSTEP)), YARR(1+(2*NSTEP))), ...

By default, all drawing is restricted by the limits of the picture scales; marker symbols can spill over the edge of a picture but the coordinates at the centre of the symbol must not exceed these limits. If coordinates exceed these limits, the symbol is omitted and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released version 2-11.

Diagnostics

  (Symbol clipped)2
 (Symbol spills over boundary)2

See Also

BRKNCV, CLIPLV, MARKAR, MKSIZE and SHDECV.

Examples

A scattergram


MARKKY

This page uses frames, but your browser doesn't support them.


MARKKY

SUBROUTINE MARKKY (MKTYPE, CAP, NCAP)

SUBROUTINE MARKK7 (MKTYPE, CAP)

Purpose

to draw an annotated sample of a marker symbol in a key.

Argument(s)

MKTYPE | INTEGER expression | Type of marker symbol
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

MARKKY/MARKK7 inserts a key to a marker symbol (as used by MARK*) in the next empty space in the current key or caption area (defined by DEFKEY/DEFCAP or selected by RESNXT).

A sample of the marker symbol, MKTYPE, is drawn [3] on the left of the entry; the caption, CAP, is drawn [2] alongside the sample.

REAL and INTEGER values can be converted to text strings using the conversion subroutines, KREAL and KNUMB respectively.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Caption truncated)2
 (Key/caption area full)2
 (No active key/caption area)2

See Also

ADDJST, BLNKKY, BOTHK7, DEFKEY, LINEK7 and MKSET.


MARKPT

This page uses frames, but your browser doesn't support them.


MARKPT

SUBROUTINE MARKPT (X, Y, MKTYPE)

Purpose

to draw a marker symbol at a specified point.

Argument(s)

X,Y | REAL expressions | Coordinates of a point specified in units of the plotting scales
MKTYPE | INTEGER expression | Type of marker symbol

Description

MARKPT draws [3] a marker symbol, MKTYPE, centred on the point (x,y). After drawing the specified symbol, MARKPT leaves the pen at the centre of the symbol to allow a line to be drawn from the symbol to another point by a succeeding call of BRKNPT/JOINPT. For example, a sequence of symbols joined by straight lines can be drawn by repeating the following calls for a sequence of points:

BRKNPT(X,Y,LTYPE)

MARKPT(X,Y,MKTYPE)

BREAK should be called between MARKPT and a succeeding call of BRKNPT/JOINPT if a line is not required joining symbol and point.

The point (x,y) is specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; marker symbols can spill over the edge of a picture but the coordinates at the centre of the symbol must not exceed these limits. If coordinates exceed these limits, the symbol is omitted and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Symbol clipped)2
 (Symbol spills over boundary)2

See Also

BREAK, BRKNPT, CLIPLV, CP7PT, MKMASK, MKSIZE, MARKCV and MARKAR.

Examples

BUSS's Collection Of Markers
Converting between (x,y) and long/lat coordinates
Marking individual points
Marker symbols
Bundled attributes


MKMASK

This page uses frames, but your browser doesn't support them.


MKMASK

SUBROUTINE MKMASK (TORF)

Purpose

to specify whether marker symbols are to be masked.

Argument(s)

TORF LOGICAL expression Whether symbols are to be masked

Description

By default, SIMPLEPLOT draws anywhere within the page unless specific areas have been reserved for specific activities. MKMASK specifies that the area immediately around marker symbols is to be masked from any further drawing.

After a call of MKMASK(.TRUE.) symbols are masked; this means that the symbols themselves look no different from unmasked symbols, but any subsequent drawing over the symbols is omitted as it crosses each symbol.

The limit to the number of masked areas which can be used for individual symbols and text strings is 50. When this limit is reached a diagnostic is issued and subsequent masked areas take the place of the oldest areas and overdrawing of these areas may occur.

Availability

Section 4, released version 2-11.

Diagnostics

  (Maximum no. of masked areas reached)1

Default

MKMASK(.FALSE.) restores the default.

See Also

CHMASK.

Examples

Clipping against a rectangle
Marker symbols


MKSET

This page uses frames, but your browser doesn't support them.


MKSET

SUBROUTINE MKSET (ISET)

Purpose

to specify an alternative source of marker symbols.

Argument(s)

ISET INTEGER expression Marker symbol source

ISET | Marker symbol source
0 | Hardware/firmware symbols (if available)
1 | Device independent software symbols
2 | Hershey Odd Shapes
3 | Hershey Graph Markers
4 | Hershey Solid Graph Markers
5 | Hershey Map Symbols
6 | Hershey Small Astronomy
7 | Hershey Astronomy
8 | Hershey Zodiac

Description

For efficient operation and clarity, SIMPLEPLOT is set up to mark points on pictures using symbols from device hardware or firmware wherever possible. MKSET can be used to select an alternative source of symbols.

Individual Hershey symbols can also be selected by MKTYPE greater than 16. The Hershey symbols are only available with SIMPLEPLOT-PLUS.

Availability

Section 1, released version 2-8.

Default

MKSET(0) restores the default.

See Also

CHSET, FFSET, LINSET and SHSET.


MKSIZE

This page uses frames, but your browser doesn't support them.


MKSIZE

SUBROUTINE MKSIZE (CMS)

Purpose

to specify a fixed size of marker symbols independent of text size.

Argument(s)

CMS REAL expression Size of marker symbols (in cms)

Description

By default, the size of marker symbols is controlled by the same mechanism that controls the size of text. That is to say, TEXTSZ, TEXTMN and TEXTMG normally affect the size of both characters and symbols. MKSIZE specifies the size of marker symbols which is independent of text size.

Availability

Section 4, released version 2-11.

Default

MKSIZE(0.0) restores the default.

See Also

TEXTSZ, TEXTMG.

Examples

Marker symbols


MOVEON

This page uses frames, but your browser doesn't support them.


MOVEON

SUBROUTINE MOVEON (TORF)

Purpose

to specify whether to superimpose pictures.

Argument(s)

TORF LOGICAL expression Whether next picture is to be drawn in the next clear space

Description

By default, each new picture is automatically positioned either in the next clear space within the group or on a new SIMPLEPLOT page. MOVEON(.FALSE.) suspends the automatic moving on for each new picture, therefore allowing pictures to be superimposed. PICPOS also suspends automatic picture layout.

MOVEON(.TRUE.) restores the normal state, with each new picture starting on a clear space.

Availability

Section 4, released version 2-8.

Diagnostics

  (MOVEON cancelled)1

Default

MOVEON(.TRUE.) restores the default.

See Also

ENDPAG, ENDPIC and PICPOS.


MPKYH

This page uses frames, but your browser doesn't support them.


MPKYH

SUBROUTINE MPKYH (VCHAR, HCHAR, ZLEFT, ZRIGHT, CAP, NCAP)

SUBROUTINE MPK7H (VCHAR, HCHAR, ZLEFT, ZRIGHT, CAP)

Purpose

to draw a complete horizontal key to a shaded contour map.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of key
HCHAR | CHARACTER*1 | Horizontal position of key
ZLEFT | REAL expression | z value at left of key
ZRIGHT | REAL expression | z value at right of key
CAP | STRING expression | Single caption for key
NCAP | INTEGER expression | Number of characters in CAP

Description

MPK7H/MPKYH draws a complete key to the current shading patterns that represent the data range ZLEFT to ZRIGHT. Samples of the patterns are drawn side-by-side, with the key numbers above. CAP provides a heading which is, by default, centred at the top of the key (see ADDJST). A box is drawn [1] around the key unless cancelled by BOXKY.

The key area is associated only with the current picture/page but is masked to prevent overdrawing. To avoid the key being overdrawn by other plotting, it is best to call MPK7H after NEWPIC but before the main picture is drawn. The order of key entries can be reversed by interchanging ZLEFT with ZRIGHT. The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section plus, released version 2-10.

Diagnostics

  (Key/caption attempted with no page)2
 (Key/caption attempted with no picture)2
 (Key/caption height reduced)2
 (Key/caption width reduced)2
 (MAP KEY OMITTED: CONSTANT DATA)1
 (MAP KEY OMITTED: NULL RANGE)1
 (Maximum no. of keys/captions reached)2
 (No room for key/caption area)2

See Also

ADDJST, BOXKY, MPK7V, MPTYPE, SFEQZ, SFEQZD, SFLIMS, SFZSCL, SHPATT and SQ*.

Examples

Shaded contour map
Shaded contour maps and surfaces


MPKYV

This page uses frames, but your browser doesn't support them.


MPKYV

SUBROUTINE MPKYV (VCHAR, HCHAR, ZTOP, ZBOTTM, CAP, NCAP)

SUBROUTINE MPK7V (VCHAR, HCHAR, ZTOP, ZBOTTM, CAP)

Purpose

to draw a complete vertical key to a shaded contour map.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of key
HCHAR | CHARACTER*1 | Horizontal position of key
ZTOP | REAL expression | z value at top of key
ZBOTTM | REAL expression | z value at bottom of key
CAP | STRING expression | Single caption for key
NCAP | INTEGER expression | Number of characters in CAP

Description

MPK7V/MPKYV draws a complete key to the current shading patterns that represent the data range ZTOP to ZBOTTM. Samples of the patterns are drawn in a vertical list, with the key numbers alongside. CAP provides a heading which is, by default, centred at the top of the key (see ADDJST). A box is drawn [1] around the key unless cancelled by BOXKY.

The key area is associated only with the current picture/page but is masked to prevent overdrawing. To avoid the key being overdrawn by other plotting, it is best to call MPK7V after NEWPIC but before the main picture is drawn. The order of key entries can be reversed by interchanging ZTOP with ZBOTTM. The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section plus, released version 2-10.

Diagnostics

  (Key/caption attempted with no page)2
 (Key/caption attempted with no picture)2
 (Key/caption height reduced)2
 (Key/caption width reduced)2
 (MAP KEY OMITTED: CONSTANT DATA)1
 (MAP KEY OMITTED: NULL RANGE)1
 (Maximum no. of keys/captions reached)2
 (No room for key/caption area)2

See Also

ADDJST, BOXKY, MPK7H, MPTYPE, SFEQZ, SFEQZD, SFLIMS, SFZSCL, SHPATT and SQPEN.

Examples

Scales on contour maps and map keys
Controlling shading patterns on shaded surfaces


MPTYPE

This page uses frames, but your browser doesn't support them.


MPTYPE

SUBROUTINE MPTYPE (IMETHD)

Purpose

to specify the shading method used for shaded contour maps and map keys.

Argument(s)

IMETHD INTEGER expression Shading method

IMETHD | Shading method used
1 | Generalized shading between contour curves
2 | Fast area-fill showing data configuration
3 | Fast area-fill with interpolation

Description

SIMPLEPLOT offers two separate approaches to drawing shaded contour maps from data which represents a function of two variables, z=f(x,y). By default, the *SHDS subroutines perform generalized shading between contour curves but SIMPLEPLOT can also use an alternative technique known as fast area-fill. MPTYPE specifies which technique is used.

In fast area-fill pictures, the picture is built up by working out a data value for each part of the picture in order to allocate a fill character; method 2 uses the value of the nearest data point, and method 3 interpolates between surrounding data points.

MPTYPE also determines the shading method used for map key samples (see MPK7H and MPK7V). MPTYPE has no effect on raster pictures (see RASTER) but it may be necessary to call MPTYPE with IMETHD=3 to draw a key to the patterns used on a raster picture.

Availability

Section plus, released version 2-10.

Default

MPTYPE(1) restores the default.

See Also

FFSET, FFSIZE, MPK7H, MPK7V, RASTER and *SHDS.

Examples

Controlling shading patterns on shaded surfaces


MTCLOS

This page uses frames, but your browser doesn't support them.


MTCLOS

SUBROUTINE MTCLOS

Purpose

to terminate metafile redrawing.

Argument(s)

None

Description

A SIMPLEPLOT metafile can be completely redrawn by calling REDRAW or it can be drawn line-by-line using the following procedure:
  1. Open the metafile.
  2. Initiate redrawing by mtopen().
  3. For each line of the metafile:
    • Read line from metafile.
    • Redraw line by MTDRAW(STR).
  4. Terminate redrawing by mtclos().
If any SIMPLEPLOT subroutine other than MTDRAW is called after MTOPEN but before MTCLOS, redrawing is abandoned and a diagnostic is issued.

This method of redrawing may be useful when the metafile is on a remote system from which it can be read line by line under program control.

Availability

Section plus, released version 2-11.

Diagnostics

  (REDRAWING ABANDONED)1

See Also

MTDRAW and MTOPEN.


MTCOMM

This page uses frames, but your browser doesn't support them.


MTCOMM

SUBROUTINE MTCOMM (STR)

Purpose

to output a comment line to a metafile.

Argument(s)

STR STRING expression Metafile comment line

Description

A comment line can be inserted into a metafile as it is being written by calling MTCOMM with the comment as argument. In the metafile, the comment is preceded by the identifying letters COMM and all such lines are ignored when the metafile is redrawn using REDRAW.

The maximum length of comments is 75 characters; if a longer string is passed to MTCOMM, it is truncated.

Availability

Section plus, released version 2-11.

See Also

MTFILE.


MTDRAW

This page uses frames, but your browser doesn't support them.


MTDRAW

SUBROUTINE MTDRAW (STR)

Purpose

to redraw a single line of a SIMPLEPLOT metafile.

Argument(s)

STR STRING expression A single line from a SIMPLEPLOT metafile

Description

A SIMPLEPLOT metafile can be completely redrawn by calling REDRAW or it can be drawn line-by-line using the following procedure:
  1. Open the metafile.
  2. Initiate redrawing by mtopen().
  3. For each line of the metafile:
    • Read line from metafile.
    • Redraw line by MTDRAW(STR).
  4. Terminate redrawing by mtclos().
If any SIMPLEPLOT subroutine other than MTDRAW is called after MTOPEN but before MTCLOS, redrawing is abandoned and a diagnostic is issued.

This method of redrawing may be useful when the metafile is on a remote system from which it can be read line by line under program control.

Availability

Section plus, released version 2-11.

Diagnostics

  (REDRAWING ABANDONED)1

See Also

MTCLOS, MTOPEN and REDRAW.


MTFILE

This page uses frames, but your browser doesn't support them.


MTFILE

SUBROUTINE MTFILE (ICHAN)

Purpose

to request metafile output.

Argument(s)

ICHAN INTEGER expression FORTRAN channel number

Description

A SIMPLEPLOT metafile, containing a complete reproducible record of all the graphics output from a program, can be created at the same time as output to a graphics device, using the following procedure:
  1. Open a FORTRAN I/O channel for formatted, serial output.
  2. Call MTFILE specifying this I/O channel, before any plotting occurs (ie. before a graphics device is opened).
  3. :
  4. Close FORTRAN I/O channel.
The metafile information is directed to a scratch file as the program runs. As each SIMPLEPLOT page is completed the whole scratch file is copied to ICHAN and deleted, and a diagnostic message is issued. Thus, if a program terminates prematurely for any reason, the metafile only contains details of complete pages.

The metafile produced in this way reflects the limitations of the device, such that the drawing and positioning of text may only be acceptable when reproduced on the device to which it is related, or on one which is less limited. When producing a metafile to be used on different devices, it is advisable to relate it to the device with the lowest resolution. Device independent metafiles can be produced using the META device driver.

If a program which uses MTFILE is run with the META device driver, the output file nominated by ICHAN takes precedence over the file usually selected by the META device driver.

A call of MTFILE with ICHAN < 0, terminates metafile output.

Availability

Section plus, released version 2-8.

Diagnostics

  (PAGE COPIED TO METAFILE)1

See Also

MTCOMM, MTMISS and MTONLY.


MTMISS

This page uses frames, but your browser doesn't support them.


MTMISS

SUBROUTINE MTMISS

Purpose

to omit the current SIMPLEPLOT page from a metafile.

Argument(s)

None

Description

If SIMPLEPLOT metafile output has been requested, the metafile details of each SIMPLEPLOT page are first written to a scratch file, and only transferred to the metafile when the page is finished; a complete page can be omitted from the metafile by calling MTMISS anywhere in the program between the start and end of the page. When a page is finished, but omitted from an active metafile as a result of calling MTMISS, a diagnostic is issued.

Please note that the end of a page occurs when ENDPAG or ENDPLT is called, or, in the absence of such calls, when a new page is started by a new picture subroutine.

With MTFILE and MTMISS it is possible to adapt a program to enable it to inquire whether or not it should save pages in metafiles. Separation of pages into individual files can be achieved by using CLOSE and OPEN between page ends, to change the file addressed by ICHAN.

Availability

Section plus, released version 2-8.

Diagnostics

  (PAGE OMITTED FROM METAFILE)1

See Also

MTFILE and MTONLY.


MTONLY

This page uses frames, but your browser doesn't support them.


MTONLY

SUBROUTINE MTONLY

Purpose

to specify that only metafile output is to be produced.

Argument(s)

None

Description

By default, metafile output is produced simultaneously with device output. MTONLY suppresses the device output.

A SIMPLEPLOT metafile, containing a complete reproducible record of all the graphics output from a program, can be created without simultaneous output to a graphics device, using the following procedure:

  1. Open a FORTRAN I/O channel for formatted, serial output.
  2. Call MTFILE specifying this I/O channel, before any plotting occurs (ie. before a graphics device is opened).
  3. Call MTONLY to suppress output to the selected graphics device.
  4. :
  5. Call SIMPLEPLOT plotting subroutines.
  6. :
  7. Call ENDPLT.
  8. Close FORTRAN I/O channel.

Availability

Section plus, released version 2-8.

Default

The default cannot be restored except by initsp().

See Also

MTFILE and MTMISS.


MTOPEN

This page uses frames, but your browser doesn't support them.


MTOPEN

SUBROUTINE MTOPEN

Purpose

to start metafile redrawing.

Argument(s)

None

Description

A SIMPLEPLOT metafile can be completely redrawn by calling REDRAW or it can be drawn line-by-line using the following procedure:
  1. Open the metafile.
  2. Initiate redrawing by mtopen().
  3. For each line of the metafile:
    • Read line from metafile.
    • Redraw line by MTDRAW(STR).
  4. Terminate redrawing by mtclos().
If any SIMPLEPLOT subroutine other than MTDRAW is called after MTOPEN but before MTCLOS, redrawing is abandoned and a diagnostic is issued.

This method of redrawing may be useful when the metafile is on a remote system from which it can be read line by line under program control.

Availability

Section plus, released version 2-11.

Diagnostics

  (REDRAWING ABANDONED)1

See Also

MTCLOS and MTDRAW.


NEWPAG

This page uses frames, but your browser doesn't support them.


NEWPAG

SUBROUTINE NEWPAG

Purpose

to start a new SIMPLEPLOT page without starting a new picture.

Argument(s)

None

Description

By default, a new SIMPLEPLOT page is created when the first picture is started, but sometimes it is desirable to draw page titles etc before any part of a picture has been drawn. NEWPAG starts a new SIMPLEPLOT page without starting a picture. Descriptive positions relative to the picture and user coordinates are undefined until a new picture is started.

NEWPAG finishes the current page and, if BOXPAG has been called to specify boxed pages, the box is drawn [1] when the new page is started.

Availability

Section plus, released version 2-12.

Diagnostics

  (DEVICE OPENED: device name)1

See Also

ENDPAG and NEWPIC.

Examples

Controlling shading patterns on shaded surfaces


NEWPIC

This page uses frames, but your browser doesn't support them.


NEWPIC

SUBROUTINE NEWPIC

Purpose

to start a new 2-D picture without drawing an axis framework.

Argument(s)

None

Description

NEWPIC is used to start a new picture when a standard axis framework is not required. NEWPIC is a graphics subroutine but, by default, does no drawing. If one of the BOX* subroutines has been called to generate boxes around pictures, groups or pages, these are drawn [1] when a new picture is started.

NEWPIC does not reset the underlying coordinate system. If EQSCAL has not been called, COORDS controls the type of new picture. If EQSCAL is active, each new picture is started with the units specified by EQSCAL regardless of any call of COORDS; once a picture has been started, COORDS can be called to change coordinate interpretation.

Availability

Section 1, released before version 2-5.

See Also

AXES7, COORDS, EQSCAL, ISNEW, NEWPAG and POLAR7.

Examples

Shaded contour map
Geographical text strings
Alternative formats of text strings
Marking individual points
3-D pie chart
Fine control of a 3-D pie chart
The Greek alphabet
Storing and retrieving curve coordinates
Waterfall charts and pen usage
Waterfall charts drawn curve-by-curve
Controlling the scales on waterfall charts
Fine control of waterfall charts


NODATA

This page uses frames, but your browser doesn't support them.


NODATA

SUBROUTINE NODATA (RVAL)

Purpose

to specify the REAL value to be used to represent no-data values.

Argument(s)

RVAL REAL expression No-data value

Description

SIMPLEPLOT interprets a single REAL value in plotting data as a no-data value; by default, this value is -1.0E20. NODATA specifies an alternative value to be used for this purpose.

Before SIMPLEPLOT draws anything, it checks whether one of the coordinates of the item to be drawn corresponds to the no-data value. If any ordinate is missing, the item is not drawn. As this check occurs at a fairly low level within SIMPLEPLOT, it affects everything which is drawn at user coordinates - marker symbols, text captions, curves joining points, boxes, axes, etc - any item which can be positioned.

It is advisable to have RVAL so far outside the normal range of data values that no problems arise but, awkward circumstances may arise. For example, if the no-data value is set to zero and an axis is required at either x=0.0 or y=0.0, no axis will be drawn if NODATA is called before the axis is drawn. In this case, NODATA should be called to set the no-data value to zero after the axes have been drawn but before the data are plotted. This solution will not resolve the case where the no-data value has been set for missing y coordinates but x coordinates also correspond to the missing value. In this case, points with legitimate y values but missing x values, will not be drawn.

Availability

Section 1, released version 2-10.

Default

NODATA(-1.0E20) restores the default.

See Also

QNODAT.

Examples

Missing data
Shaded surface pictures


ONEPEN

This page uses frames, but your browser doesn't support them.


ONEPEN

SUBROUTINE ONEPEN (IPEN)

Purpose

to draw the colours of a multi-coloured picture separately.

Argument(s)

IPEN INTEGER expression Pen number

Description

If a multi-coloured picture is to be plotted for a printed document, it may be necessary to plot each colour on a separate page. When a program has been developed to produce the desired effect with the colours together, it can then be adapted to plot the same picture with only the parts drawn by pen number IPEN by inserting a call of ONEPEN(IPEN) before the first plotting call; Pen 1 is then used for all plotting directed to Pen IPEN, and plotting directed to other pens is omitted.

Please note that, by default, colour is the only line-drawing attribute associated with pens, and that the distinction between pens depends on the capabilities of the current device. If BUNLPR has be called to specify other attributes to be associated with pens for drawing lines, the correspondence between colour and pens may be lost and ONEPEN can no longer produce true `colour separations'.

Availability

Section 1, released version 2-5.

See Also

BUNLPR, PEN and SETPNS.


OUTBUF

This page uses frames, but your browser doesn't support them.


OUTBUF

ONEPEN Specifications OWNFIL

SUBROUTINE OUTBUF

Purpose

to update the SIMPLEPLOT page by flushing internal graphics buffer.

Argument(s)

None

Description

For some devices, the efficiency of data transfer for graphics can be maximized by accumulating sequences of drawing in a buffer, and outputting them when the buffer is full. When output is buffered in this way, at any stage of a program, the most recent part of the picture may be missing because the buffer is not yet full. Whenever it is necessary to be sure that the picture is up to date, outbuf() forces the output of all buffered graphics. If the buffers are already empty when OUTBUF is called, it does nothing.

Availability

Section 4, released version 2-7.

See Also

ENDPAG, ENDPIC, GETXY, OWNIO, OWNNEW and SCLEAR.

Examples

Converting between (x,y) and long/lat coordinates


OWNFIL

This page uses frames, but your browser doesn't support them.


OWNFIL

SUBROUTINE OWNFIL (ITYPE, ILEVEL, IPRIOR, STR)

Purpose

to specify an alternative source/destination for SIMPLEPLOT input/output.

Argument(s)

ITYPE | INTEGER expression | Type of channel usage
ILEVEL | INTEGER expression | Type of drivers to be affected
IPRIOR | INTEGER expression | Priority over external information
STR | STRING expression | File/device name

ITYPE | Channel usage | IPRIOR | Priority
1 | Diagnostics | 0 | Never use
2 | Prompt output | 1 | Use when not defined
3 | Prompt input |  | externally
4 | Graphics output | 2 | Use when defined
5 | Graphics input |  | externally
6 | Configuration | 3 | Always use

ILEVEL | Device drivers affected
0 | None
1 | Device drivers for interactive devices
2 | Device drivers for non-interactive devices
3 | All device drivers
4 | Non-device driver I/O (eg. diagnostics file, prompt)
5 | Non-device driver I/O plus interactive drivers
6 | Non-device driver I/O plus non-interactive drivers
7 | Non-device driver I/O plus all drivers (ie. everything)

Description

By default, SIMPLEPLOT allocates files and/or devices according to external information (eg. environment variables, logical names, etc.) or default values. OWNFIL specifies an alternative file (or device) to be used for a SIMPLEPLOT I/O channel (see ITYPE) and under what circumstances it takes priority over external information (see ILEVEL and IPRIOR).

The effect of OWNFIL can be restricted to certain classes of device driver or to non-device driver I/O according to the value of ILEVEL.

STR is interpreted as a file name (or file specification) and must have at least one character up to a maximum of 255. Valid file names differ from system to system and STR is interpreted as anything which would be valid where a file name is valid; on some systems this may include devices, path names, file specifications, network nodes etc.

For example, if you want your terminal output on your screen, but your hard-copy output to be sent to the files, MYPIC.D0n, then use OWNFIL(4,2,1,"MYPIC").

OWNFIL has no effect until the specified I/O channel is opened and, if the channel is already open, may have no effect at all:

  • Prompt input, prompt output and diagnostic channels are allocated when SIMPLEPLOT is initialized and cannot be reassigned while SIMPLEPLOT is open. For ITYPE=1, 2 and 3, it is necessary for OWNFIL to be called before any other SIMPLEPLOT subroutine except IOCHAN.
  • Graphics input and output channels are used only by individual device drivers and therefore can be re-assigned before a new device is selected.
  • The configuration channel is used by both individual device drivers and the device driver system and therefore should normally be re-assigned before SIMPLEPLOT is fully initialized.
In order to allow OWNFIL to be used repeatedly before SIMPLEPLOT is fully initialized, it does not trigger the initial diagnostic message:
   (SIMPLEPLOT Mark 2-15(nnn)X)

Availability

Section plus, released version 2-12.

Diagnostics

  (OWNFIL ignored: invalid argument)1

Default

OWNFIL(ITYPE,0,0," ") restores the default. Please note that the default is not restored by INITSP.

See Also

IOCHAN and host specific information.


OWNIO

This page uses frames, but your browser doesn't support them.


OWNIO

SUBROUTINE OWNIO (TORF)

Purpose

to specify whether a terminal is to be used for graphics or user I/O.

Argument(s)

TORF LOGICAL expression Whether terminal is to be used for user I/O

Description

Some types of graphics terminal need to be in one state for outputting graphics, and another state when processing ordinary READ and WRITE operations from and to the terminal. If a dialogue display obscures the graphics, SIMPLEPLOT may switch it off during graphics output. With this sort of terminal, any user program which includes terminal READ and WRITE operations among graphics output calls needs to be able to switch states itself.

OWNIO(.TRUE.) switches the terminal into a suitable state for terminal READ and WRITE operations, and

OWNIO(.FALSE.) switches it back into the state used for graphics output.

Availability

Section 4, released version 2-7.

Default

OWNIO(.FALSE.) restores the default.

See Also

ENDPAG, ENDPIC, GETXY, OWNNEW, OUTBUF and SCLEAR.


OWNNEW

This page uses frames, but your browser doesn't support them.


OWNNEW

SUBROUTINE OWNNEW (TORF)

Purpose

to specify whether to bypass the normal procedure between SIMPLEPLOT pages.

Argument(s)

TORF LOGICAL expression Whether to use own action between pages

Description

By default, SIMPLEPLOT performs certain operations between pages of output. Device drivers for graphics terminals are usually set up so that the first SIMPLEPLOT page is started without requiring user interaction; but, before clearing the screen for subsequent pages, the device driver prompts the user (eg. the Press <RETURN> to continue message) to ensure that the page on the screen has been seen before it is erased.

If the user program performs its own interactive dialogue, there may be no need for the precaution of inviting a user prompt before starting a new SIMPLEPLOT page. After a call of OWNNEW(.TRUE.), all such operations are bypassed such that each new page is started in the same way as the first.

Availability

Section 4, released version 2-7.

Default

OWNNEW(.FALSE.) restores the default.

See Also

ENDPAG, ENDPIC, GETXY, OUTBUF, OWNIO and SCLEAR.


PAGE

This page uses frames, but your browser doesn't support them.


PAGE

SUBROUTINE PAGE (WCMS, HCMS)

Purpose

to specify the size of the SIMPLEPLOT page.

Argument(s)

WCMS | REAL expression | Width of page (in cms)
HCMS | REAL expression | Height of page (in cms)

Description

PAGE has a different effect on packed picture and fixed picture devices:

  • Packed picture devices By default, the size of the SIMPLEPLOT page depends on the physical dimensions of the device and user calls to PICSIZ and GROUP.

    When a picture size has not been specified, the allocated page size is related to the total available on the device (approximately 20cm*20cm). When a picture size has been specified, the page size is calculated to accommodate the current grouping. After PAGE has been called, each picture (or group) is positioned within an area of the specified size.

  • Fixed picture devices The fixed device area is treated like a page whether or not PAGE has been called. The arguments of PAGE are only used to set the page orientation when the device page may be rotated. The magnitudes of the arguments of PAGE are only used when FITPAG has also been called.

If the requested page size is larger than the device plotting area, a shrinkage factor is applied so that the page produced has the specified proportions. This shrinkage factor is then applied to all plotting within the page.

Availability

Section 1, released before version 2-5.

Diagnostics

  (x1 y1 requested)2
 (x2 y2 used)2
 (PAGE cancelled)1
 (PAGE ignored: invalid argument)1
 (Page Size modified)1

Default

Calling PAGE with either argument set to zero restores the default.

See Also

FITPAG, PAG*, PGFULL and QPAGE.

Examples

Axis Tick Mark Labelling


PAGMRG

This page uses frames, but your browser doesn't support them.


PAGMRG

SUBROUTINE PAGMRG (CMS, RCMS, BCMS, TCMS)

Purpose

to specify the size and distribution of peripheral margins.

Argument(s)

CMS | REAL expression | Width of left margin (in cms)
RCMS | REAL expression | Width of right margin (in cms)
BCMS | REAL expression | Width of bottom margin (in cms)
TCMS | REAL expression | Width of top margin (in cms)

Description

By default, the peripheral margin around a group of pictures is treated as two pairs of complementary margins (left/right and bottom/top) and each pair is distributed in a 2:1 ratio, left:right and bottom:top. PAGMRG specifies the size and distribution of these peripheral margins individually.

Three combinations of values are possible for each pair of margins, m1 and m2:

  • m1>= 0 and m2>= 0 sizes used unless shrinkage is needed when proportions used.
  • m1>= 0 and m2<0 (or vice versa) non-negative value used as the absolute margin size if page size permits; remaining space put on other side.
  • m1<0 and m2<0 reset default.
SIMPLEPLOT imposes minimum and maximum values on peripheries. The maximum size allowed for a periphery is half the smaller dimension of the group, The minimum periphery is 0.01cm.

PAGMRG overrides PERIPH and vice versa.

Availability

Section 4, released version 2-11.

Default

PAGMRG(-1.0,-1.0,-1.0,-1.0) restores the default size and distribution of peripheries.

See Also

PERIPH, PICMRG and MARGIN.


PAGPOS

This page uses frames, but your browser doesn't support them.


PAGPOS

SUBROUTINE PAGPOS (XCMS, YCMS)

Purpose

to specify the position of the SIMPLEPLOT page within the plotting area.

Argument(s)

XCMS | REAL expression | x coordinate of picture
YCMS | REAL expression | y coordinate of picture

Description

By default, if PAGE has been called to define a page size which is smaller than the device plotting area, this smaller region is positioned in the centre of the space available. PAGPOS overrides this position and cause the SIMPLEPLOT page to be placed at the point (xcms,ycms) centimetres relative to the bottom left hand corner of the device. The conversion subroutine, KXYXY, can be used to convert user coordinates or page coordinates to device coordinates in centimetres.

If the specified coordinates would position the page partly off the device plotting area, both the page dimensions and the position of its origin are scaled in the same proportion to ensure a SIMPLEPLOT page completely contained within the device plotting area.

PAGPOS is only applicable to fixed picture devices and is ignored until PAGE is called.

Availability

Section 4, released version 2-11.

Diagnostics

  (PAGPOS cancelled)1

Default

Calling PAGPOS with either argument negative restores the default page positioning.

See Also

PAGE and KXYXY.

Examples

Axis Tick Mark Labelling


PAGVW

This page uses frames, but your browser doesn't support them.


PAGVW

SUBROUTINE PAGVW (ITYPE)

Purpose

to specify the orientation of a page when page dimensions have not been specified.

Argument(s)

ITYPE INTEGER expression The orientation of the page

ITYPE | Page orientation
0 | Default mode, determined by device and/or GROUP
1 | Portrait (if page can be turned)
2 | Landscape (if page can be turned)
3 | Portrait
4 | Landscape
5 | Upside-down portrait
6 | Upside-down landscape

Description

By default, SIMPLEPLOT determines the page orientation according to the dimensions of the device and the group configuration of pictures. PAGVW specifies an alternative orientation of a page for fixed picture devices.

ITYPE>=3 may result in a rotated page even on devices which would not normally turn the SIMPLEPLOT page (eg. a screen). ITYPE=1 and 3 or ITYPE=2 and 4 are equivalent on devices which can be used in both portrait and landscape modes (eg. printers).

PAGVW is overridden by calling of PAGE to define page dimensions; if the default page dimensions are subsequently restored, any previous setting of PAGVW becomes active again.

Availability

Section 4, released version 2-11.

Default

PAGVW(0) restores the default.

See Also

FITPAG, GROUP and PAGE.

Examples

Page Rotation


PAPINC

This page uses frames, but your browser doesn't support them.


PAPINC

SUBROUTINE PAPINC (CMS)

Purpose

to specify the length of paper on a device with continuous paper feed.

Argument(s)

CMS REAL expression Length of paper (in cms)

Description

On devices with continuous paper feed (eg. drum plotter) the paper length available to an individual program can be increased from the installation default, up to any value not exceeding the installation maximum, using PAPINC.

For further information about the default and maximum, please refer to local documentation.

PAPINC must be called before plotting is started for it to be effective.

Availability

Section 1, released before version 2-5.

Default

PAPINC(0.0) restores the default.

Examples

Hedgehog plots


PEN

This page uses frames, but your browser doesn't support them.


PEN

SUBROUTINE PEN (IPEN)

Purpose

to select the pen to be used for all plotting.

Argument(s)

IPEN INTEGER expression Pen number

IPEN | Pen usage
-1 | plotting is omitted on all devices
0 | plotting is done in background colour; on some devices this produces the effect of rubbing out but on others (eg. pen plotters) plotting is omitted
1, 2, 3 ... | pens/bundles are selected as determined by the current device, palette (see PENHLS and PENRGB) and the current bundled attributes (see BUNLPR)

Description

By default, SIMPLEPLOT draws all graphics (eg. lines, text, marker symbols, etc.) with a single pen (IPEN=1). After PEN has been called, all plotting is performed using the specified pen (IPEN) until another change is initiated by a further call of PEN, SETPNS or WFPNS.

IPEN can have values -1, 0, 1, 2, 3, ... etc. PEN(I) is equivalent to SETPNS(I,I,I,I).

Please note that, by default, colour is the only line-drawing attribute associated with pens and the distinction between pens depends on the capabilities of the current device. BUNLPR specifies the attributes to be associated with pens when used for drawing lines (but not text, marker symbols nor software shading) to enable differentiation between pens even on monochrome devices.

Availability

Section 1, released before version 2-5.

Default

PEN(1) restores the default.

See Also

BUNLPR, PENHLS, PENRGB, SETPNS, ONEPEN, SHPEN and WFPNS.

Examples

Drawing contours


PENHLS

This page uses frames, but your browser doesn't support them.


PENHLS

SUBROUTINE PENHLS (ICOLOR, HUE, BRIGHT, SAT)

Purpose

to change the device palette using HLS conventions.

Argument(s)

ICOLOR | INTEGER expression | Colour index to be changed
HUE | REAL expression | Hue (degrees)
BRIGHT | REAL expression | Lightness (0.0- 1.0)
SAT | REAL expression | Saturation (0.0- 1.0)

Description

On devices which allow palette changes, PENHLS changes the specified colour index (or device pen) to a specified Hue-Lightness-Saturation. The HLS values required to produce specific colours are listed in Appendix T of the SIMPLEPLOT Supplement.

ICOLOR=-1 sets all colour indices (or device pens) to the specified colour.

The effect of defining the palette is affected by the capability of the device and the underlying graphics system. Possible effects include:

  • No change The device (or device driver) is unable to control the palette.
  • Retrospective change All graphics (eg. lines, text, filled areas, etc.) already drawn on the current SIMPLEPLOT page, with the specified colour index, are changed to the default palette definition.
  • Prospective change Only graphics subsequently drawn with the specified colour index use the default palette definition.
  • Deferred change The new palette definition takes effect from the start of the next SIMPLEPLOT page.
Unless any of these effects is actually required, the best time to change the palette is between finishing one SIMPLEPLOT page and starting the next (see ENDPAG and NEWPAG) or before the first page.

If BUNLPR has been called to change line-drawing attributes, the SIMPLEPLOT pen number will not necessarily correspond to ICOLOR.

Availability

Section plus, released version 2-11.

Default

PENRST(ICOLOR) restores the default. The default is not restored by INITSP.

See Also

BUNLPR, ENDPAG, NEWPAG, PENRST and PENRGB.


PENRGB

This page uses frames, but your browser doesn't support them.


PENRGB

SUBROUTINE PENRGB (ICOLOR, RED, GREEN, BLUE)

Purpose

to change the device palette using RGB conventions.

Argument(s)

ICOLOR | INTEGER expression | Colour index to be changed
RED | REAL expression | Proportion of RED (0.0- 1.0)
GREEN | REAL expression | Proportion of GREEN (0.0- 1.0)
BLUE | REAL expression | Proportion of BLUE (0.0- 1.0)

Description

On devices which allow palette changes, PENRGB changes the specified colour index (or device pen) to a specified combination of Red-Green-Blue. The RGB values required to produce specific colours are listed in Appendix T of the SIMPLEPLOT Supplement.

ICOLOR=-1 sets all colour indices (or device pens) to the specified colour.

The effect of defining the palette is affected by the capability of the device and the underlying graphics system. Possible effects include:

  • No change The device (or device driver) is unable to control the palette.
  • Retrospective change All graphics (eg. lines, text, filled areas, etc.) already drawn on the current SIMPLEPLOT page, with the specified colour index, are changed to the default palette definition.
  • Prospective change Only graphics subsequently drawn with the specified colour index use the default palette definition.
  • Deferred change The new palette definition takes effect from the start of the next SIMPLEPLOT page.
Unless any of these effects is actually required, the best time to change the palette is between finishing one SIMPLEPLOT page and starting the next (see ENDPAG and NEWPAG) or before the first page.

If BUNLPR has been called to change line-drawing attributes, the SIMPLEPLOT pen number will not necessarily correspond to ICOLOR.

Availability

Section plus, released version 2-11.

Default

PENRST(ICOLOR) restores the default. The default is not restored by INITSP.

See Also

BUNLPR, ENDPAG, NEWPAG, PENRST and PENHLS.


PENRST

This page uses frames, but your browser doesn't support them.


PENRST

SUBROUTINE PENRST (ICOLOR)

Purpose

to reset the the device palette.

Argument(s)

ICOLOR INTEGER expression Colour index to be changed

Description

On devices which allow palette changes, PENRGB or PENHLS can be called to change the colour indices; PENRST resets the colour index, ICOLOR, to the value defined in the device driver to be the default colour for that index. This can only take account of user-defined settings if the device driver can interrogate the device.

The effect of resetting the palette may cause different visual effects depending on the capability of the device or the underlying graphics system.

Possible effects include No change - the device (or device driver) is not able to control the palette therefore resetting has no effect; Retrospective change - all graphics (eg. lines, text, filled areas, etc.) already drawn on the current SIMPLEPLOT page, with the specified colour index, are changed to the default palette definition; Prospective change - only graphics subsequently drawn with the specified colour index use the default palette definition; Deferred change - the default palette definition takes effect from the start of the next SIMPLEPLOT page.

Unless any of these effects is actually required, the best time to change the palette is when there is no active SIMPLEPLOT page (ie. after finishing one SIMPLEPLOT page but before starting the next (see ENDPAG and NEWPAG) or before the first page).

Please note that, by default, colour is the only line-drawing attribute associated with pens and the distinction between pens depends on the capabilities of the current device. If BUNLPR has been called to change line-drawing attributes, the SIMPLEPLOT pen number (IPEN) does not necessarily correspond to the colour index (ICOLOR).

Availability

Section plus, released version 2-11.

Default

PENRST(-1) restores all colour indices.

See Also

BUNLPR, ENDPAG, NEWPAG, PENRGB and PENHLS.


PERIM

This page uses frames, but your browser doesn't support them.


PERIM

SUBROUTINE PERIM

Purpose

to draw a rectangular box around the current picture.

Argument(s)

None

Description

PERIM draws [1] a rectangular box around the perimeter of the picture which has already been started.

If scales have been extended to provide similar linear scales in x and y (see EQSCAL), the box is drawn around the full extent of the scales at the picture limits. If a box is required to fit the requested range of scales, and the axes drawn to annotate such scales, DRAWBX can be used.

Availability

Section 1, released version 2-5.

See Also

BOXPIC and DRAWBX.

Examples

Line contours
Marker symbols
Storing and retrieving curve coordinates


PERIPH

This page uses frames, but your browser doesn't support them.


PERIPH

SUBROUTINE PERIPH (CMS)

Purpose

to specify the overall size of the periphery around a group of pictures.

Argument(s)

CMS REAL expression Size of periphery (in cms)

Description

If neither PERIPH nor PAGMRG has been called, SIMPLEPLOT controls both the size and distribution of the periphery; PERI is calculated using the current minimum size of text:
  PERI =  14 * character width + 1.5 * margin size
If the calculated default value of PERI is less than 3cm, a 3cm periphery is allocated, otherwise, PERI is used as the periphery size.

SIMPLEPLOT imposes minimum and maximum values on peripheries. The maximum size allowed for a periphery is half the smaller dimension of the group. The a minimum periphery is 0.01cm.

The overall peripheral margin is distributed in a 2:1 ratio, left:right and bottom:top.

PERIPH overrides PAGMRG and vice versa.

Availability

Section 4, released version 2-7.

Diagnostics

  (v1 requested)2
 (v2 used)2
 (Periphery modified)1

Default

Calling PERIPH with a negative argument restores the default.

See Also

PGFULL and PAGMRG.


PGFULL

This page uses frames, but your browser doesn't support them.


PGFULL

SUBROUTINE PGFULL (TORF)

Purpose

to specify whether picture space is to be maximized.

Argument(s)

TORF LOGICAL expression Whether page is to be filled

Description

By default, the periphery around a group of pictures surround the margins on the picture(s). After a call of PGFULL(.TRUE.), the periphery and the picture margins coincide, allowing bigger pictures to be included in the page.

Availability

Section 1, released version 2-9.

Default

PGFULL(.FALSE.) restores the default.

See Also

MARGIN, PAGMRG, PERIPH and PICMRG.


PIANG

This page uses frames, but your browser doesn't support them.


PIANG

SUBROUTINE PIANG (ANGLE)

Purpose

to specify the viewing angle of 3-dimensional pie charts.

Argument(s)

ANGLE REAL expression Viewing angle (in degrees)

Description

By default 3-dimensional pie charts, drawn by subroutine PIE3D have a viewing angle of 30°. PIANG can be called to change this viewing angle.

If ANGLE = 90.0, the pie chart is viewed `flat on', and has no apparent depth, looking like a 2-dimensional chart produced by PIECHT. If ANGLE <= 0.0, or ANGLE > 90.0, the default is restored (equivalent to ANGLE = 30.0).

Availability

Section plus, released 2-15.

Default

PIANG(0.0) restores the default.

See Also

PIE3D, PIDIAM, PIHGHT and PITILT.

Examples

Fine control of a 3-D pie chart


PIBOXL

This page uses frames, but your browser doesn't support them.


PIBOXL

SUBROUTINE PIBOXL (TORF)

Purpose

to specify whether a box is to be drawn around pie chart labels.

Argument(s)

TORF LOGICAL expression Whether a box is to be drawn

Description

By default, labels for pie chart segments are enclosed in a rectangular box. PIBOXL changes to no boxes, or back to drawing boxes. PIBOXL must be called before PIECHT.

Availability

Section 4, released before version 2-5.

Default

PIBOXL(.TRUE.) restores the default.

See Also

PIECHT.

Examples

Pie chart labels and exploding segments


PICMRG

This page uses frames, but your browser doesn't support them.


PICMRG

SUBROUTINE PICMRG (CMS, RCMS, BCMS, TCMS)

Purpose

to specify the size of individual picture margins.

Argument(s)

CMS | REAL expression | Width of left margin (in cms)
RCMS | REAL expression | Width of right margin (in cms)
BCMS | REAL expression | Width of bottom margin (in cms)
TCMS | REAL expression | Width of top margin (in cms)

Description

By default, the picture margin is treated as two pairs of complementary margins (left/right and bottom/top) and each pair is distributed such that there is enough clearance round pictures for normal plotting requirements (ie. with more space to the left and bottom of the picture). PICMRG changes the size and distribution of these picture margins.

Three combinations of values are possible for each pair of margins, m1 and m2:

  • m1>= 0 and m2>= 0 sizes used unless shrinkage is needed when proportions used.
  • m1>= 0 and m2<0 (or vice versa) non-negative value used as the absolute margin size if page size permits; remaining space put on other side.
  • m1<0 and m2<0 reset default.
SIMPLEPLOT imposes minimum and maximum values on picture margins. The maximum size allowed for a margin is half the smaller dimension of the picture, and the minimum margin is 0.01cm.

PICMRG overrides MARGIN and vice versa.

Availability

Section 4, released version 2-11.

Default

PICMRG(-1.0,-1.0,-1.0,-1.0) restores default margin sizes and distribution.

See Also

MARGDV, MARGIN, PAGMRG and PERIPH.


PICPOS

This page uses frames, but your browser doesn't support them.


PICPOS

SUBROUTINE PICPOS (XCMS, YCMS)

Purpose

to specify the coordinate position of each new picture.

Argument(s)

XCMS | REAL expression | x coordinate of picture
YCMS | REAL expression | y coordinate of picture

Description

By default, each new picture is automatically positioned either in the next clear space within the group or on a new SIMPLEPLOT page. PICPOS specifies the coordinates, (xcms, ycms), at which the bottom left-hand corner of each new picture is to be positioned. XCMS and YCMS are specified in centimetres relative to the bottom left hand corner of the current SIMPLEPLOT page; if there is no current page, a page is automatically started.

PICPOS overrides the automatic layout (there is an implicit call of MOVEON(.FALSE.)) and while PICPOS is active, ENDPAG terminates the page.

If either XCMS or YCMS exceed the page limits, or if the picture is too big to fit within the page limits at the specified position, the position is moved in one or both directions, until the picture is completely within the page, and a diagnostic is issued.

The picture size can be specified with PICSIZ. If PICPOS is active but no picture size has been specified, a 12cm * 12cm picture is used.

Availability

Section 4, released version 2-8.

Diagnostics

  (x1 y1 requested)2
 (x2 y2 used)2
 (PICPOS cancelled)1
 (Picture position modified)1

Default

PICPOS(XCMS,YCMS) with either argument negative. MOVEON(.TRUE.) also cancels PICPOS.

See Also

ENDPAG, ENDPIC, KXYXY and MOVEON.


PICRST

This page uses frames, but your browser doesn't support them.


PICRST

SUBROUTINE PICRST (N)

Purpose

to reset the current picture to the size, position and scales saved as number N.

Argument(s)

N INTEGER expression Picture identifier (1 to 10)

Description

PICRST and PICSAV facilitate simultaneous drawing on separate picture. Following a call to PICSAV(N), PICRST(N) switches drawing to the picture associated with N.

Availability

Section 1, released version 2-14.

Diagnostics

  (PICRST: argument invalid)1

See Also

PICSAV.


PICSAV

This page uses frames, but your browser doesn't support them.


PICSAV

SUBROUTINE PICSAV (N)

Purpose

to save the size, position and scales of the current picture as number N.

Argument(s)

N INTEGER expression Picture identifier (1 to 10)

Description

PICSAV facilitates simultaneous drawing on separate picture. Following a call to PICSAV(N), PICRST(N) switches drawing to the picture associated with N.

Availability

Section 1, released version 2-14.

Diagnostics

  (PICSAV: argument invalid)1

See Also

PICRST.


PICSIZ

This page uses frames, but your browser doesn't support them.


PICSIZ

SUBROUTINE PICSIZ (WCMS, HCMS)

Purpose

to specify the size of pictures.

Argument(s)

WCMS | REAL expression | Width of pictures (in cms)
HCMS | REAL expression | Height of pictures (in cms)

Description

By default, SIMPLEPLOT calculates the picture size from the page size as follows:
  1. Subtract the periphery (if any),
  2. Divide by the group size,
  3. Subtract the margins, and
  4. Apply a shrinkage factor (if necessary) to fit the space available on the device.
PICSIZ specifies the target size of all pictures. If the requested picture size is larger than the space available, a shrinkage factor is applied so that the proportions (or aspect ratio) of the specified dimensions are retained.

If PICPOS is active but no picture size has been specified, a 12cm * 12cm picture is used.

Availability

Section 1, released before version 2-5.

Diagnostics

  (x1 y1 requested)2
 (x2 y2 used)2
 (PICSIZ cancelled)1
 (PICSIZ ignored: invalid argument)1
 (Picture Size modified)1

Default

Calling PICSIZ with either argument set to zero restores the default.

See Also

GROUP, PAGE and PICPOS.


PIDIAM

This page uses frames, but your browser doesn't support them.


PIDIAM

SUBROUTINE PIDIAM (CMS)

Purpose

to specify a reduced diameter for pie charts.

Argument(s)

CMS REAL expression Diameter (in cms)

Description

By default, the diameter of pie charts is the largest which can be accommodated with the required configuration of exploded segments and labels, within the picture size. PIDIAM sets the pie diameter in centimetres. PIDIAM must be called before PIECHT.

Availability

Section 4, released before version 2-5.

Default

PIDIAM(0.0) restores the default.

See Also

PIECHT.

Examples

Pie chart labels and exploding segments


PIE3D

This page uses frames, but your browser doesn't support them.


PIE3D

SUBROUTINE PIE3D (DARR, LABARR, NARR)

Purpose

to draw a 3-dimensional pie chart on the current picture.

Argument(s)

DARR | REAL array | Data values
LABARR | STRING array | Names for each segment
NARR | INTEGER expression | Number of segments and number of elements in DARR and LABARR

Description

PIE3D draws a pie chart on the current picture showing the distribution of data among the NARR values in array DARR.

The height of the pie, by default a fifth of the diameter, is controllable by PIHGHT. The viewing angle, by default 30°, is controllable by PIANG. The number of segments of a pie chart is unlimited but the maximum number of segments which can be omitted or exploded is 255.

Pen pointers set by SETPNS control the colour of the following aspects of a 3-d pie chart:

  • [1] Boxes round labels, and arrows
  • [2] Text
  • [3] Segment edges
  • [4] Reserved for future use

PIE3D is equivalent to PIECHT, which draws a 2-dimensional pie chart. All PI* and SG* subroutines which can be used with PIECHT have a similar effect on PIE3D.

Availability

Section plus, released version 2-15.

Diagnostics

  (PIE CHART OMITTED: LESS THAN 1 SEGMENT)1
 (PIE CHART OMITTED: -VE AND +VE VALUES)1

See Also

PIANG, PIBOXL, PIDIAM, PIE3D, PIEXPL, PIHGHT, PIINCL, PIOMIT, PIPOSL, PITILT, SETPNS, SGEXPL, SGOMIT, SQSHAD and SHKEYS.

Examples

3-D pie chart
Fine control of a 3-D pie chart


PIECHT

This page uses frames, but your browser doesn't support them.


PIECHT

SUBROUTINE PIECHT (DARR, LABARR, NARR)

Purpose

to draw a pie chart on the current picture.

Argument(s)

DARR | REAL array | Data values
LABARR | STRING array | Names for each segment
NARR | INTEGER expression | Number of segments and number of elements in DARR and LABARR

Description

PIECHT draws a pie chart on the current picture showing the distribution of data among the NARR values in array DARR. The details of labelling, shading patterns, tilt of pie, positions of separate segments etc. can all be controlled by prior calls of PI* or SG* subroutines or, in the absence of such calls, defaults are used.

The number of segments of a pie chart is unlimited but the limit on the maximum number of segments which can be omitted or exploded is 32.

Availability

Section 4, released version 2-11.

Diagnostics

  (PIE CHART OMITTED: LESS THAN 1 SEGMENT)1
 (PIE CHART OMITTED: -VE AND +VE VALUES)1

See Also

PIBOXL, PIDIAM, PIEXPL, PIINCL, PIOMIT, PIPOSL, PITILT, SGEXPL, SGOMIT and SHKEYS.

Examples

A simple pie chart
Pie chart label contents and omitting segments
Pie chart labels and exploding segments
Bar chart and pie chart


PIEXPL

This page uses frames, but your browser doesn't support them.


PIEXPL

SUBROUTINE PIEXPL (IARR, NARR)

Purpose

to specify the amount by which each pie chart segment is to be exploded.

Argument(s)

IARR | INTEGER array | Percentage (0- 50%) explosion for each segment
NARR | INTEGER expression | Number of elements in IARR

Description

By default, pie charts are drawn with all segments touching, and meeting in the centre of the pie. PIEXPL indicates the amount (percentage of the radius) by which each segment is to be displaced from the centre of the pie, along the radius bisecting the segments' angles. PIEXPL must be called before PIECHT.

The number of segments of a pie chart is unlimited but the limit on the maximum number of segments which can be omitted or exploded is 32.

The effect of PIEXPL can be overridden by SGEXPL and vice versa.

Availability

Section 4, released before version 2-5.

Default

Calling PIEXPL with all elements of IARR set to zero restores the default.

See Also

PIECHT and SGEXPL.


PIHGHT

This page uses frames, but your browser doesn't support them.


PIHGHT

SUBROUTINE PIHGHT (HEIGHT)

Purpose

to specify the height of 3-dimensional pie charts as a proportion of the diameter.

Argument(s)

HEIGHT REAL expression Height:diameter ratio

Description

By default, the height of a 3-dimensional pie chart, specified by PIE3D is one fifth of the diameter. The diameter is controlled by the picture size or subroutine PIDIAM. PIHGHT(HEIGHT) sets the height (thickness) of subsequent pies -- as HEIGHT increases, so does the relative height of the pie chart.

Pie charts produced by PIECHT, or following PIANG(90.0) have no apparent height, and are therefore not affected by PIHGHT.

If the value of HEIGHT <= 0.0, the default is restored (equivalent to HEIGHT = 0.2).

Availability

Section plus, released 2-15.

Default

PIHGHT(0.0) restores the default.

See Also

PIANG, PIE3D and PIDIAM.

Examples

Fine control of a 3-D pie chart


PIINCL

This page uses frames, but your browser doesn't support them.


PIINCL

SUBROUTINE PIINCL (LTORF, VTORF, PTORF)

Purpose

to specify what elements are to be included in pie chart segment labels.

Argument(s)

LTORF | LOGICAL expression | Whether segment names are to be included in labels
VTORF | LOGICAL expression | Whether segment values are to be included in labels
PTORF | LOGICAL expression | Whether segment percentages are to be included in labels

Description

By default, PIECHT draws each pie segment labelled with the name supplied in the argument array LABARR. PIINCL specifies any combination of segment name, segment value and segment percentage, to be used for labelling all segments. PIINCL must be called before PIECHT.

By default, percentages are specified to 2 decimal places (see FIGFMT) and labels are left-justified (see ADDJST).

Availability

Section 4, released before version 2-5.

Default

PIINCL(.TRUE.,.FALSE.,.FALSE.) restores the default.

See Also

ADDJST, FIGFMT, PIECHT, PIBOXL and PIPOSL.

Examples

Pie chart label contents and omitting segments
Pie chart labels and exploding segments
Bar chart and pie chart


PIOMIT

This page uses frames, but your browser doesn't support them.


PIOMIT

SUBROUTINE PIOMIT (LARR, NARR)

Purpose

to specify which segments are to be omitted from pie charts.

Argument(s)

LARR | LOGICAL array | Specifies for each segment whether or not it is to be omitted
NARR | INTEGER expression | Number of elements in LARR

Description

By default, all segments of pie charts are drawn by PIECHT. PIOMIT indicates that specific segments for which the value LARR(ISEG) is .TRUE., are to be included in the calculations, but omitted from the picture. PIOMIT must be called before PIECHT.

The number of segments of a pie chart is unlimited but the limit on the maximum number of segments which can be omitted or exploded is 32.

The effect of PIOMIT can be overridden by SGOMIT and vice versa.

Availability

Section 4, released before version 2-5.

Default

Calling PIOMIT with all elements of LARR set to .FALSE. restores the default.

See Also

PIECHT and SGOMIT.


PIPOSL

This page uses frames, but your browser doesn't support them.


PIPOSL

SUBROUTINE PIPOSL (IPOS)

Purpose

to specify the position of segment labels on pie charts.

Argument(s)

IPOS INTEGER expression Label position

IPOS | Label position
1 | Labels equally-spaced down sides of picture, with arrows if there is room (default)
2 | Labels alongside segments, down sides of picture, with arrows if there is room
3 | Labels next to segments (no arrows)
4 | Labels inside segments, or next to segment when there is not enough space inside (no arrows)

Description

By default, PIECHT draws segment labels equally spaced down the sides of the picture. PIPOSL selects any of the four options for label positions.

Availability

Section 4, released before version 2-5.

Default

PIPOSL(1) restores the default.

See Also

PIECHT, PIBOXL and PIINCL.

Examples

Pie chart label contents and omitting segments
Pie chart labels and exploding segments
Bar chart and pie chart
Fine control of a 3-D pie chart


PITILT

This page uses frames, but your browser doesn't support them.


PITILT

SUBROUTINE PITILT (IWDTH, IHGHT)

Purpose

to specify the tilt of pie charts.

Argument(s)

IWDTH,IHGHT INTEGER expressions Width to height ratio

Description

By default, circular pie charts are drawn by PIECHT. Tilted pie charts are drawn by adjusting the width:height ratio to produce elliptical pies. PITILT indicates the required ratio; both IWDTH and IHGHT must be positive integers, and only values with IWDTH > IHGHT are accepted. PITILT must be called before PIECHT.

Availability

Section 4, released before version 2-5.

Default

PITILT(0,0) restores the default.

See Also

PIECHT.

Examples

Pie chart label contents and omitting segments


POLAR

This page uses frames, but your browser doesn't support them.


POLAR

SUBROUTINE POLAR (RADIUS, CAP, NCAP)

SUBROUTINE POLAR7 (RADIUS, CAP)

Purpose

to start a new polar picture and draw axis framework.

Argument(s)

RADIUS | REAL expression | Maximum value of radial scale
CAP | STRING expression | Caption for radial axis
NCAP | INTEGER expression | Number of characters in CAP

Description

POLAR/POLAR7 starts a new picture, sets linear scales from -RADIUS to +RADIUS in both horizontal and vertical directions, draws [1] a radial axis annotated [2] with the scale, and draws [1] an angular axis annotated [2] with the angular scale of degrees.

POLAR7 sets the underlying coordinate system to be polar (in degrees). Even if Cartesian units have been specified by EQSCAL, when a new picture is started by POLAR7, a polar axis framework is drawn over complete quadrants and the plotting units are switched to degrees.

Availability

Section 1, released before version 2-5.

Diagnostics

  (POLAR OMITTED: ZERO RADIUS)1

See Also

AXES7, AXIS7, COORDS, EQSCAL, NEWPIC, POLRNG and POLZER.

Examples

A simple polar plot
A part-cycle polar plot
Line diagrams


POLIN

This page uses frames, but your browser doesn't support them.


POLIN

SUBROUTINE POLIN (PARR, NP)

Purpose

to transfer polynomial coefficients before plotting curves of polynomial functions.

Argument(s)

PARR | REAL array | Polynomial coefficients
NP | INTEGER expression | Number of polynomial coefficients (1- 20)

Description

POLIN copies the values of PARR(1) to PARR(NP) into storage within SIMPLEPLOT for later use in calculating the polynomial function:

PARR(1) + PARR(2)x + PARR(3)x2 + ... + PARR(NP)xNP

using POLY, normally with DRAWFN/BRKNFN/SHDEFN.

Availability

Section 1, released before version 2-5.

See Also

POLOUT and POLY.

Examples

Multi-line titles and polynomials


POLOUT

This page uses frames, but your browser doesn't support them.


POLOUT

SUBROUTINE POLOUT (PARR)

Purpose

to transfer polynomial coefficients after plotting regression curves.

Argument(s)

PARR REAL array To receive polynomial coefficients

Description

POLOUT copies values of polynomial coefficients from within SIMPLEPLOT into PARR. If CVTYPE has been called with argument 4 or 5 to cause BRKNAR/DRAWAR/SHDEAR or BRKNCV/DRAWCV/SHDECV to draw regression curves, the program can obtain the regression coefficients by calling POLOUT afterwards. PARR(I) is used as the coefficient of xi-1.

Availability

Section 1, released before version 2-5.

See Also

CVTYPE, POLIN and POLY.

Examples

Curve fitting by regression


POLRNG

This page uses frames, but your browser doesn't support them.


POLRNG

SUBROUTINE POLRNG (THSTRT, THSTOP)

Purpose

to specify the user-defined polar coordinate system.

Argument(s)

THSTRT | REAL expression | Value of scale at 0°
THSTOP | REAL expression | Value of scale at 360°

Description

By default, the angular scale used when COORDS has been called with IUNITS=3, is in radians. POLRNG specifies an alternative coordinate system.

POLRNG defines the range of a complete cycle of the angular axis from THSTRT to THSTOP. EQSCAL(..., 3) specifies the plotting scales for polar plotting in with respect to this cyclical range.

Availability

Section plus, released version 2-12.

Default

Calling POLRNG with THSTRT=THSTOP restores the default.

See Also

COORDS, EQSCAL and POLZER.


POLY

This page uses frames, but your browser doesn't support them.


POLY

REAL FUNCTION POLY (RVAL)

Purpose

to evaluate a polynomial function.

Argument(s)

RVAL REAL expression Argument of polynomial function in units of plotting scales

Description

POLY calculates the value, at the specified argument value, of the polynomial function whose coefficients have already been set up using POLIN. Its primary use is as an argument of DRAWFN, BRKNFN or SHDEFN. For example,

DRAWFN(POLY)

BRKNFN(POLY,LTYPE)

Please note that any program segment using POLY in this way, must declare POLY as an external subroutine. For example, EXTERNAL POLY.

This mechanism is also used internally within DRAWCV, BRKNCV and SHDEFN when CVTYPE has been called to specify linear or quadratic regressions.

Availability

Section 1, released before version 2-5.

See Also

POLIN and POLOUT.

Examples

Multi-line titles and polynomials


POLZER

This page uses frames, but your browser doesn't support them.


POLZER

SUBROUTINE POLZER (RZERO, IRDIR, THZERO, ITHDIR)

Purpose

to specify the convention used for polar coordinates.

Argument(s)

RZERO | REAL expression | Radial coordinate at centre of chart
IRDIR | INTEGER expression | Direction of radial scale
THZERO | REAL expression | Angle on chart of zero angular coordinate
ITHDIR | INTEGER expression | Direction of angular scale
IRDIR or | Direction of | Direction of
ITHDIR | radial increase | angular increase
-ve | Decreasing outwards | Clockwise
0 | Increasing outwards (default) | Either way depending on directions of change of x & y (default)
+ve | Increasing outwards | Anticlockwise

Description

Polar coordinates describe a point f(r,theta) where r is the distance of the point from an origin, and theta is the angle between a fixed line through the origin and a line joining the point to the origin. By default, SIMPLEPLOT assumes that radial units increase from zero at the Cartesian origin, (x=0,y=0), and that angles increase in the direction of increasing y from zero at a fixed horizontal line y=0. POLZER specifies an alternative convention for polar coordinates.

RZERO specifies the radial scale value to correspond with the Cartesian origin. THZERO specifies the anticlockwise angle (in degrees) between the horizontal line from the origin to the right, and the chosen position for the fixed line. IRDIR and ITHDIR indicate the direction of increase of the radial scale and of angular change respectively.

After a call to POLZER, all polar pictures are drawn according to the specified convention, and all polar coordinates are interpreted similarly.

Availability

Section 1, released version 2-12.

Default

POLZER(0.0,0,0.0,0) restores the default.

See Also

COORDS, EQSCAL and POLRNG.

Examples

Circular chart


PUTCAP

This page uses frames, but your browser doesn't support them.


PUTCAP

SUBROUTINE PUTCAP (IROW, ICOLM, CAP, NCAP)

SUBROUTINE PUTCP7 (IROW, ICOLM, CAP)

Purpose

to draw a caption in a specified position in a caption area.

Argument(s)

IROW | INTEGER expression | Line number
ICOLM | INTEGER expression | Character position
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

PUTCAP/PUTCP7 draws [2] the single caption, CAP, in the specified position within a caption area defined by DEFCAP (and selected by RESNXT). The position is determined as line IROW (counting down from IROW=1 at top), character position ICOLM (counting across from ICOLM=1 at left).

Availability

Section 4, released before version 2-5.

Diagnostics

  (Caption truncated)2
 (No active key/caption area)2

See Also

ADDCP7, DEFCAP, KNUMB and KREAL.

Examples

Text in pictures - alternative character sets
Text in pictures - controlling number format
The Greek alphabet


PVBOX

This page uses frames, but your browser doesn't support them.


PVBOX

SUBROUTINE PVBOX (TORF)

Purpose

to specify that a box is to be drawn around perspective volumes, showing limits to data.

Argument(s)

TORF LOGICAL expression Whether a box is to be drawn

Description

After a call of PVBOX(.TRUE.), each picture drawn by PVDRAW draws the object representing the data, and then draws [3] a box showing the position of the edges of the data array. The front edges of the box are drawn completely, but the edges which lie behind the object are subjected to hidden-line removal. If the position of the first data point is not obscured by the object, it is marked by an "O".

Also, an x-yz diagram is drawn to the right of the box, showing in which directions the three scales increase. The components of this diagram are an `O' [3], three directional lines [1], and the letters "X", "Y" and "Z" [2].

Availability

Section 5, released version 2-5.

Default

PVBOX(.FALSE.) restores the default.

See Also

PVDRAW, PVFULL and SETPNS.


PVCONT

This page uses frames, but your browser doesn't support them.


PVCONT

SUBROUTINE PVCONT (ITYPE)

Purpose

to specify type of contour drawing on plane faces with PVDRAW.

Argument(s)

ITYPE INTEGER expression Type of contour drawing

ITYPE | Type of contour plotting
0 | None - a hollow shell is drawn with the plane faces shown as holes through which part of the inside may be visible (default)
1 | A solid object with the plane face drawn as a plane area on which contour curves are drawn
2 | A solid object with the plane face drawn as a plane area on which shaded contours are drawn

Description

If the volume being drawn by PVDRAW extends beyond any of the edges of the data range, the volume is represented with plane cuts at the boundaries. PVCONT specifies how the visible plane faces are to be drawn.

The interval between both types of contours can be controlled by calling SFEQZ or SFEQZD.

If two data levels, one inside the other, are depicted in one picture, the outer level is drawn as a hollow shell revealing the inner level; if the boundary cuts the inner level, visible cut faces on the inner solid are drawn as requested by PVCONT.

Availability

Section 5, released version 2-5.

Default

PVCONT(0) restores the default.

See Also

PVDRAW, SFEQZ and SFEQZD.


PVDRAW

This page uses frames, but your browser doesn't support them.


PVDRAW

SUBROUTINE PVDRAW (D3ARR, NX, NY, NZ)

Purpose

to draw a perspective volume picture of 4-D data representing a continuous function of three variables.

Argument(s)

D3ARR | REAL 3-D array | Data values
NX,NY,NZ | INTEGER expressions | Dimensions of D3ARR

Description

PVDRAW starts a new picture and draws a perspective volume of the data measurements taken in three-dimensional space, over a regular grid, and supplied in D3ARR. The shape drawn represents the surface of the solid object enclosed by a single data level; alternatively, two surface can be drawn on one picture, representing two data levels, each of which partly hides the other.

The volume is drawn with hidden-line removal, using a three-point perspective projection. The picture consists of a family of curves showing the visible parts of outlines of slices through the object at a set of equally-spaced distances from the front to the back; from any user-defined viewpoint, the slices are constructed perpendicularly to the line of view.

Availability

Section 5, released version 2-5.

See Also

PVBOX, PVCONT, PVFULL, PVLEVS, PVLEV, PVLINS, PVMESH, PVNEW, PVVIEW, PVXLIM, PVYLIM and PVZLIM.


PVFULL

This page uses frames, but your browser doesn't support them.


PVFULL

SUBROUTINE PVFULL (TORF)

Purpose

to specify that perspective volumes are to be scaled to fill the space available.

Argument(s)

TORF LOGICAL expression Whether to fill the space

Description

By default, each picture drawn by PVDRAW uses the same scale for all data levels, and this can result in a very small object with a large empty area around it. After a call of PVFULL(.TRUE.), each picture drawn by PVDRAW sets the scale to make the drawing as big as possible within the picture size. PVFULL has no effect when boxes have been requested (by PVBOX).

Availability

Section 5, released version 2-5.

Default

PVFULL(.FALSE.) restores the default.

See Also

PVBOX and PVDRAW.


PVLEV

This page uses frames, but your browser doesn't support them.


PVLEV

SUBROUTINE PVLEV (DLEV)

Purpose

to specify the data level to be represented by PVDRAW.

Argument(s)

DLEV REAL expression Value of data level

Description

By default, PVDRAW attempts to find a data level which can be shown as an enclosed volume within the space occupied by the data, touching at least one of the boundary planes. For data configurations which have no such data level, the level half way between the minimum and the maximum for the data set is drawn and "(MEAN DATA LEVEL)" is drawn as a title at the "T"op, "C"entre of the picture.

If a particular data level is of interest, PVLEV specifies the required level, DLEV. PVLEV must be called before PVDRAW.

PVLEV overrides PVLEVS and vice versa.

Availability

Section 5, released version 2-5.

Default

The default cannot be restored except by initsp().

See Also

INITSP, PVLEVS, QPVLEV and TITLE7.


PVLEVS

This page uses frames, but your browser doesn't support them.


PVLEVS

SUBROUTINE PVLEVS (DLEV1, DLEV2)

Purpose

to specify two data levels to be represented by PVDRAW.

Argument(s)

DLEV1,DLEV2 REAL expressions Values of two data levels

Description

By default, PVDRAW attempts to find a data level which can be shown as an enclosed object within the space occupied by the data, touching at least one of the boundary planes. For data configurations which have both a high level and a low level which satisfy the criteria, both levels are drawn.

If two particular data levels are of interest, PVLEVS can be called before PVDRAW to specify the levels DLEV1 and DLEV2. If two levels have been selected, it is always possible that one level is completely hidden by the other, showing a picture of only one object.

A call of PVLEVS with equal arguments is equivalent to a call of PVLEV. PVLEVS overrides PVLEV and vice versa.

Availability

Section 5, released version 2-5.

Default

The default cannot be restored except by initsp().

See Also

INITSP, PVLEV and QPVLEV.


PVLINS

This page uses frames, but your browser doesn't support them.


PVLINS

SUBROUTINE PVLINS (NLINS)

Purpose

to specify the number of slices to be drawn on perspective volumes.

Argument(s)

NLINS INTEGER expression Number of slices

Description

By default, PVDRAW draws a set of twenty slices through the data at equally-spaced distances from the observer. PVLINS specifies an alternative number of slices to be drawn.

Availability

Section 5, released version 2-5.

Default

PVLINS(0) restores the default.

See Also

PVDRAW.


PVMESH

This page uses frames, but your browser doesn't support them.


PVMESH

SUBROUTINE PVMESH (NX, NY)

Purpose

to specify the accuracy and hence the speed of perspective volumes.

Argument(s)

NX,NY INTEGER expressions Dimensions of masking array

Description

In order to remove hidden lines from the volume drawn by PVDRAW, a masking array is used internally to keep a running record of visible areas. The processing time and accuracy increase with the size of this masking array.

By default, SIMPLEPLOT uses a 20*20 masking array. PVMESH specifies an alternative size of the masking array between 10*10 and 100*100.

Any positive values less than 10 are set to the minimum value (ie. 10) and values greater than 100 are set to the maximum value (ie. 100).

Availability

Section 5, released version 2-5.

Default

PVMESH(0,0) restores the default.

See Also

PVDRAW.


PVNEW

This page uses frames, but your browser doesn't support them.


PVNEW

PVMESH Specifications PVSCAL

SUBROUTINE PVNEW

Purpose

to change the data array to be plotted by PVDRAW.

Argument(s)

None

Description

When PVDRAW is used to draw a succession of volumes, repetition of some of the preliminary computations is avoided where possible on the assumption that the same data array is being plotted each time. If PVDRAW is used for different data by one program, each change of data should be preceded by a call of PVNEW; failure to call PVNEW where necessary may cause errors in scaling.

Availability

Section 5, released version 2-5.

See Also

PVDRAW.


PVSCAL

This page uses frames, but your browser doesn't support them.


PVSCAL

SUBROUTINE PVSCAL (XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX)

Purpose

to specify the data scales for use on perspective volume pictures.

Argument(s)

XMIN,XMAX | REAL expressions | x range of data
YMIN,YMAX | REAL expressions | y range of data
ZMIN,ZMAX | REAL expressions | z range of data

Description

PVSCAL specifies the data scales to be used when converting from data coordinates to the underlying 2-D Cartesian coordinates with KPVXY.

By default, data scales coinciding with the array subscripts are used. That is, x-scales are from 1-NX, y-scales are from 1-NY and z-scales are from 1-NZ, where NX, NY and NZ are the array dimensions supplied as arguments to PVDRAW.

Availability

Section 5, released version 2-5.

Default

Calling PVSCAL with equal minimum and maximum values for x, y or z restores the corresponding default scale.

See Also

KPVXY and PVDRAW.


PVVIEW

This page uses frames, but your browser doesn't support them.


PVVIEW

SUBROUTINE PVVIEW (DIST, IHANG, IVANG)

Purpose

to specify the viewing position for perspective volumes.

Argument(s)

DIST | REAL expression | Distance from the object
IHANG | INTEGER expression | Horizontal angle
IVANG | INTEGER expression | Vertical angle

Description

By default, the perspective volume drawn by PVDRAW is drawn from a fixed position which is 2.0* R from the centre of the object where R is the distance across the data array, at a horizontal angle of 35° and a vertical angle of 20°. PVVIEW specifies an alternative viewing position for perspective volumes.

DIST specifies the distance of the observer from the centre of the object, and is expressed as a multiple of the distance across the data array from the first point to the last; IHANG specifies the horizontal rotation and IVANG specifies the vertical rotation; both should be given in degrees.

Availability

Section 5, released version 2-5.

Default

PVVIEW(2.0,35,20) restores the default.

See Also

PVDRAW.


PVXLIM

This page uses frames, but your browser doesn't support them.


PVXLIM

SUBROUTINE PVXLIM (XMIN, XMAX)

Purpose

to specify x data limits used to draw a perspective volume.

Argument(s)

XMIN,XMAX REAL expressions x range of data

Description

By default, PVDRAW draws a representation of the whole data array. PVXLIM specifies (as percentages) the range of x values to be included in the picture; the possible values for XMIN and XMAX range from 0.0 to 100.0.

Availability

Section 5, released version 2-5.

Default

Calling PVXLIM with equal values of XMIN and XMAX restores the default.

See Also

PVCONT, PVDRAW, PVYLIM and PVZLIM.


PVYLIM

This page uses frames, but your browser doesn't support them.


PVYLIM

SUBROUTINE PVYLIM (YMIN, YMAX)

Purpose

to specify the y data limits used to draw a perspective volume.

Argument(s)

YMIN,YMAX REAL expressions y range of data

Description

By default, PVDRAW draws a representation of the whole data array. PVYLIM specifies (as percentages) the range of y values to be included in the picture; the possible values for YMIN and YMAX range from 0.0 to 100.0.

Availability

Section 5, released version 2-5.

Default

Calling PVYLIM with equal values of YMIN and YMAX restores the default.

See Also

PVCONT, PVDRAW, PVXLIM and PVZLIM.


PVZLIM

This page uses frames, but your browser doesn't support them.


PVZLIM

SUBROUTINE PVZLIM (ZMIN, ZMAX)

Purpose

to specify z data limits used to draw a perspective volume.

Argument(s)

ZMIN,ZMAX REAL expressions z range of data

Description

By default, PVDRAW draws a representation of the whole data array. PVZLIM specifies (as percentages) the range of z values to be included in the picture; the possible values for ZMIN and ZMAX range from 0.0 to 100.0.

Availability

Section 5, released version 2-5.

Default

Calling PVZLIM with equal values of ZMIN and ZMAX restores the default.

See Also

PVCONT, PVDRAW, PVXLIM and PVYLIM.


QCURVE

This page uses frames, but your browser doesn't support them.


QCURVE

SUBROUTINE QCURVE (MAXPTS, XARR, YARR, NPTS)

Purpose

to return the coordinates of a stored curve.

Argument(s)

MAXPTS | INTEGER expression | Maximum points to receive per call
XARR,YARR | REAL arrays | Dimensioned at least MAXPTS to receive coordinates of points
NPTS | INTEGER variable | To receive number of points

Description

Some SIMPLEPLOT operations can remember coordinates of curves for extraction by QCURVE (see CTHOLD). Each call of QCURVE can return between 0 and MAXPTS coordinates in arrays XARR and YARR; NPTS is set to the number of points returned. The stored coordinates can constitute any number of separate curves which can be extracted by repeated calls of QCURVE. Any curves containing more than MAXPTS points will also require multiple calls of QCURVE.

{@{}cp{8cm}@{}} NPTS | Interpretation of replies
NPTS=MAXPTS | The curve may be incomplete either because there are more points to this curve segment or because there is another curve segment; continuation of the current segment is signified by the first point received by next call of QCURVE duplicating the value of last point of the previous segment: (XARR(MAXPTS),YARR(MAXPTS))
0<NPTS<MAXPTS | (XARR(NPTS),YARR(NPTS)) is the final point of a curve
NPTS=0 | No coordinates retrieved - end of process
If there are no stored coordinates to retrieve, a diagnostic is issued.

Availability

Section plus, released version 2-13.

Diagnostics

  (Curve storage empty)1

See Also

CTHOLD, ZEDGE, ZELEMS, ZZEDGE, ZZELMS, *CONT, and *CUT.

Examples

Labelling contour curves
Storing and retrieving curve coordinates


QDEV

This page uses frames, but your browser doesn't support them.


QDEV

SUBROUTINE QDEV (NDEV, NSITE, NABS, SNAME, SDESC)

Purpose

to inquire details of a menu entry for a specific device option.

Argument(s)

NDEV | INTEGER expression | Position of option in S.E.P. menu
NSITE | INTEGER variable | To receive site number
NABS | INTEGER variable | To receive absolute number
SNAME | STRING variable | To receive site name
SDESC | STRING variable | To receive description

NDEV | Device option
0 | the currently selected device option
>0 | the NDEVth entry in the menu

Description

The SIMPLEPLOT Single Entry Point device driver system provides device options which are tabulated when interactive device selection is requested and displayed as a menu. Each device option has associated with it a site number, absolute number, site name and description. QDEV inquires the values of NSITE, NABS, SNAME and SDESC for any device option; the value of NDEV indicates which device option is required.

If no device is open and NDEV=0, or if there is no NDEVth entry in the menu, QDEV returns NSITE=0, NABS=0, and SNAME and SDESC are both filled with spaces.

In order to ensure that the full text string is received, SNAME and SDESC should be declared as and CHARACTER*40 respectively.

Availability

Section plus, released version 2-11.

See Also

DEVNAM and DEVNO.


QFFSIZ

This page uses frames, but your browser doesn't support them.


QFFSIZ

SUBROUTINE QFFSIZ (WCMS, HCMS)

Purpose

to inquire the physical size of current fast area-fill characters.

Argument(s)

WCMS | REAL variable | To receive width (in cms)
HCMS | REAL variable | To receive height (in cms)

Description

QFFSIZ inquires the width and height (in centimetres) of the current fast area-fill characters. It is only possible to find out this information when a SIMPLEPLOT page has been started; if QFFSIZ is called when there is no page, zero width and height are returned. If QFFSIZ is to be used in order to establish a suitable picture size, first use NEWPAG to start a page.

If QFFSIZ is called without a prior call of FFSIZE, the current default size for shaded contour maps is returned. The default size for raster pictures (eg. shaded surfaces) can be determined by preceding a call to QFFSIZ with FFSIZE(0.5,0.5).

Availability

Section plus, released version 2-12.

See Also

FFSET, FFSIZE and NEWPAG.


QGSCAL

This page uses frames, but your browser doesn't support them.


QGSCAL

SUBROUTINE QGSCAL (XMIN, XMAX, YMIN, YMAX)

Purpose

to inquire the limits in the underlying Cartesian scale corresponding to the current map.

Argument(s)

XMIN | REAL variable | To receive minimum value of x scale
XMAX | REAL variable | To receive maximum value of x scale
YMIN | REAL variable | To receive minimum value of y scale
YMAX | REAL variable | To receive minimum value of y scale

Description

The GG* drawing subroutines use general purpose SIMPLEPLOT software to produce graphical output. QGSCAL inquires the underlying SIMPLEPLOT user coordinates corresponding to the current map. This subroutine must be called after a map has been started by GGNEW. If not, a diagnostic is issued and no-data values are returned.

If the region selected cannot be plotted with the current projection, a diagnostic is issued, and the arguments of QGSCAL are set to the current no-data value.

Availability

Section 6, released version 2-12.

Diagnostics

  [QGSCAL:None of current region may be plotted]
{} [QGSCAL:Scales have not been set]

See Also

GGNEW.

Examples

Underlying Cartesian scales
Controlling the graticule
Hedgehog plots


QIBRFL

This page uses frames, but your browser doesn't support them.


QIBRFL

SUBROUTINE QIBRFL (D3ARR, NX, NY, NSETS, ZMIN, ZMAX)

Purpose

to inquire the z scale required by an Isometric 3-D barchart.

Argument(s)

D3ARR | REAL 3-D array | NX * NY * NSETS array of user (z) values
NX,NY,NSETS | INTEGER expressions | Dimensions of 3-D data array
ZMIN | REAL variable | To receive minimum z
ZMAX | REAL variable | To receive maximum z

Description

QIBRFL returns the minimum and maximum values required on the z scale for ISBRFL to plot the data in array D3ARR with the current base z value. This may be used to establish the z scale to set 3-D scales before drawing a stacked barchart.

Availability

Section plus, released version 2-14.

Diagnostics

  (QIBRFL invalid dimensions)1

See Also

ISBRBZ and ISBRFL.


QKYCAP

This page uses frames, but your browser doesn't support them.


QKYCAP

SUBROUTINE QKYCAP (LABARR, NARR, ITYPE, NROWS, NCOLMS)

Purpose

to inquire the size of a key or caption area to hold a set of captions.

Argument(s)

LABARR | STRING array | Set of labels
NARR | INTEGER expression | Number of labels in LABARR
ITYPE | INTEGER expression | Intended use of text strings
NROWS | INTEGER variable | To receive number of rows
NCOLMS | INTEGER variable | To receive nominal number of columns

ITYPE | Text usage
1 | Keys or captions relating to pictures
2 | Keys or captions relating to groups/pages

Description

QKYCAP inquires the number of equivalent rows and columns which a set of a text strings would fill in a key or caption area (see DEFCAP and DEFKEY). Because SIMPLEPLOT scales text according to whether the key (or caption area) relates to the picture or to the page, an additional argument, ITYPE is required to describe the text usage.

QKYCAP cannot be called until a new picture/page has been started.

Availability

Section plus, released version 2-11.

See Also

QSTR7, DEFCAP and DEFKEY.

Examples

Sequences on contour maps


QNODAT

This page uses frames, but your browser doesn't support them.


QNODAT

SUBROUTINE QNODAT (VARW)

Purpose

to inquire the current value representing no-data.

Argument(s)

VARW REAL variable To receive no-data value

Description

QNODAT sets the variable VARW to the REAL value which is currently in use within SIMPLEPLOT to represent the absence of a data value. The default no-data value is -1.0E20.

Availability

Section 1, released version 2-10.

See Also

NODATA.

Examples

Surface pictures of ungridded data
Contour maps of ungridded data
Hedgehog plots


QPAGE

This page uses frames, but your browser doesn't support them.


QPAGE

SUBROUTINE QPAGE (WCMS, HCMS)

Purpose

to inquire the maximum page size of the current device.

Argument(s)

WCMS | REAL variable | To receive page width (in cms)
HCMS | REAL variable | To receive page height (in cms)

Description

QPAGE inquires the page size of the current device; the values of WCMS and HCMS returned are centimetre values which can be used as a page size (PAGE(WCMS,HCMS)) on the current device, with no shrinkage.

Availability

Section plus, released version 2-11.

See Also

PAGE.


QPIC

This page uses frames, but your browser doesn't support them.


QPIC

SUBROUTINE QPIC (X0, Y0, XL, YL)

Purpose

to inquire the position and size of the current picture.

Argument(s)

X0,Y0 | REAL variables | To receive centimetre coordinates of the bottom left corner
XL | REAL variable | To receive picture width in centimetres
YL | REAL variable | To receive picture height in centimetres

Description

QPIC inquires the position and size of the current picture. These may be useful for positioning subsequent pictures relative to this one.

A new picture must be started before QPIC is called.


QPIXLS

This page uses frames, but your browser doesn't support them.


QPIXLS

Availability

Section 1, released version 2-14.

SUBROUTINE QPIXLS (NX, NY)

Purpose

to inquire number of pixels on current device.

Argument(s)

NX | INTEGER variable | To receive number of pixels horizontally
NY | INTEGER variable | To receive number of pixels vertically

Description

QPIXLS inquires the numbers of pixels horizontally and vertically on the current device.

If QPIXLS is called before a device is open, the device opening procedure is performed before the reply is returned. If pixel details are not available (eg. on a non-pixel device) NX=0 and NY=0 are returned.

Availability

Section plus, released version 2-11.

See Also

QPAGE.


QPVLEV

This page uses frames, but your browser doesn't support them.


QPVLEV

SUBROUTINE QPVLEV (D3ARR, NX, NY, NZ, VARMIN, VARMAX)

Purpose

to inquire the data level(s) that would currently be plotted by PVDRAW from the specified array.

Argument(s)

D3ARR | REAL 3-D array | Data values
NX,NY,NZ | INTEGER expressions | Dimensions of D3ARR
VARMIN,VARMAX | REAL variables | To receive the two data levels

Description

QPVLEV inquires the value of the current data levels. The lower data level is returned in VARMIN and the higher data level is returned in VARMAX; if only one level would be drawn, VARMIN and VARMAX are both assigned the same value.

The data level(s) plotted by PVDRAW are either the default value(s) or those specified using PVLEV or PVLEVS. Also, if user-defined values lie outside the range of data values, or outside the plotting range specified by SFLIMS, SIMPLEPLOT may override these specified values. QPVLEV returns the values which would currently be plotted by PVDRAW.

Availability

Section 5, released version 2-11.

See Also

PVDRAW, PVLEV, PVLEVS and SFLIMS.


QSFLAB

This page uses frames, but your browser doesn't support them.


QSFLAB

SUBROUTINE QSFLAB (VARMIN, VARMAX, VARSTP)

Purpose

to inquire of the range of data and contour interval on latest 3-D plot.

Argument(s)

VARMIN | REAL variable | To receive first z value
VARMAX | REAL variable | To receive last z value
VARSTP | REAL variable | To receive contour interval

Description

QSFLAB inquires the limits of the z plotting range, and the interval between contours, on the latest surface plot, and place their REAL values in the variables VARMIN, VARMAX and VARSTP.

Availability

Section 2, released version 2-11.

See Also

SFLAB.


QSPLOT

This page uses frames, but your browser doesn't support them.


QSPLOT

SUBROUTINE QSPLOT (STR)

Purpose

to inquire the current version of SIMPLEPLOT.

Argument(s)

STR STRING variable to receive software version

Description

The first diagnostic message output by SIMPLEPLOT includes the current version; for example:
   (SIMPLEPLOT Mark 2-15(000)F)
QSPLOT can be called to get a character representation of this version number, eg. 2-15(000)F.

In order to ensure that the full text string is received, STR should be declared as .


QSTAT

This page uses frames, but your browser doesn't support them.


QSTAT

Availability

Section 1, released version 2-14.

SUBROUTINE QSTAT (ISTAT)

Purpose

to inquire the status of the last SIMPLEPLOT call.

Argument(s)

ISTAT INTEGER variable To receive status value

Description

Each SIMPLEPLOT subroutine sets a status flag to 0 before it performs any functions. During the execution of the subroutine, the status flag is changed to 1 whenever output is omitted due to lack of space or an invalid request. QSTAT returns the value of the status flag (in ISTAT) which resulted from the most recently called SIMPLEPLOT subroutine.

If QSTAT is the first SIMPLEPLOT subroutine called, ISTAT is returned with a value of -1.

DIAGLV(2) and DIAGLV(4) produce explanatory diagnostic messages for most of the conditions which set ISTAT to 1.

Availability

Section plus, released version 2-12.

See Also

DIAGLV.


QSTR

This page uses frames, but your browser doesn't support them.


QSTR

SUBROUTINE QSTR (CAP, NCAP, ITYPE, WCMS, HCMS)

SUBROUTINE QSTR7 (CAP, ITYPE, WCMS, HCMS)

Purpose

to inquire the physical size of a text string.

Argument(s)

CAP | STRING expression | Text string for analysis
ITYPE | INTEGER expression | Intended use of text string
WCMS | REAL variable | To receive width of text string
HCMS | REAL variable | To receive height of string
NCAP | INTEGER expression | Number of characters in CAP

ITYPE | Text usage
0 | Normal usage - eg. picture or axis annotation
1 | Keys or captions relating to pictures
2 | Keys or captions relating to pages
3 | Titles relating to pictures
4 | Titles relating to pages

Description

QSTR/QSTR7 inquire the physical height and width of a text string. Because SIMPLEPLOT scales text according to its use, an additional argument ITYPE is required to describe the text usage.

As the size of text depends on the size of the page, QSTR7 cannot be called until a new picture/page has been started. If QSTR7 is called with no active page, the values WCMS=0.0 and HCMS=0.0 are returned.

Availability

Section plus, released version 2-11.

See Also

NEWPAG and QKYCAP.


QV3DLM

This page uses frames, but your browser doesn't support them.


QV3DLM

SUBROUTINE QV3DLM (VARX1, VARX2, VARY1, VARY2, VARZ1, VARZ2)

Purpose

to inquire the three-dimensional limits for plottable data.

Argument(s)

VARX1 | REAL variable | To receive value at start of x scale
VARX2 | REAL variable | To receive value at end of x scale
VARY1 | REAL variable | To receive value at start of y scale
VARY2 | REAL variable | To receive value at end of y scale
VARZ1 | REAL variable | To receive value at start of z scale
VARZ2 | REAL variable | To receive value at end of z scale

Description

ViSualization scales are set to accommodate all data within a three-dimensional box. By default, the x, y and z limits of this box are all -1.0 to +1.0, although VS3DLM can change these limits.

QV3DLM inquires the data limits used for the current picture.

All points which lie inside the limits after transformations have been applied can be plotted. Other points may lie outside the 2-D SIMPLEPLOT scales.

QV3DLM may also be used to calculate the Origin, which is at the centre of the Limiting Box. This is at

  ((VARX1 + VARX2)/2, (VARY1 + VARY2)/2, (VARZ1 + VARZ2)/2)

QV3DLM gives the limitis for the current picture. It must be called after the scales have been set by VSNEW. If VSNEW has not been called, all the variables are set to the current `no data' value.

Availability

Section 7, released version 2-13.

Diagnostics

  (QV3DLM: No current ViSualization picture)1

See Also

VS3DLM.


QVBRFL

This page uses frames, but your browser doesn't support them.


QVBRFL

SUBROUTINE QVBRFL (Z3ARR, NX, NY, NSETS, ZMIN, ZMAX)

Purpose

to inquire the z scale required by a ViSualization 3-D barchart.

Argument(s)

Z3ARR | REAL 3-D array | NX * NY * NSETS array of user (z) values
NX,NY,NSETS | INTEGER expressions | Dimensions of 3-D data array
ZMIN | REAL variable | To receive minimum z
ZMAX | REAL variable | To receive maximum z

Description

QVBRFL returns the minimum and maximum values required on the z scale for VSBRFL to plot the data in array Z3ARR with the current base z value. This may be used to establish the z scale to set 3-D scales before drawing a stacked barchart.

Availability

Section 7, released version 2-14.

Diagnostics

  (QVBRFL: Invalid array dimension)1

See Also

VS3DLM, VSBRBZ and VSBRFL.

Examples

Inquiring the size of stacked bars


QVDPLM

This page uses frames, but your browser doesn't support them.


QVDPLM

SUBROUTINE QVDPLM (VARMIN, VARMAX)

Purpose

to inquire the range of depths for the current ViSualization picture.

Argument(s)

VARMIN | REAL variable | To receive minimum depth
VARMAX | REAL variable | To receive maximum depth

Description

QVDPLM gives the range of depths of points inside the ViSualization Limiting Box. The limits for the box are set by VS3DLM, given the current scaling mode set by VSFULL.

Depth increases away from the Viewing Position - only points which are the other side of the Viewing Plane have positive depths.

The range of depths is affected by VSFULL as follows:

  • VSFULL(0) (default), VARMIN >= -sqrt(3) and VARMAX <= +sqrt(3).

  • VSFULL(1), VARMIN = -sqrt(3) and VARMAX = +sqrt(3).

  • VSFULL(2), the range of depths depends on the transformations specified by VSMAG, VSROT, and VSTRAN.

QVDPLM gives the limits for the current picture. It must be called after the scales have been set by VSNEW. If VSNEW has not been called, all the variables are set to the current `no data' value.

Availability

Section 7, released version 2-13.

Diagnostics

  (QVDPLM: No current ViSualization picture)1

See Also

VS3DLM, VSFULL, VSVRTP and VSVXYZ.


QVGET

This page uses frames, but your browser doesn't support them.


QVGET

SUBROUTINE QVGET (IXLOCN, IYLOCN, NX, NY, IARRAY, ZARRAY)

Purpose

to return a raster image and ZBuffer.

Argument(s)

IXLOCN,IYLOCN | INTEGER expressions | Column and row positions of the bottom left corner
NX,NY | INTEGER expressions | Number of columns and rows to be returned
IARRAY | BYTE array | To receive raster image
ZARRAY | BYTE array | To receive ZBuffer

Description

QVGET returns NX*NY elements of the raster image and ZBuffer into arrays IARRAY and ZARRAY. The user program would normally call QVLIMS first, to establish suitable values for NX, NY, IXLOCN and IYLOCN.

The dimensions in bytes of IARRAY can be calculated from NX, NY and the number of bytes for each element returned by QVSIZE.

QVGET is only valid between calls of VSNEW and VSOUT.

Availability

Section 7, released version 2-?.

Diagnostics

  (QVGET: No raster image)1

See Also

QVLIMS, QVSIZE and VSPUT.


QVLIMS

This page uses frames, but your browser doesn't support them.


QVLIMS

SUBROUTINE QVLIMS (ITYPE, IXLOCN, IYLOCN, NX, NY)

Purpose

to inquire the dimensions of the raster image.

Argument(s)

ITYPE | INTEGER expression | Type of dimensions required (see below)
IXLOCN,IYLOCN | INTEGER variables | To receive column and row positions of the bottom left corner
NX,NY | INTEGER variables | To receive the number of columns and rows

Description

QVLIMS returns the position and size of the internal raster, subject to the value of ITYPE:

ITYPE | Description
0 | Entire internal raster. (IXLOCN,IYLOCN) is always (0,0)
1 | Extent of current raster image
When the internal raster is too big to fit into memory, NX and NY are returned as -2.

Returned values for NX/NY:

NX/NY | Meaning
-2 | Image cannot be returned. Some data on backing store
-1 | VSNEW has not been called. A diagnostic message is output
0 | Requested image is empty
>0 | The raster image contains some data
QVLIMS is only valid between calls of VSNEW and VSOUT.

Availability

Section 7, released version 2-?.

Diagnostics

  (QVLIMS: No raster image)1
 (QVLIMS: Integer I out of range)1

See Also

QVBYTE, QVGET and VSPUT.


QVNOIM

This page uses frames, but your browser doesn't support them.


QVNOIM

SUBROUTINE QVNOIM (NIMAGE)

Purpose

to inquire the representation of the `no image' value in a raster image dot.

Argument(s)

NIMAGE INTEGER variable To receive raster `no image' value

Description

QVNDT returns an INTEGER corresponding to the `no image' value in the raster image. `No image' values are not transferred to the graphics display, so that a non-rectangular raster image does not overwrite any graphics which are not part of the image.

The width in bytes of a raster image dot is given by QVBYTE.

QVNDT is only valid between calls of VSNEW and VSOUT.

Availability

Section 7, released version 2-?.

Diagnostics

  (QVNOIM: No raster image)1

See Also

QVGET and VSPUT.


QVSCAL

This page uses frames, but your browser doesn't support them.


QVSCAL

SUBROUTINE QVSCAL (VARXMN, VARXMX, VARYMN, VARYMX)

Purpose

to inquire the scale limits in SIMPLEPLOT user coordinates corresponding to the current projected plotting area.

Argument(s)

VARXMN | REAL variable | To receive minimum value of x scale
VARXMX | REAL variable | To receive maximum value of x scale
VARYMN | REAL variable | To receive minimum value of y scale
VARYMX | REAL variable | To receive maximum value of y scale

Description

QVSCAL returns the maximum possible plotting area for the current ViSualization picture. The plotting limits may be altered by calls to VS3DLM, VSFIT, VSFITP, VSFULL, VSVRTP or VSVXYZ.

If a point is within the limits specified by VS3DLM, the range of possible x-y values is determined by the Scaling Mode selected by VSFULL:

  • VSFULL(0) (default),

    VARXMN/VARYMN>=-sqrt(3) and VARXMX/VARYMX<=+sqrt(3).

  • VSFULL(1), VARXMN/VARYMN=-sqrt(3), and VARXMX/VARYMX=+sqrt(3).

  • VSFULL(2), the 2-D limits depends on the transformations specified by VSMAG, VSROT and VSTRAN.

QVSCAL gives the limits for the current picture. It must be called after the scales have been set by VSNEW. If VSNEW has not been called, all the variables are set to the current `no data' value.

Availability

Section 7, released version 2-13.

Diagnostics

  (QVSCAL: No current ViSualization picture)1

See Also

VS3DLM, VSFIT, VSFITP, VSFULL, VSVRTP and VSVXYZ.

Examples

Using 2-D coordinates


QVSIZE

This page uses frames, but your browser doesn't support them.


QVSIZE

SUBROUTINE QVSIZE (ITYPE, ISIZE)

Purpose

to inquire the number of bytes per dot in the raster image and ZBuffer.

Argument(s)

ITYPE | INTEGER expression | Type of data element corresponding to ISIZE
ISIZE | INTEGER variable | To receive the number of bytes per dot in the ZBuffer

Description

QVBYTE returns the amount of storage used internally for each dot of a raster image subject to the value of ITYPE:

ITYPE | Description
0 | Return width of an image `dot' in bytes
1 | Return width of a ZBuffer element in bytes

Availability

Section 7, released version 2-?.

See Also

QVGET, QVNDAT and VSPUT.


QWZSCL

This page uses frames, but your browser doesn't support them.


QWZSCL

QVSIZE

Specifications

RANGE

SUBROUTINE QWZSCL (ZSTART, ZSTOP)

Purpose

to inquire the current z scales for curves on waterfall charts.

Argument(s)

ZSTART,ZSTOP

REAL variables

To receive range of z covered

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. Each curve is drawn on a scale covering the same z range.

QWZSCL inquires the current scales for any single curve on the latest waterfall chart.

QWZSCL can not return a sensible value if no waterfall scales exist. If WFCHT, WFDRAW or WFZSCL has not been called already, a diagnostic is issued and ZSTART and ZSTOP are set to the current no-data value.

Availability

Section plus, released version 2-13.

Diagnostics

  (No current waterfall Z scale)1

See Also

KWZVAL and WFZSCL.

Examples

Fine control of waterfall charts


RANGE

This page uses frames, but your browser doesn't support them.


RANGE

SUBROUTINE RANGE (X1, Y1, X2, Y2)

Purpose

to draw a line indicating a range of values.

Argument(s)

X1,Y1 | REAL expressions | Coordinates of the first point
X2,Y2 | REAL expressions | Coordinates of the second point

Description

RANGE draws [1] the mathematically straight line from (x1, y1) to (x2, y2), with a short perpendicular line across each end. This line may be represented by a curve when plotted on non-linear scales or in polar coordinates.

The points (x1, y1) and (x2, y2) are specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine KXYXY.

By default, all drawing is restricted by the limits of the picture scales; range bars can spill over the edge of a picture but the coordinates at either end must not exceed these limits. If coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 1, released before version 2-5.

Diagnostics

  (**x1,y1,x2,y2**)2

See Also

CLIPLV, DRAWLN and BRKNPT.

Examples

Drawing a cross section
Range plotting


RASTER

This page uses frames, but your browser doesn't support them.


RASTER

SUBROUTINE RASTER (ICODE)

Purpose

to specify the shading technique to be used for shaded surfaces.

Argument(s)

ICODE INTEGER expression Type of shading

ICODE | Shading technique
0 | Disable raster emulation (use the painter's algorithm)
1 | Enable raster emulation

Description

By default, shaded surface pictures are plotted by building up a raster image internally which is output using the current fast area-fill characters. RASTER specifies an alternative shading technique for shaded surfaces.

Axes, text and keys are not drawn as part of this raster picture but surface lines (eg. outlines, crosshatching) are included in the raster image; for such lines, smaller fast area-fill characters may be desirable (see FFSIZE).

There is a limit to the number of different levels (or shading patterns) which can be represented on a raster picture; in the current implementation this limit is 126 levels.

The painter's algorithm is an alternative to raster emulation on devices which can overstrike shaded areas (or rub out software shading lines). This technique exploits the representation of a three-dimensional surface on a two-dimensional picture whereby some of the data values are hidden `behind' the shape which is actually drawn. When using the painter's algorithm, data at the `back' of the picture is plotted first and then overdrawn where appropriate.

Availability

Section plus, released version 2-13.

Default

RASTER(1) restores the default.

See Also

FFSET, FFSIZE, ISSBAS, ISSBCK, ISSHAD, ISSKRT, ISSPAT and QFFSIZ.

Examples

Raster emulation and the painter's algorithm
Backdrops and bases


REDRAW

This page uses frames, but your browser doesn't support them.


REDRAW

SUBROUTINE REDRAW (ICHAN, IDEV)

Purpose

to redraw the metafile from the specified I/O channel to the specified device.

Argument(s)

ICHAN | INTEGER expression | Channel number
IDEV | INTEGER expression | Device number

Description

A SIMPLEPLOT metafile can be created using either MTFILE or the META device driver. Once created, the metafile opened on FORTRAN I/O channel ICHAN can be redrawn in its entirety by REDRAW to the device specified by IDEV. REDRAW continues reading from channel number ICHAN until the end of file is encountered. If the metafile contains details of more than one SIMPLEPLOT page, a succession of separate plots is produced.

If REDRAW is called with ICHAN=0 while a SIMPLEPLOT page is still being assembled, the current scratch metafile is redrawn.

SIMPLEPLOT can only address one device at a time; if a different device is specified for REDRAW from the one in use, SIMPLEPLOT closes the current device, and then opens the device referenced by IDEV. Any subsequent plotting from the program automatically reverts to the original device, and diagnostic messages are issued.

IDEV can have any value which is available to DEVNO including IDEV=0 to invoke interactive selection (S.E.P. device driver system only).

Availability

Section plus, released version 2-8.

Diagnostics

  (DEVICE CLOSED)1
 (DEVICE OPENED: device)1

See Also

MTCOMM, MTCLOS, MTDRAW, MTFILE, MTMISS, MTONLY and MTOPEN.


RESCLR

This page uses frames, but your browser doesn't support them.


RESCLR

SUBROUTINE RESCLR

Purpose

to cancel all areas reserved for captions and keys.

Argument(s)

None

Description

Areas reserved for sequences of captions and keys continue to be allocated with each new picture until the reservation is cancelled by another call of DEFCAP or DEFKEY. RESCLR cancels all reserved areas (for keys and captions) and set the number of reserved areas back to zero.

The limit on the maximum number of reserved areas for keys and captions is 9.

Availability

Section 4, released before version 2-5.

See Also

DEFCAP and DEFKEY.


RESNXT

This page uses frames, but your browser doesn't support them.


RESNXT

SUBROUTINE RESNXT (VCHAR, HCHAR)

Purpose

to specify the reserved area which is to be used next.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of reserved area
HCHAR | CHARACTER*1 | Horizontal position of reserved area

Description

When more than one area has been reserved for keys or captions, it becomes necessary to indicate which area a key entry or caption is to occupy. If RESNXT is called with arguments VCHAR and HCHAR matching those of one of the reserved areas, subsequent calls of subroutines which draw a key entry or caption are aimed at the next available space in that area. RESNXT has effect until a different area is selected by another call of RESNXT or until a new area is defined by DEFCAP or DEFKEY.

The limit on the maximum number of reserved areas for keys and captions is 9.

RESNXT only interacts with key/caption areas which have been defined using DEFKEY/DEFCAP with ITYPE=3; if RESNXT is called specifying a position for which there is no corresponding reserved area, a diagnostic is issued.

The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released before version 2-5.

Diagnostics

  (RESNXT ignored, area not reserved)1

See Also

RESCLR, DEFCAP and DEFKEY.


RGCALC

This page uses frames, but your browser doesn't support them.


RGCALC

REAL FUNCTION RGCALC (X, Y, Z2ARR, NX, NY)

Purpose

to interpolate z=f(x,y) from 3-D data on a regular grid.

Argument(s)

X,Y | REAL expressions | Coordinates of a point
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

The value of z at (x,y) is evaluated by two-way linear interpolation within the rectangular cell of the grid in which (x,y) is located.

If X or Y lie outside the limits of the data, RGCALC returns the current no-data value.

Availability

Section 2, released before version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1

See Also

NODATA, QNODAT, SFEQX and SFEQY.

Examples

Finding the height of a point


RGCNTS

This page uses frames, but your browser doesn't support them.


RGCNTS

SUBROUTINE RGCNTS (Z2ARR, NX, NY)

Purpose

to draw a contour map from 3-D data on a regular grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

RGCNTS draws a contour map on the current picture which represents 3-D data on a regular grid. Contours are drawn for equally-spaced z values within the range of data held in Z2ARR. By default, an interval is allocated to give between 5 and 10 contour levels over the range.

The contours drawn by RGCNTS use the four pen pointers as follows:

  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set
CTBRKN overrides the bundled line-drawing attributes of pens associated with the four pen pointers.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour map not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTLABS, CTNUMB, RIDDLE, SFEQX, SFEQY, SFEQZ, SFEQZD, SFLIMS, SFZSCL, SQBRKN, SQPEN, SQZLAB and SQZVAL.

Examples

Line contours
Sequences on contour maps
Polar contour map
Drawing a cross section
Contouring on a projected region
Storing and retrieving curve coordinates


RGCONT

This page uses frames, but your browser doesn't support them.


RGCONT

SUBROUTINE RGCONT (ZLEV, Z2ARR, NX, NY)

Purpose

to draw a contour curve from 3-D data on a regular grid.

Argument(s)

ZLEV | REAL expression | Contour level
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

RGCONT draws [1] a contour curve on the current picture. The contour curve corresponds to z=ZLEV from 3-D data (on a regular grid) held in Z2ARR.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour curve not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTHOLD, CTLABS, CTNUMB, QCURVE, RIDDLE, SFEQX and SFEQY.

Examples

Individual contours
Storing and retrieving curve coordinates


RGCUT

This page uses frames, but your browser doesn't support them.


RGCUT

SUBROUTINE RGCUT (X1, Y1, X2, Y2, Z2ARR, NX, NY)

Purpose

to draw a 2-D curve of a surface section from 3-D data on a regular grid.

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of two points
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

If the surface represented by the data in Z2ARR were cut along the straight line from (x1, y1) to (x2, y2), the side view of the section would show as a two-dimensional curve of the variation of the data along that line.

RGCUT draws [1] the curve of surface height vs. distance from (x1, y1) on the current picture - suitable scales must be set up before attempting to draw a section.

Availability

Section 2, released before version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface section not all in range)2

See Also

CTBRKN, CTCURV, CTHOLD, QCURVE, SFEQX and SFEQY.

Examples

Drawing a cross section


RGSHAD

This page uses frames, but your browser doesn't support them.


RGSHAD

SUBROUTINE RGSHAD (ZLEV1, ZLEV2, ISHADE, Z2ARR, NX, NY)

Purpose

to shade the area between two contour levels from 3-D data on a regular grid.

Argument(s)

ZLEV1,ZLEV2 | REAL expressions | Contour levels
ISHADE | INTEGER expression | Shading pattern number
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

RGSHAD shades the area between contour levels z=ZLEV1 and ZLEV2 from 3-D data (on a regular grid) held in Z2ARR; the area is drawn on the current picture using shading pattern ISHADE. By default, the contours themselves are not drawn (see SHEDGE).

If data values, z, coincide with contour levels, only those equal to zmin are included within the shaded region, ie. zmin<= z < zmax, where zmin=MIN(ZLEV1,ZLEV2) and zmax=MAX(ZLEV1,ZLEV2).

Availability

Section plus, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contour not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, RGSHDS, SFEQX, SFEQY, SFMESH and SHEDGE.

Examples

Individual contours


RGSHDS

This page uses frames, but your browser doesn't support them.


RGSHDS

SUBROUTINE RGSHDS (Z2ARR, NX, NY)

Purpose

to draw a shaded contour map from 3-D data on a regular grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

RGSHDS draws a shaded contour map on the current picture from 3-D data on a regular grid. By default, the contour curves are drawn at equally-spaced z values using an interval chosen to give between 5 and 10 contours levels over the range of data held in Z2ARR; each of the contour intervals is shaded with a sequence of shading patterns; the contours themselves are not drawn (see SHEDGE).

Availability

Section plus, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contours not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, RGSHAD, RGCNTS, SFEQX, SFEQY, SHEDGE, SHPATT and SQ*.

Examples

Shaded contour map
Contour maps of ungridded data
Polar contour map
Shaded contour maps and surfaces
Drawing contours


RGSURF

This page uses frames, but your browser doesn't support them.


RGSURF

SUBROUTINE RGSURF (Z2ARR, NX, NY)

Purpose

to start a new picture and draw a surface from 3-D data on a regular grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR

Description

RGSURF starts a new picture, and draws a surface of the data in Z2ARR.

In order to draw a surface picture of polar data, z=f(r,theta), specify polar units with COORDS before calling RGSURF.

RGSURF uses the four pens pointers as follows:

  • [1] z >= 0, on underside of surface.
  • [2] z < 0, on underside of surface.
  • [3] z >= 0, top side of surface.
  • [4] z < 0, on top side of surface.
A shaded surface can be drawn according to a prior call of ISSHAD.

Availability

Section 2, released before version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface not all within picture)2
 (SURFACE OMITTED: CONSTANT DATA)1

See Also

IS*, ISSHAD, RIDDLE, SFEQX, SFEQY and SFZSCL.

Examples

A simple surface picture
Surface pictures of ungridded data
Waterfall charts and cascade surface pictures
Shaded contour maps and surfaces
Shaded surface pictures
Raster emulation and the painter's algorithm
Controlling shading patterns on shaded surfaces
Backdrops and bases


RIDDLE

This page uses frames, but your browser doesn't support them.


RIDDLE

SUBROUTINE RIDDLE (RVAL)

Purpose

to specify the level of elimination of redundant points for polylines.

Argument(s)

RVAL REAL expression Tolerance

Description

By default, no attempt is made to remove co-linear points which make up a polyline. RIDDLE specifies that a filtering process is to be applied to all polyline output which throws away intermediate points which are nearly co-linear. RVAL specifies the maximum permissible percentage error in thinning-out of polylines, that is, the tolerance to be used to determine co-linearity. RVAL must be in range 0.0 to 5.0 inclusive; any other value resets the default.

The filtering criterion relates to angles between vectors. Given a sequence of 3 points A, B and C to be joined by 2 vectors AB and BC, B is omitted if angle ABC is in the range 180-theta to 180+theta where tan(theta)

Availability

Section 1, released version 2-12.

Default

RIDDLE(0.0) restores the default.


SCALES

This page uses frames, but your browser doesn't support them.


SCALES

SUBROUTINE SCALES (XSTART, XSTOP, IXTYPE, YSTART, YSTOP, IYTYPE)

Purpose

to specify Cartesian scales for all 2-D plotting.

Argument(s)

XSTART | REAL expression | x scale value at left edge
XSTOP | REAL expression | x scale value at right edge
IXTYPE | INTEGER expression | Type of horizontal scale
YSTART | REAL expression | y scale value at bottom edge
YSTOP | REAL expression | y scale value at top edge
IYTYPE | INTEGER expression | Type of vertical scale

IXTYPE or IYTYPE | Type of scale
0 | Centimetre
1 | Linear
2 | Logarithmic
3 | Normal probability (%)

Description

By default, scales are linear in centimetres starting at zero. SCALES specifies the limits and types of both horizontal and vertical plotting scales. The relative values of the first and last scale values determine whether the scale increases or decreases.

SCALES resets the underlying coordinate system to Cartesian.

Scales are normally set before a picture is started and the same scales used for all relevant 2-D pictures until reset.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Range >=100; linear scale used)1
 (Range through 0; linear scale used)1

Default

Calling SCALES with XSTART=XSTOP and/or YSTART=YSTOP, or with IXTYPE=0 and/or IYTYPE=0, restores the default centimetre scaling (the values of all arguments are otherwise ignored).

See Also

KSCALE, XSCALE, YSCALE and EQSCAL.

Examples

Line contours
Simple plotting
A scattergram
Circles
Drawing axes
Drawing keys and captions
Bundled attributes
Labelled curves


SCLEAR

This page uses frames, but your browser doesn't support them.


SCLEAR

SUBROUTINE SCLEAR

Purpose

to clear the graphics screen independently of starting a new picture.

Argument(s)

None

Description

On a screen device, SIMPLEPLOT always clears the graphics screen immediately after starting a new page. SCLEAR performs the same clearing operation.

On a non-screen device (eg. a pen plotter or laser printer), SCLEAR has no effect.

Availability

Section 4, released version 2-7.

See Also

ENDPAG, OUTBUF, OWNIO and OWNNEW.


SETPNS

This page uses frames, but your browser doesn't support them.


SETPNS

SUBROUTINE SETPNS (IPEN1, IPEN2, IPEN3, IPEN4)

Purpose

to specify the pens associated with the four pen pointers.

Argument(s)

IPEN1 | INTEGER expression | Pen associated with pen pointer [1]
IPEN2 | INTEGER expression | Pen associated with [2]
IPEN3 | INTEGER expression | Pen associated with [3]
IPEN4 | INTEGER expression | Pen associated with [4]

IPENX | Pen usage
-1 | plotting is omitted on all devices
0 | plotting is done in background colour; this has no effect on pen plotters
1, 2, 3 ... | pens/bundles are selected as determined by the current device, palette and bundled attributes

Description

Four pen pointers are identified with different types of plotting operations, and different parts of composite operations, to enable the user to specify a combination of pen usage. The pointers identified with specific plotting operations are indicated by numbers in square brackets within the subroutine specifications. By default, all the pointers are associated with pen number 1. SETPNS specifies alternative pens to be associated with the four pen pointers. IPENi can have values -1, 0, 1, 2, 3, ... etc.

SETPNS(I,I,I,I) is equivalent to PEN(I).

By default, colour is the only line-drawing attribute associated with pens and the distinction between pens depends on the capabilities of the current device. BUNLPR specifies the attributes to be associated with pens when used for drawing lines to differentiate between pens even on monochrome devices.

Availability

Section 1, released before version 2-5.

Default

SETPNS(1,1,1,1) restores the default.

See Also

BUNLPR, PEN, SHPEN, ONEPEN, PENRGB, PENHLS, PENRST and WFPNS.

Examples

Sequences on contour maps
Bundled attributes


SFEQX

This page uses frames, but your browser doesn't support them.


SFEQX

SUBROUTINE SFEQX (XSTART, XSTEP)

Purpose

to specify the equally-spaced x values to be associated with gridded 3-D data.

Argument(s)

XSTART | REAL expression | x value of first data column
XSTEP | REAL expression | x interval between data columns

Description

By default, data on an unspecified regular x grid relates to the current plotting scales:
  • Surfaces: Current plotting scales do not apply, so XSTART=1.0 and XSTEP=1.0 are used.

  • Contours: XSTART and XSTEP are allocated such that the data cover the current plotting scales; if no scales have been specified, centimetre scaling is used.
SFEQX specifies the x values corresponding to the data grid. SFEQX must be called before one of the RG* (data on a regular grid) or Y* (data on a grid of equally-spaced x values with specified y values) subroutines.

By default, after a call to SFEQX, an isometric x-axis displays the range of values from XSTART to XSTART+XSTEP*(NX-1), where NX is specified as an argument to RGSURF/YSURF.

Availability

Section 2, released before version 2-5.

Default

Calling SFEQX with XSTEP=0.0 restores the default.

See Also

SFEQY.

Examples

Surface pictures of tartan-gridded data
Shaded contour maps and surfaces


SFEQY

This page uses frames, but your browser doesn't support them.


SFEQY

SUBROUTINE SFEQY (YSTART, YSTEP)

Purpose

to specify the equally-spaced y values to be associated with gridded 3-D data.

Argument(s)

YSTART | REAL expression | y value of first data row
YSTEP | REAL expression | y interval between data rows

Description

By default, data on an unspecified regular y grid relates to the current plotting scales:
  • Surfaces: Current plotting scales do not apply, so YSTART=1.0 and YSTEP=1.0 are used.

  • Contours: YSTART and YSTEP are allocated such that the data cover the current plotting scales; if no scales have been specified, centimetre scaling is used.
SFEQY specifies the y values corresponding to the data grid. SFEQY must be called before any of the RG* (data on a regular grid) or X* (data on a grid of specified x values with equally-spaced y values) subroutines.

By default, after a call to SFEQY, an isometric y-axis displays the range of values from YSTART to YSTART+YSTEP*(NY-1), where NY is specified as an argument to RGSURF/XSURF.

Availability

Section 2, released before version 2-5.

Default

Calling SFEQY with YSTEP=0.0 restores the default.

See Also

SFEQX.

Examples

Polar contour map
Shaded contour maps and surfaces
Stacked 3-D barchart


SFEQZ

This page uses frames, but your browser doesn't support them.


SFEQZ

SUBROUTINE SFEQZ (ZSTART, ZSTEP)

Purpose

to specify the equal spacing of contours.

Argument(s)

ZSTART | REAL expression | Offset value for contour levels
ZSTEP | REAL expression | Interval between contour levels

Description

By default, subroutines which draw a set of equally-spaced contour curves or a set of shaded contour regions, allocate an offset value (ZSTART=0.0) and an interval to produce between 5 and 10 contour levels at suitable values. SFEQZ specifies an alternative offset value and interval for contour levels on both surface pictures and contour maps.

After SFEQZ has been called, sets of equally-spaced contour curves are

drawn at all levels ZSTART+N*ZSTEP (n, a +ve or -ve integer) lying within the z plotting range.

SFEQZD overrides SFEQZ and vice versa.

If ZSTEP is less than 1.0E-4 * contour range, the default interval is used instead and, at diagnostic level 2, a diagnostic message is issued (see below).

SFEQZ also affects the interval between the values represented on a map key (see MPK7H and MPK7V).

Availability

Section 2, released before version 2-5.

Diagnostics

  (Too many contours: default used)2

Default

SFEQZ(0.0,0.0) restores the default.

See Also

ISTYPE, MPK7H, MPK7V, SFLIMS, SFEQZD, SFZSCL and SQZVAL.

Examples

Scales on contour maps and map keys
Extra labelling on contour maps
Sequences on contour maps


SFEQZD

This page uses frames, but your browser doesn't support them.


SFEQZD

SUBROUTINE SFEQZD (NSTEPS, DELTA)

Purpose

to specify the equal spacing of contours for discrete data.

Argument(s)

NSTEPS | INTEGER expression | Number of contour intervals
DELTA | REAL expression | Minimum interval between discrete data values

Description

By default, subroutines which draw a set of equally-spaced contour curves or a set of shaded contour regions, allocate an offset value and interval to produce between 5 and 10 contour levels at suitable values. SFEQZD specifies the number of contours and the interval between discrete data values, for equally-spaced contour levels on both surface pictures and contour maps.

After SFEQZD has been called, the z plotting range is divided into NSTEPS equal intervals, allowing a margin of DELTA*0.5 at each end of the range to accommodate discrete data values correctly. No attempt is made to ensure that the contour levels occur at `simple' numbers.

SFEQZ overrides SFEQZD and vice versa.

If DELTA is less than 1.0E-4 * contour range, the default interval is used instead and, at diagnostic level 2, a diagnostic message is issued (see below).

SFEQZD also affects the interval between the values represented on a map key (see MPK7H and MPK7V) and key labels are centred on samples rather than positioned between them.

Availability

Section plus, released version 2-11.

Diagnostics

  (Too many contours: default used)1

Default

SFEQZD(0,DELTA) restores the default.

See Also

ISTYPE, MPK7H, MPK7V, SFLIMS, SFEQZ, SFZSCL and SQZVAL.


SFLAB

This page uses frames, but your browser doesn't support them.


SFLAB

SUBROUTINE SFLAB

Purpose

to annotate the current 3-D picture with the range of values displayed.

Argument(s)

None

Description

SFLAB draws [2] a message indicating the z plotting range on a surface picture or contour map. For example,

  Z:-2 TO 2

If equally-spaced contours are included, the interval between them is also given. For example,

  Z:-2 TO 2 CONTOUR INTERVAL=0.5

The message is drawn at the "B"ottom, "L"eft of the picture.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Surface label inappropriate)2

See Also

QSFLAB.


SFLIMS

This page uses frames, but your browser doesn't support them.


SFLIMS

SUBROUTINE SFLIMS (Z1, Z2)

Purpose

to specify the z plotting range.

Argument(s)

Z1 | REAL expression | z value at start of z range
Z2 | REAL expression | z value at end of z range

Description

By default, the full range of the data supplied is plotted on surface pictures and contour maps. SFLIMS specifies an alternative range. Any parts of the supplied data which lie outside the range Z1 to Z2 are omitted:
  • Surface pictures: Holes are left in the surface where data values lie above or below the specified limits.

    The scale of the picture is not altered to make the cut-off picture fill the space available (see SFZSCL).

  • Contour maps: Blank areas are left in the contour map where data values lie above or below the specified limits. The default contour interval is chosen to suit the reduced data range.
SFLIMS also affects the range of values represented on a map key (see MPK7H and MPK7V): the data range of the key is the intersection of the data range (specified in the call to MPK7H or MPK7V) with that specified using SFLIMS and/or SFZSCL.

Availability

Section 2, released before version 2-5.

Default

Calling SFLIMS with Z1=Z2 restores the default.

See Also

MPK7H, MPK7V and SFZSCL.

Examples

Scales on contour maps and map keys


SFMESH

This page uses frames, but your browser doesn't support them.


SFMESH

SUBROUTINE SFMESH (MX, MY)

Purpose

to specify a mesh to be used for constructing contours and surfaces.

Argument(s)

MX | INTEGER expression | Number of x mesh lines used
MY | INTEGER expression | Number of y mesh lines used

Description

In order to get smoother edges to shaded contour regions, SIMPLEPLOT needs a finer grid; SFMESH specifies this grid. By default, the amount of detail in contour curves depends on the data structure:
  • Surfaces: A grid is used which depends on the x-y ranges of the data, possibly modified by a call of ISMESH. SFMESH specifies a grid to be used, overriding the default for contour curves and surfaces.
  • Contour pictures: SFMESH can be used to change the smoothness of curves by altering the concentration of interpolated points from which curves are constructed; if the mesh used differs from the data configuration, contouring may be slower.
For surfaces, SFMESH nominates a grid which is independent of the x-y ranges of the data. Please note that the x-range is divided into MX equal steps and the y-range is divided into MY equal steps; on surfaces these x steps and y steps are plotted with equal size in the picture.

ISMESH has no effect while SFMESH is active.

Availability

Section plus, released version 2-11.

Default

Calling SFMESH with MX and/or MY less than 2 restores the default.

See Also

ISMESH and CTCURV.

Examples

Contour maps of a user-defined function
Surface pictures of a user-defined function
Polar contour map


SFZSCL

This page uses frames, but your browser doesn't support them.


SFZSCL

SUBROUTINE SFZSCL (ZSTART, ZSTOP)

Purpose

to specify the z scale of surface pictures and contour maps independently of the data set.

Argument(s)

ZSTART | REAL expression | Start of z scale
ZSTOP | REAL expression | End of z scale

Description

By default, surface pictures are drawn with an increasing z scale covering the same range as the data. SFZSCL specifies an alternative z scale such that ZSTART lies at the bottom of the picture and ZSTOP at the top. This may be useful when comparable scales are needed for different pictures.

If the user-specified scale can not accommodate the entire surface, part of the picture cannot be drawn; this contributes to the number of incomplete picture tasks and a diagnostic is issued at the end of the picture.

SFZSCL also affects the range of values represented on a map key (see MPK7H and MPK7V): the data range of the key is the intersection of the data range (specified in the call to MPK7H or MPK7V) with that specified using SFZSCL and/or SFLIMS; however, if the data range of the key is null, the scale specified by SFZSCL is used instead.

Availability

Section 2, released version 2-12.

Default

Calling SFZSCL with ZSTART=ZSTOP restores the default.

See Also

FNAREA, MPK7H, MPK7V and SFLIMS.

Examples

Isometric drawing
Scales on contour maps and map keys
Sequences on contour maps
Waterfall charts and cascade surface pictures
Controlling shading patterns on shaded surfaces
Stacked 3-D barchart


SGEXPL

This page uses frames, but your browser doesn't support them.


SGEXPL

SUBROUTINE SGEXPL (IVAL, ISEG)

Purpose

to specify the amount by which one pie chart segment is to be exploded.

Argument(s)

IVAL | INTEGER expression | Percentage explosion (0- 50)
ISEG | INTEGER expression | Segment number (1-maximum)

Description

By default, the displacement of all segments is zero. SGEXPL specifies the amount (as percentage of radius) by which segment number ISEG is to be displaced from the centre of the pie, along the radius bisecting its angle. SGEXPL must be called before PIECHT.

The number of segments of a pie chart is unlimited but the limit on the maximum number of segments which can be omitted or exploded is 32.

The effect of SGEXPL can be overridden by PIEXPL and vice versa.

Availability

Section 4, released before version 2-5.

Default

SGEXPL(0,ISEG) restores the default.

See Also

PIECHT and PIEXPL.

Examples

Pie chart labels and exploding segments
3-D pie chart


SGOMIT

This page uses frames, but your browser doesn't support them.


SGOMIT

SUBROUTINE SGOMIT (TORF, ISEG)

Purpose

to specify whether a pie chart segment is to be omitted.

Argument(s)

TORF | LOGICAL expression | Whether segment is to be omitted
ISEG | INTEGER expression | Segment number (1-maximum)

Description

By default, all data values are represented by a segment in the pie chart and every segment is displayed. SGOMIT specifies whether or not the ISEGth segment of the pie is to be omitted from the picture. All segments are included in the calculation of pie chart segments. SGOMIT must be called before PIECHT.

The number of segments of a pie chart is unlimited but the limit on the maximum number of segments which can be omitted or exploded is 32.

The effect of SGOMIT can be overridden by PIOMIT and vice versa.

Availability

Section 4, released before version 2-5.

Default

SGOMIT(.FALSE.,ISEG) restores the default.

See Also

PIECHT and PIOMIT.

Examples

Pie chart label contents and omitting segments


SHANGS

This page uses frames, but your browser doesn't support them.


SHANGS

SUBROUTINE SHANGS (IDEG1, IDEG2, IDEG3, IDEG4)

Purpose

to specify the angles used in software shading patterns.

Argument(s)

IDEG1,IDEG2,IDEG3,IDEG4 INTEGER expressions Angles in degrees

Description

Software shading patterns consist of sets of equally-spaced parallel lines of one colour. The sequence for a monochrome device is as follows:
  • Pattern -1 is empty but is outlined using the pen selected by SHPEN, or currently selected for drawing lines (pen pointer 1).
  • Pattern 0 fills the area with pen 0 (background). If the device cannot draw in background, pattern 0 is equivalent to pattern -1.
  • Pattern 1 fills the area with pen 1 and is not affected by settings for the angle or separation of hatching lines (SHDESC or SHGAP).
  • Patterns 2- 5 use the 4 shading angles with a small line separation; patterns 6- 9 use the 4 shading angles with a larger line separation, etc.
If very large pattern numbers are chosen, very large line separation is used.

By default, four angles are used in shading patterns, 0°, 90°, 45° and 135°. SHANGS specifies alternative angles. The number of shading angles is the number of different angles set by SHANGS - for example, the number of shading angles is reduced to three if two of the arguments, IDEGn, are equal. Changing the number of shading angles also changes the relationship between shading patterns and pattern numbers - the use of fewer angles means that the cycle of patterns is repeated sooner.

Availability

Section 4, released before version 2-5.

Default

SHANGS(0,90,45,135) restores the default.

See Also

SHCOLS, SHGAP and SHDESC.


SHCOLS

This page uses frames, but your browser doesn't support them.


SHCOLS

SUBROUTINE SHCOLS (NCOLS)

Purpose

to specify a restricted number of colours used for shading patterns.

Argument(s)

NCOLS INTEGER expression Number of colours

Description

By default, the number of colours used for shading patterns is set to the maximum number of colours available on the device. SHCOLS specifies an alternative number of colours to be used for shading. SHCOLS affects hardware and software shading patterns. SHCOLS must be called before a shading operation.

Changing the number of shading colours also changes the relationship between shading patterns and pattern numbers - the use of fewer colours means that the cycle of patterns is repeated sooner.

Availability

Section 4, released before version 2-5.

Default

SHCOLS(0) restores the default. Note that this also resets SHPEN.

See Also

SHANGS, SHDESC, SHGAP and SHPEN.


SHDEA2

This page uses frames, but your browser doesn't support them.


SHDEA2

SUBROUTINE SHDEA2 (X1, DX, ARRONE, ARRTWO, NARR, ISHADE)

Purpose

to shade between 2 curves defined by values held in 2 arrays.

Argument(s)

X1 | REAL expression | Value of independent variable for plotting ARRONE(1) and ARRTWO(1)
DX | REAL expression | Independent variable interval between function values
ARRONE | REAL array | Function values for first curve
ARRTWO | REAL array | Function values for second curve
NARR | INTEGER expression | Number of values in each array
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDEA2 shades the area between two curves:
  (X1,ARRONE(1)), (X1+DX,ARRONE(2)),...

 (X1+(NARR-1)*DX,ARRONE(NARR))

 (X1,ARRTWO(1)), (X1+DX,ARRTWO(2)),...

 (X1+(NARR-1)*DX,ARRTWO(NARR))
The type of curve depends on CVTYPE but the area is enclosed by joining the first points of each curve together by a straight line, and the last points of each curve. Whether the boundary of the area is drawn depends on SHEDGE.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-12.

Diagnostics

  (Data curve exceeds scales)2

See Also

CLIPLV, CVTYPE, RIDDLE, SHDEC2, SHDEAR and SHEDGE.


SHDEAR

This page uses frames, but your browser doesn't support them.


SHDEAR

SUBROUTINE SHDEAR (X1, DX, DARR, NARR, ISHADE)

Purpose

to draw a curve from an array of values, and shade under it.

Argument(s)

X1 | REAL expression | Value of independent variable for plotting DARR(1)
DX | REAL expression | Independent variable interval between function values
DARR | REAL array | Function values for plotting
NARR | INTEGER expression | Number of points
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDEAR shades the area enclosed by the curve which connects the following points:
  (X1,DARR(1)), (X1+DX,DARR(2)),...

 (X1+(NARR-1)*DX,DARR(NARR))
These points represent a set of values from a single array where the array elements hold function values yi=f(xi) and xi=x1+(i-1)dx.

If the curve is not closed, the area shaded depends on SHTYPE; the type of curve depends on CVTYPE and whether the curve itself is drawn depends on SHEDGE.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-11.

Diagnostics

  (Data curve exceeds scales)2

See Also

BRKNAR, CLIPLV, CVTYPE, RIDDLE, SHDEA2, SHDECV, SHEDGE and SHTYPE.

Examples

Different shaded areas for open curves
Drawing keys and captions
Circular chart


SHDEBX

This page uses frames, but your browser doesn't support them.


SHDEBX

SUBROUTINE SHDEBX (X1, Y1, X2, Y2, ISHADE)

Purpose

to draw a shaded box.

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of opposite corners of the box, specified in units of the plotting scales
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDEBX shades the box extending from x1 to x2 by y1 to y2. If x1=x2 or y1=y2, then nothing is drawn. Whether a boundary is drawn depends on SHEDGE.

The points (x1, y1) and (x2, y2) are specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-8.

Diagnostics

  (**x1,y1,x2,y2**)2
 (Null box, nothing drawn)2

See Also

BRKNBX, CLIPLV and SHEDGE.

Examples

Boxes and arrows


SHDEC2

This page uses frames, but your browser doesn't support them.


SHDEC2

SUBROUTINE SHDEC2 (XARR1, YARR1, NARR1, XARR2, YARR2, NARR2, ISHADE)

Purpose

to shade the area between 2 curves specified by sets of coordinates.

Argument(s)

XARR1,YARR1 | REAL arrays | Coordinates of first curve
NARR1 | INTEGER expression | Number of points in first curve
XARR2,YARR2 | REAL arrays | Coordinates of second curve
NARR2 | INTEGER expression | Number of points in second curve
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDEC2 shades the area between two curves:
  (XARR1(1), YARR1(1)), ..., (XARR1(NARR1), YARR1(NARR1))

 (XARR2(1), YARR2(1)), ..., (XARR2(NARR2), YARR2(NARR2))
The type of curve depends on CVTYPE but the area is enclosed by joining the first points of each curve together by a straight line, and the last points of each curve. Whether the boundary of the area is drawn depends on SHEDGE.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-5.

Diagnostics

  (Data curve exceeds scales)2

See Also

CLIPLV, CVTYPE, RIDDLE, SHDEA2, SHDECV and SHEDGE.


SHDECL

This page uses frames, but your browser doesn't support them.


SHDECL

SUBROUTINE SHDECL (XCENT, YCENT, RADIUS, ISHADE)

Purpose

to draw a circular function with specified centre and radius, and to shade inside it.

Argument(s)

XCENT,YCENT | REAL expressions | Coordinates of the centre of the circle in units of the plotting scale
RADIUS | REAL expression | Circle radius in plotting scale units
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDECL shades the circle (or the part of the circle which lies within the range of the plotting scales) centred at point (xcent, ycent), with radius RADIUS. The resulting shape is only geometrically circular when both scales are equal and linear. Whether a boundary is drawn depends on SHEDGE.

The centre point and the radius are both specified in units of the current plotting scales (ie. user coordinates); device or page coordinates can be converted to user coordinates using the conversion subroutine, KXYXY.

By default, all drawing is restricted by the limits of the picture scales; if it exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released before version 2-5.

Diagnostics

  (Circle exceeds scales)2

See Also

BRKNCL, CLIPLV, EQSCAL, KXYXY and SHEDGE.

Examples

Circles


SHDECV

This page uses frames, but your browser doesn't support them.


SHDECV

SUBROUTINE SHDECV (XARR, YARR, NARR, ISHADE)

Purpose

to draw a curve from a set of coordinates, and shade under it.

Argument(s)

XARR,YARR | REAL arrays | Coordinates of points in units of the plotting scales
NARR | INTEGER expression | Number of points
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDECV shades the area enclosed by the curve corresponding to the following points:
  (XARR(1), YARR(1)), (XARR(2), YARR(2)), ...

 (XARR(NARR), YARR(NARR))
A closed curve can be obtained by using data in which XARR(NARR)=XARR(1) and YARR(NARR)=YARR(1). If the curve is not closed, the area shaded depends on SHTYPE. The type of curve drawn depends on CVTYPE and whether the curve itself is drawn depends on SHEDGE.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released before version 2-5.

Diagnostics

  (Data curve exceeds scales)2

See Also

BRKNCV, CLIPLV, CVTYPE, MARKCV, RIDDLE, SHEDGE and SHTYPE.

Examples

Marking individual points


SHDEFN

This page uses frames, but your browser doesn't support them.


SHDEFN

SUBROUTINE SHDEFN (FUNX, ISHADE)

Purpose

to draw a curve of a user-defined function, y=f(x), and shade under it.

Argument(s)

FUNX | function name | REAL function with one REAL argument, also declared in an EXTERNAL statement
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDEFN shades the area enclosed by the curve of a used-defined function, FUNX, and the axes or edge of the picture. Whether a boundary is drawn depends on SHEDGE.

With Cartesian coordinates, the specified function, FUNX, must calculate y given x, and with polar coordinates FUNX must calculate r given theta. The intervals of the independent variable over which SHDEFN evaluates the function, vary with the curvature of the curve.

Care must be taken in the programming of the FUNX to ensure that it is continuous and cannot fail for any arguments within the plotting range. Discontinuities may cause SIMPLEPLOT to loop indefinitely.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released before version 2-5.

Diagnostics

  (Function curve exceeds scales)2

See Also

BRKNFN, CLIPLV, FNRNGE, POLY, RIDDLE and SHEDGE.

Examples

A part-cycle polar plot
Multi-line titles and polynomials


SHDEKY

This page uses frames, but your browser doesn't support them.


SHDEKY

SUBROUTINE SHDEKY (ISHADE, CAP, NCAP)

SUBROUTINE SHDEK7 (ISHADE, CAP)

Purpose

to draw an annotated sample of a shading pattern in a key.

Argument(s)

ISHADE | INTEGER expression | Shading pattern number
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

SHDEK7/SHDEKY inserts a key to a shading pattern in the next empty space in the current key or caption area (defined by DEFKEY/DEFCAP or selected by RESNXT).

A rectangular sample of shading pattern ISHADE is drawn on the left of the entry; the caption, CAP, is drawn [2] alongside the sample. Whether a boundary is drawn around the sample shading pattern depends on SHEDGE.

REAL and INTEGER values can be converted to text strings using the conversion subroutines, KREAL and KNUMB respectively.

Availability

Section 4, released before version 2-5.

Diagnostics

  (Caption truncated)2
 (Key/caption area full)2
 (No active key/caption area)2

See Also

ADDJST, BLNKKY, DEFKEY, FILLK7, MPK7H, MPK7V, SHEDGE, SHKEYS, SHPATT, SHSET and SQSHAD.

Examples

Drawing keys and captions


SHDEPR

This page uses frames, but your browser doesn't support them.


SHDEPR

SUBROUTINE SHDEPR (SUBR, T1, T2, ISHADE)

Purpose

to draw the user-defined parametric function, and shade inside it.

Argument(s)

SUBR | subroutine name | subroutine with three arguments, (REAL T, REAL VARX, REAL VARY), also declared in an EXTERNAL statement
T1,T2 | REAL expressions | Values of the function parameter between which curve is to be drawn
ISHADE | INTEGER expression | Shading pattern number

Description

Using shading pattern number ISHADE, SHDEPR shades the area enclosed by the curve of a used-defined parametric function. If the curve is not closed, a closed area is formed by joining the first and last points with a straight line; whether a boundary is drawn depends on SHEDGE.

The parametric function is specified in subroutine SUBR; SUBR must have three arguments: REAL T, the value of the function argument, and VARX and VARY, to receive REAL coordinates corresponding to T. SUBR is called by BRKNPR with values of T ranging from T1 to T2.

By default, all drawing is restricted by the limits of the picture scales; if coordinates exceed these limits, plotting is clipped to the picture limits and every such occurrence contributes to the number of incomplete picture tasks. An alternative clipping strategy can be specified using CLIPLV.

Availability

Section 4, released version 2-9.

Diagnostics

  (Parametric function exceeds scales)2

See Also

BRKNPR, CLIPLV, RIDDLE and SHEDGE.


SHDESC

This page uses frames, but your browser doesn't support them.


SHDESC

SUBROUTINE SHDESC (IDEG1, IDEG2, IDEG3, IDEG4, NCOLS, GAP)

Purpose

to specify all characteristics of shading patterns.

Argument(s)

IDEG1,IDEG2,IDEG3,IDEG4 | INTEGER expressions | Angles in degrees
NCOLS | INTEGER expression | Number of colours
GAP | REAL expression | Minimum separation between shading lines (in cms)

Description

Each software shading pattern consists of a set of equally-spaced parallel lines of one colour. On a monochrome device the sequence is as follows: pattern -1 is empty but is outlined using the pen selected by SHPEN, or pen pointer 1; patterns 0 and 1 are as near to solid as the device permits - 0 uses background if the device permits, otherwise it is equivalent to pattern -1; patterns 2- 5 use the 4 shading angles with a small line separation; patterns 6- 9 use a larger line separation, etc. If very large pattern numbers are chosen, very large line separation is used.

By default, IDEG1 is equivalent to 0, IDEG2 to 90, IDEG3 to 45, IDEG4 to 135, NCOLS to the maximum number of colours available on the device, and GAP to the thickness of the lines drawn on the device.

SHDESC specifies alternatives for all these shading characteristics - the number of shading angles used is the number of different angles specified; the number of shading colours can be any positive value and the minimum separation between shading lines can be any value greater than or equal to the standard thickness of lines on the device. SHDESC must be called before a shading operation.

NCOLS also affects hardware shading patterns but the angles and line separation only affect software patterns. If fewer colours or angles are selected, the cycle of patterns is repeated sooner.

Availability

Section 4, released before version 2-5.

Default

SHDESC(0,90,45,135,0,0.0) restores the default

See Also

SHANGS, SHCOLS and SHGAP.

Examples

Drawing keys and captions


SHEDGE

This page uses frames, but your browser doesn't support them.


SHEDGE

SUBROUTINE SHEDGE (ITYPE)

Purpose

to specify whether to draw a boundary around a shaded area.

Argument(s)

ITYPE INTEGER expression Boundary option

ITYPE | Shading edge
-1 | Default mode, determined by SIMPLEPLOT
0 | No edge drawn
1 | Edge drawn

Description

By default, SIMPLEPLOT draws some shaded areas with a boundary and some without. For example, pie charts, bar charts and two-dimensional shaded curves are drawn with a boundary, but shaded areas on a contour map are drawn without a boundary. SHEDGE overrides this default behaviour.

The boundary of a shaded area is drawn with the same pen as the shading pattern itself except for pattern -1; pattern -1 is outlined using the pen selected by SHPEN or (if none selected) the pen currently selected for drawing lines, [1]. The drawing of this boundary line is not affected by bundled line-drawing attributes.

Availability

Section plus, released version 2-11.

Default

SHEDGE(-1) restores the default.

See Also

MPK7H, MPK7V, SHSTRT, SHSTOP, SHDE*, *SHAD and *SHDS.


SHGAP

This page uses frames, but your browser doesn't support them.


SHGAP

SUBROUTINE SHGAP (GAP)

Purpose

to specify the spacing of software shading lines.

Argument(s)

GAP REAL expression Minimum separation between lines (in cms)

Description

Software shading patterns consist of sets of equally-spaced parallel lines of one colour. The sequence for a monochrome device is as follows:
  • Pattern -1 is empty but is outlined using the pen selected by SHPEN, or the pen currently selected for drawing lines (pen pointer 1).
  • Pattern 0 is as near to solid as the device permits, using pen 0. If the device cannot draw in background, pattern 0 is equivalent to pattern -1.
  • Pattern 1 fills the area with pen 1 and is not affected by settings for the angle or separation of hatching lines.
  • Patterns 2- 5 use the 4 shading angles with a small line separation.
  • Patterns 6- 9 use the 4 shading angles with a larger line separation.
  • etc.
If very large pattern numbers are chosen, very large line separation is used.

By default, the minimum separation between shading lines is set to the thickness of lines drawn on the device. SHGAP specifies the minimum separation between lines as any value greater than or equal to the standard thickness of lines on the device. Changing the separation between shading lines also changes the relationship between shading patterns and pattern numbers.

Availability

Section 4, released before version 2-5.

Default

SHGAP(0.0) restores the default.

See Also

SHANGS, SHCOLS and SHDESC.


SHKEYS

This page uses frames, but your browser doesn't support them.


SHKEYS

SUBROUTINE SHKEYS (VCHAR, HCHAR, LABARR, NARR, CAP)

Purpose

to draw a complete key to a sequence of shading patterns.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of area
HCHAR | CHARACTER*1 | Horizontal position of area
LABARR | STRING array | Set of captions
NARR | INTEGER expression | Number of labels in LABARR
CAP | STRING expression | Header caption for key

Description

SHKEYS constructs a complete key to the first NARR shading patterns of the currently defined sequence (see SQSHAD and SHPATT).

The key is positioned on the SIMPLEPLOT page in the same way as other keys; VCHAR and HCHAR are single characters representing the initial letters of vertical and horizontal positions.

CAP provides a heading which, by default, is centred at the top of the key (see ADDJST). A box is drawn [1] around the key unless cancelled by BOXKY.

The key is associated only with the current picture but area is masked to prevent overdrawing. To avoid the key being overdrawn by other plotting (eg. if the key is positioned `inside' the picture), it is best to call SHKEYS after NEWPIC but before the main picture is drawn (this may be slower because SIMPLEPLOT must check for overlapping).

The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 4, released version 2-11.

Diagnostics

  (Key/caption height reduced)2
 (Key/caption width reduced)2
 (Maximum no. of keys/captions reached)2
 (No room for key/caption area)2

See Also

ADDJST, BOXKY, DEFKEY, DEFKYW, DEFPOS, MPK7H, MPK7V, SHDEK7, SHPATT, SHSET and SQSHAD.

Examples

Bar chart
Stacked 3-D barchart


SHPATT

This page uses frames, but your browser doesn't support them.


SHPATT

SUBROUTINE SHPATT (ISHADE, IPOS)

Purpose

to specify one of a sequence of shading patterns.

Argument(s)

ISHADE | INTEGER expression | Pattern number
IPOS | INTEGER expression | Indicating which of the sequence is to be set (1- 32)

ISHADE | Shading pattern
-1 | an empty area
0 | solid fill with background colour
1, 2, 3... | hardware/software patterns

Description

By default, subroutines which shade a sequence of areas to distinguish them from each other use the shading patterns in numerical order 1, 2, 3 etc. SHPATT specifies an alternative pattern, ISHADE, to be associated with the IPOSth shaded area. SHPATT must be called before the subroutine which performs the shading.

ISHADE can have values -1, 0, 1, 2, 3, ... etc.

If the boundary of a shaded area is to be drawn (see SHEDGE), it is drawn with the same pen as the shading pattern itself except for pattern -1; pattern -1 is outlined using the pen selected by SHPEN or (if none selected) the pen currently selected for drawing lines, [1].

The number of shading patterns is unlimited but the limit on the maximum number of patterns which can be specified as a sequence is 32.

Availability

Section 4, released version 2-5.

Default

SHPATT(n,n) restores the default for each position, n.

See Also

SQSHAD, SHPEN and SHEDGE.

Examples

Shaded contour maps and surfaces
Bar chart and pie chart
Thickened lines


SHPEN

This page uses frames, but your browser doesn't support them.


SHPEN

SUBROUTINE SHPEN (IPEN)

Purpose

to specify single colour shading patterns with the specified pen.

Argument(s)

IPEN INTEGER expression Pen number

IPEN | Pen usage
-1 | plotting is omitted on all devices
0 | plotting is done in background colour; on some devices this produces the effect of rubbing out but on others (eg. pen plotters) plotting is omitted
1, 2, 3 ... | pens/colours are selected as determined by the device driver

Description

By default, the number of colours used for shading patterns is set to the maximum number of colours available on the device. SHPEN requests monochromatic shading with pen number, IPEN. SHPEN must be called before a shading operation.

IPEN can have values -1, 0, 1, 2, 3, ... etc.

Please note that changing the number of shading colours changes the relationship between shading patterns and pattern numbers.

Software shading is not affected by bundled line-drawing attributes.

Availability

Section 4, released version 2-7.

Default

SHCOLS(0) restores the default.

See Also

SHCOLS, SHSET, PEN and SETPNS.


SHSET

This page uses frames, but your browser doesn't support them.


SHSET

SUBROUTINE SHSET (ISET)

Purpose

to specify an alternative source of area-fill patterns for polygon shading.

Argument(s)

ISET INTEGER expression Code number for area fill source

ISET | Polygon area-fill source
<=-1 | Alternative hardware/firmware sets (if available)
0 | Hardware/firmware area fill (if available)
1 | Device independent software shading

Description

For efficient operation and clarity, SIMPLEPLOT is set up to shade areas using area fill from device hardware or firmware wherever suitable. SHSET selects an alternative source of area fill patterns.

On devices which can use hardware area fill, the hardware patterns may be used to take the place of software shading. When no more hardware patterns are available, SIMPLEPLOT returns to the software pattern that would have occurred in this position.

Availability

Section 4, released version 2-8.

Default

SHSET(0) restores the default.

See Also

CHSET, FFSET, LINSET and MKSET.

Examples

Drawing keys and captions
Circular chart


SHSTOP

This page uses frames, but your browser doesn't support them.


SHSTOP

SUBROUTINE SHSTOP

Purpose

to terminate the description of a user-defined shaded shape.

Argument(s)

None

Description

SHSTOP terminates a user-defined shape for shading started by SHSTRT. The graphics output of the shape is not started until the drawing has been terminated.

If the shape does not consist entirely of closed areas, nothing is drawn and a diagnostic is issued.

Availability

Section plus, released version 2-11.

Diagnostics

  (Unclosed shaded area)1

See Also

SHSTRT.


SHSTRT

This page uses frames, but your browser doesn't support them.


SHSTRT

SUBROUTINE SHSTRT (ISHADE)

Purpose

to start a user-defined shaded shape.

Argument(s)

ISHADE INTEGER expression Shading pattern number

Description

A user-defined shape which can be drawn using any of the DRAW* or BRKN* subroutines, JOINPT and BREAK is shaded if the drawing of the shape is preceded by a call of SHSTRT and followed by a call of SHSTOP. ISHADE selects the shading pattern.

The drawing of the shape for shading should normally be terminated by SHSTOP, but a call of any SIMPLEPLOT subroutine other than those allowed for drawing the shape, causes the shape to be abandoned and a diagnostic is issued.

The shape can be made up from one or more closed areas, and the boundaries traced in any order; if there are any gaps in the boundaries of the shape, the unclosed curves are omitted and a diagnostic is issued.

Whether the boundary is drawn depends on SHEDGE.

Availability

Section plus, released version 2-11.

Diagnostics

  (Unclosed shaded area)1
 (USER SHADING ABANDONED)1

See Also

SHSTOP and SHEDGE.


SHTYPE

This page uses frames, but your browser doesn't support them.


SHTYPE

SUBROUTINE SHTYPE (ITYPE)

Purpose

to specify the shading boundary used for unclosed curves.

Argument(s)

ITYPE INTEGER expression Mode of shading

ITYPE | Shading area for unclosed curves
0 | Area contained by joining last point of curve to first with a straight line
1 | Area between curve and horizontal axis or base of graph
2 | Area between curve and vertical axis or left hand edge of graph

Description

By default, when SHDECV or SHDEAR defines a curve which is not closed, shading applies to the area between the curve and the x-axis or bottom horizontal boundary when no axis exists. Alternative areas can be chosen by calling SHTYPE.

SHTYPE does not apply to polar charts nor to functions drawn by SHDEFN or SHDEPR. The curves drawn by SHDEA2 and SHDEC2 are always closed and therefore unaffected by SHTYPE.

Availability

Section 4, released before version 2-5.

Default

SHTYPE(1) restores the default.

See Also

SHDECV and SHDEAR.

Examples

Different shaded areas for open curves


SHUNIF

This page uses frames, but your browser doesn't support them.


SHUNIF

SUBROUTINE SHUNIF (TORF)

Purpose

to specify whether software shading lines are to be drawn in only one direction.

Argument(s)

TORF LOGICAL expression Whether uniform shading is required

Description

By default, software shading lines are drawn in alternating directions. On mechanical devices, it is faster to draw shading lines in alternate directions than to draw them all one way; but on pen plotters, the shaded area may look more uniform if the lines are all drawn the same way. After a call of SHUNIF(.TRUE.), all software generated shading lines are drawn in one direction.

Availability

Section 4, released before version 2-5.

Default

SHUNIF(.FALSE.) restores the default.

See Also

SHDESC.


SQBRKN

This page uses frames, but your browser doesn't support them.


SQBRKN

SUBROUTINE SQBRKN (IARR, NARR)

Purpose

to specify a sequence of broken line patterns.

Argument(s)

IARR | INTEGER array | Pattern numbers for each contour line
NARR | INTEGER expression | Number of elements in IARR (1- 32)

Description

By default, subroutines which draw a sequence of contour lines use a single broken line pattern (which can be specified by CTBRKN) for every line. SQBRKN specifies a sequence of broken line patterns.

The number of software line patterns is unlimited but patterns beyond the usual range, -6... 6, have longer patterns and may not be easily distinguishable from one another. The number of hardware broken line patterns is also unlimited in theory but, in practice, there are fewer than are available in software. Whether hardware or software patterns are used, there is a limit on the maximum number of patterns which can be specified as a sequence - only 32 patterns can be defined as a sequence.

If line style has been requested as a bundled attribute, the broken line patterns specified using SQBRKN override the line style of the bundles (specified by PEN, SETPNS or SQPEN) unless

IARR(i)=-999 which indicates that all the current bundled line-drawing attributes are to be used.

When the sequence is exhausted, the line pattern specified by CTBRKN is used.

Availability

Section plus, released version 2-12.

Default

SQBRKN(IARR,0) restores the default.

See Also

BUNLPR, CTBRKN, LINSET and SQ*.

Examples

Extra labelling on contour maps


SQPEN

This page uses frames, but your browser doesn't support them.


SQPEN

SUBROUTINE SQPEN (IARR, NARR)

Purpose

to specify a sequence of pens/bundles.

Argument(s)

IARR | INTEGER array | Pen numbers for each contour
NARR | INTEGER expression | Number of elements in IARR (1- 32)

IARR(i) | Pen usage
-1 | plotting is omitted on all devices
0 | plotting is done in background colour; on some devices this produces the effect of rubbing out but on others (eg. pen plotters) plotting is omitted
1, 2, 3 ... | pens/bundles are selected as determined by the current device, palette (see PENHLS and PENRGB) and the current bundled attributes (see BUNLPR)

Description

By default, subroutines which draw a sequence of contour lines, use a single pen (specified by PEN) or use the pens assigned by pen pointers:
  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set
SQPEN specifies an alternative sequence of pens. SQPEN also affects surface pictures which are drawn with crosshatching or contour lines (see ISTYPE, *CNTS). A different pen is used for each contour range which the crosshatched lines cross and at the edge of a surface on which contours are drawn. IARR(i) can have values -1, 0, 1, 2, 3, ... etc.

The number of pens is unlimited but the maximum number of pens which can be specified as a sequence is 32. When the sequence is exhausted, the pen pointed to by pen pointer [1] is used (see SETPNS and PEN).

Availability

Section plus, released version 2-12.

Default

SQPEN(IARR,0) restores the default.

See Also

BUNLPR, PEN, PENHLS, PENRGB, SETPNS and SQ*.

Examples

Sequences on contour maps


SQSHAD

This page uses frames, but your browser doesn't support them.


SQSHAD

SUBROUTINE SQSHAD (IARR, NARR)

Purpose

to specify a sequence of shading patterns.

Argument(s)

IARR | INTEGER array | Pattern numbers for each shaded area
NARR | INTEGER expression | Number of elements in IARR (1- 32)

IARR(i) | Shading pattern
-1 | an empty area
0 | solid fill with background colour
1, 2, 3 ... | hardware/software patterns

Description

By default, subroutines which shade a sequence of areas to distinguish them from each other, use the shading patterns in numerical order 1, 2, 3 etc. SQSHAD specifies an alternative sequence of pattern numbers.

SQSHAD must be called before the subroutine which performs the shading.

IARR can have values -1, 0, 1, 2, 3, ... etc.

If the boundary of a shaded area is to be drawn (see SHEDGE), it is drawn with the same pen as the shading pattern itself except for pattern -1; pattern -1 is outlined using the pen selected by SHPEN or (if none selected) the pen currently selected for drawing lines, [1].

The number of shading patterns is unlimited but the limit on the maximum number of patterns which can be specified as a sequence is 32.

SQSHAD also affects the shading pattern samples represented on map keys (see MPK7H and MPK7V) and shaded keys (see SHKEYS).

Availability

Section 4, released version 2-12.

Default

SQSHAD(IARR,0) restores the default.

See Also

MPK7H, MPK7V, SHEDGE, SHKEYS, SHPEN and SQ*.

Examples

Bar chart and pie chart
3-D bar chart


SQZLAB

This page uses frames, but your browser doesn't support them.


SQZLAB

SUBROUTINE SQZLAB (LABARR, NARR)

Purpose

to specify a sequence of contour labels.

Argument(s)

LABARR | STRING array | Contour labels
NARR | INTEGER expression | Number of elements in LABARR (1- 32)

Description

By default, contour maps are not labelled but CTLABS or CTNUMB can be called to specify that automatically generated numeric labels are to be drawn. SQZLAB specifies an alternative set of textual labels to be used. SQZLAB also determines the labels used on a map key (see MPK7H and MPK7V).

The number of contour labels is unlimited but the limit on the maximum number of labels which can be specified as a sequence is 32. Also, the length of individual labels is restricted to a maximum of 20 characters; longer labels are truncated.

When the sequence is exhausted, labelling ceases.

Availability

Section plus, released version 2-12.

Default

SQZLAB(LABARR,0) restores the default.

See Also

CTLABS, CTNUMB, MPK7H, MPK7V, SQZVAL, *CNTS and *SHDS.

Examples

Extra labelling on contour maps
Sequences on contour maps


SQZVAL

This page uses frames, but your browser doesn't support them.


SQZVAL

SUBROUTINE SQZVAL (DARR, NARR)

Purpose

to specify a sequence of contour levels.

Argument(s)

DARR | REAL array | Contour levels
NARR | INTEGER expression | Number of elements in DARR (1- 32)

Description

By default, a set of contour curves is drawn with a regular contour interval (see SFEQZ and SFEQZD); SQZVAL specifies an alternative set of values at which to draw contours. The number of contour levels is unlimited but the limit on the maximum number of values which can be specified as a sequence is 32.

SQZVAL also affects the values represented on a map key (see MPK7H and MPK7V).

SQZVAL overrides the effects of both SFEQZ and SFEQZD.

Availability

Section plus, released version 2-12.

Diagnostics

  (DATA GRID NOT MONOTONIC)1

Default

SQZVAL(DARR,0) restores the default.

See Also

MPK7H, MPK7V, SFEQZ, SFEQZD, SQZLAB, *CNTS and *SHDS.

Examples

Contour maps of tartan-gridded data


STRCHS

This page uses frames, but your browser doesn't support them.


STRCHS

SUBROUTINE STRCHS (CHESC, CHOPEN, CHCLOS)

Purpose

to specify the three special characters to be used in escape sequences.

Argument(s)

CHESC | CHARACTER*1 | Escape character
CHOPEN | CHARACTER*1 | Opening bracket
CHCLOS | CHARACTER*1 | Closing bracket

Description

By default, SIMPLEPLOT recognizes "!", "[" and "]" as the special characters used to identify embedded commands within text strings; STRCHS specifies alternative characters.

Alphanumeric characters may not be used as escape or bracketing characters; the same character can be used for both bracket characters, but the escape character must be different from both brackets.

STRCHS can be called at any time, regardless of whether STRLV has been called to enable recognition of these characters. If STRCHS is called with invalid arguments, the use of escape sequences is disabled until a valid call of STRCHS.

Availability

Section plus, released version 2-11.

Default

STRCHS("!","[","]") restores the default.

See Also

QSTR7 and STRLV.


STRLV

This page uses frames, but your browser doesn't support them.


STRLV

SUBROUTINE STRLV (ILEVEL)

Purpose

to specify the level of interpretation of embedded commands in text strings.

Argument(s)

ILEVEL INTEGER expression Level of interpretation

ILEVEL | Action
0 | Disable interpretation (default)
1 | Enable interpretation of subcommands

Description

arguments to SIMPLEPLOT subroutines which supply text to be drawn on pictures, can include embedded subcommands !N, !B, !H, !L, !U, !P, !F.

Embedded | Action
subcommand |
!N | new line
!B | backspace
!Htext] | superscript
!Ltext] | subscript
!Utext] | underline
!Pntext] | colour/pen change
!Fntext] | font change

These subcommands use ordinary characters as escape sequences to distinguish them from the text to be drawn. STRLV sets the level of interpretation of these escapes sequences within text strings.

Availability

Section plus, released version 2-11.

Default

STRLV(0) restores the default.

See Also

QSTR7 and STRCHS.

Examples

The Greek alphabet
Controlling the scales on waterfall charts


TEXTAR

This page uses frames, but your browser doesn't support them.


TEXTAR

SUBROUTINE TEXTAR (RATIO)

Purpose

to specify the aspect ratio of text characters.

Argument(s)

RATIO REAL expression Width/height

Description

TEXTAR can be used to specify the height to width ratio of text characters. If hardware text is currently selected, TEXTAR only has effect if the following criteria are met:
  • the current device is capable of adjusting the aspect ratio of text, and
  • the device driver has been suitably modified.
TEXTAR affects all software text except the adjustable character sets (ISET=51 and 52).

By default, `Simple software' characters (as selected by CHSET(1)) are constrained such that they are drawn using a whole number of device steps (or pixels) per step in order to achieve satisfactory shapes. If a non-default aspect ratio is specified, this constraint is removed and text may appear misshapen especially on low-resolution devices.

Availability

Section 4, released version 2-10.

Default

Calling TEXTAR with RATIO<= 0 restores the default.

See Also

CHSET and TEXTSZ.


TEXTLF

This page uses frames, but your browser doesn't support them.


TEXTLF

SUBROUTINE TEXTLF (FACTOR)

Purpose

to specify the vertical separation of lines of text.

Argument(s)

FACTOR REAL expression Factor to multiply text height

Description

TEXTLF modifies the vertical spacing between successive lines of title, between entries in key and caption areas, and between multiple lines of text containing encoded linefeeds. FACTOR can be any REAL value greater than or equal to 1.0.

Availability

Section 1, released version 2-11.

Default

TEXTLF(1.2) restores the default or any call of TEXTLF with FACTOR<= 0.0.

See Also

TEXTSZ.

Examples

Multi-line titles and polynomials


TEXTMG

This page uses frames, but your browser doesn't support them.


TEXTMG

SUBROUTINE TEXTMG (FACTOR)

Purpose

to specify the magnification of text.

Argument(s)

FACTOR REAL expression Magnification factor for text size

Description

By default, SIMPLEPLOT aims to produce text which is both clear and well proportioned. A target size of text used is chosen to relate to the physical size of the picture, and to be appropriate to its purpose - title, key, axis annotation etc. This target size can not be achieved on all devices - some devices can reproduce hardware text at any chosen size, some have a few discrete sizes, and some can only draw one size of text; software text may vary according to the pixel resolution of the device.

If TEXTMG has been called, the target size is multiplied by FACTOR; this new target size is then adjusted as described above.

Availability

Section 1, released before version 2-5.

Default

TEXTMG(1.0) restores the default.

See Also

TEXTMN and TEXTSZ.

Examples

Controlling the graticule


TEXTMN

This page uses frames, but your browser doesn't support them.


TEXTMN

SUBROUTINE TEXTMN (CMS)

Purpose

to specify the minimum text size.

Argument(s)

CMS REAL expression Minimum character width (in cms)

Description

By default, SIMPLEPLOT aims to produce text which is both clear and well proportioned. A target size of text used is chosen to relate to the physical size of the picture, and to be appropriate to its purpose - title, key, axis annotation etc. This target size can not be achieved on all devices - some devices can reproduce hardware text at any chosen size, some have a few discrete sizes, and some can only draw one size of text; software text may vary according to the pixel resolution of the device.

The target width is always forced to be no less than some minimum value. After TEXTMN has been called, the specified value is used in place of all smaller targets. If TEXTMN has not been called, a minimum set in the device driver is used; but when no minimum is set in the device driver either, 0.14 centimetres is used.

For proportionally-spaced fonts (eg. the Hershey fonts), the target text size is set to the width of digits which is uniform for all digits within a font.

Availability

Section 1, released version 2-6.

Default

TEXTMN(0.0) restores the default.

See Also

TEXTMG and TEXTSZ.


TEXTSL

This page uses frames, but your browser doesn't support them.


TEXTSL

SUBROUTINE TEXTSL (ANGLE)

Purpose

to specify the slant of hardware text.

Argument(s)

ANGLE REAL expression Clockwise angle of slant from the upright (in degrees)

Description

TEXTSL can be used to specify the angle of slant of hardware text but only has effect if the following criteria are met:
  • hardware text is currently selected,
  • the current device is capable of adjusting the slope of text, and
  • the device driver has been modified to implement this facility.
The slant is specified, in degrees, as the clockwise angle from the upright. Positive angles produce forward sloping characters and negative angles produce backward sloping characters. The maximum slope is device dependent.

Availability

Section 4, released version 2-10.

Default

TEXTSL(0.0) restores the default.

See Also

CHSET and TEXTAR.


TEXTSZ

This page uses frames, but your browser doesn't support them.


TEXTSZ

SUBROUTINE TEXTSZ (CMS)

Purpose

to specify the fixed character width of all text.

Argument(s)

CMS REAL expression Character width (in cms)

Description

By default, SIMPLEPLOT aims to produce text which is both clear and well proportioned. A target size of text used is chosen to relate to the physical size of the picture, and to be appropriate to its purpose - title, key, axis annotation etc. This target size can not be achieved on all devices - some devices can reproduce hardware text at any chosen size, some have a few discrete sizes, and some can only draw one size of text; software text may vary according to the pixel resolution of the device.

TEXTSZ fixes the target size of text to a value specified in centimetres. For the reasons described above, this target may not always be achieved.

For the proportionally-spaced fonts (eg. the Hershey fonts) the text size corresponds to the width of digits which is uniform for all digits within a font.

For subscripts and superscripts, the ordinary target size is multiplied by 0.75.

Availability

Section 1, released version 2-5.

Default

TEXTSZ(0.0) restores the default.

See Also

TEXTMG and TEXTMN.


THCKMG

This page uses frames, but your browser doesn't support them.


THCKMG

SUBROUTINE THCKMG (CHTYPE, FACTOR)

Purpose

to specify the pen thickness to be used for all plotting.

Argument(s)

CHTYPE | CHARACTER*1 | Type of plotting to be affected by FACTOR
FACTOR | REAL expression | Magnification factor for thickening

CHTYPE | Type of plotting
"L" | Line drawing
"T" | Selected software text
"M" | Software marker symbols
"*" | All of the above

Description

By default, SIMPLEPLOT performs all plotting with a single pen thickness (FACTOR=1.0). After THCKMG has been called, the type of plotting specified by CHTYPE is performed using the pen thickness specified by FACTOR.

Software shading lines are not affected by THCKMG.

If line thickness has been specified as a bundled attribute (see BUNLPR), each member of the sequence of line thicknesses (1, 2, 3, 4) is multiplied by FACTOR.

Availability

Section 1, released version 2-13.

Default

THCKMG("*",1.0) restores the default.

See Also

BUNLPR.

Examples

Contouring on a projected region
Text in pictures - alternative character sets
Thickened lines
Labelled curves
Storing and retrieving curve coordinates


TIMFMT

This page uses frames, but your browser doesn't support them.


TIMFMT

SUBROUTINE TIMFMT (COMPNT, LBTYPE, NCHARS)

Purpose

to specify the format for one component of time-date data.

Argument(s)

COMPNT | CHARACTER*2 | Time-date component
LBTYPE | CHARACTER*1 | Label type
NCHARS | INTEGER expression | Number of characters

LBTYPE | Label type
"N" | Number alone
"P" | Prefixed number
"S" | Suffixed number
"T" | Text - only valid for "DW", "DM", "MO", and "HO"
"D" | Default - the value of NCHARS is ignored

Description

Time-date annotations are built from combinations of components, each of which may be expressed in different formats. The possible interpretations of COMPNT are listed in Appendix T of the SIMPLEPLOT Supplement.

For text labels, if NCHARS>0, the component will contain NCHARS characters, truncating from the right if the string is too long. If NCHARS<= 0 the whole string is used, excluding trailing spaces.

For numeric labels, if NCHARS=2 and the component value is a whole number, two digits are used, including zeros. Otherwise, SIMPLEPLOT uses as many digits as are needed to represent the value.

If LBTYPE="P" or "S", a single character prefix or suffix, specified by TIMLDC, is appended to the numerical value of the component. The individual components of axis labels are separated by one-character separators which can be controlled independently by AXLBSP.

Availability

Section plus, released version 2-12.

Diagnostics

  (Invalid component type: XX)1
 (Text label unavailable: XX)2

Default

TIMFMT(COMPNT,"D",0) restores the default.

See Also

AXLBSP, AXLBTP, TIMLDA and TIMLDC.


TIMLDA

This page uses frames, but your browser doesn't support them.


TIMLDA

SUBROUTINE TIMLDA (COMPNT, LABARR, NARR)

Purpose

to load a new set of text labels for one component of time-date axis annotations.

Argument(s)

COMPNT | CHARACTER*2 | Time-date component
LABARR | STRING array | Containing set of labels
NARR | INTEGER expression | Number of items in LABARR
COMPNT | Meaning | Max NARR
"MO" | Month | 12
"DM" | Day of the month | 31
"DW" | Day of the week | 7
"HO" | Hour | 24

Description

Time-date annotations are built from up to three components. All components can be labelled numerically but some components can also be labelled with text from lists stored by SIMPLEPLOT. These standard labels are listed in Appendix T of the SIMPLEPLOT Supplement. TIMLDA changes the contents of the list for one component.

If NARR=0, LABARR is not examined and the standard labels for that component are loaded; otherwise, up to NARR labels from array LABARR are stored for use as text labels. If a non-zero value of NARR is smaller than the maximum for that component, the first NARR labels are stored, and used in conjunction with the rest of the existing set of text labels.

Please note that TIMLDA is only used to change the text labels - TIMFMT is used to switch between the use of text labels and numeric labels.

Availability

Section plus, released version 2-12.

Diagnostics

  (Invalid component type: XX)1
 (Inappropriate component type: XX)2

Default

TIMLDA(COMPNT,LABARR,0) restores the default.

See Also

AXLBTP, TIMFMT and TIMLDC.


TIMLDC

This page uses frames, but your browser doesn't support them.


TIMLDC

SUBROUTINE TIMLDC (COMPNT, CHTYPE)

Purpose

to load a new prefix/suffix character for numeric labels of one component of time-date axis annotations.

Argument(s)

COMPNT | CHARACTER*2 | Time-date component
CHTYPE | CHARACTER*1 | Character to add to numeric labels

Description

Time-date annotations are built from up to three components. Each component can be labelled numerically, with a single-character prefix or suffix. TIMLDC sets the stored character for one component.

COMPNT identifies the component; the possible interpretations of COMPNT are listed in Appendix T of the SIMPLEPLOT Supplement. CHTYPE specifies the character to use. If CHTYPE=" ", the default character is loaded.

TIMLDC only changes the stored character; TIMFMT must be called to switch between the use of prefixed/suffixed numeric labels and alternative forms of label. The individual components of labels are separated by one-character separators controlled independently by AXLBSP.

Availability

Section plus, released version 2-12.

Diagnostics

  (Invalid component type: XX)1

Default

TIMLDC(COMPNT," ") restores the default.

See Also

AXLBSP, AXLBTP, TIMFMT and TIMLDA.


TITLE

This page uses frames, but your browser doesn't support them.


TITLE

SUBROUTINE TITLE (VCHAR, HCHAR, CAP, NCAP)

SUBROUTINE TITLE7 (VCHAR, HCHAR, CAP)

Purpose

to draw a text string as a title to the picture, group or page.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of title
HCHAR | CHARACTER*1 | Horizontal position of title
CAP | STRING expression | Caption
NCAP | INTEGER expression | Number of characters in CAP

Description

TITLE/TITLE7 draws [2] the caption, CAP, as a title in the specified position. Several lines of text can be drawn by successive calls of TITLE7/TITLE in the same position. The only restriction on how many titles can be drawn in any position, is when the bottom of the page is reached.

VCHAR and HCHAR are single characters representing the initial letters of vertical and horizontal positions. The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

"N"orth and "H"igher both position titles as high as possible on a page but differ in their horizontal positioning - "N"orth titles use the full width of the page and can be centred within the limits of the page whereas "H"igher titles use the limits of the group.

The position of the title also determines its horizontal limit - the full width of the page, the width of the group or the width of the picture.

Availability

Section 1, released before version 2-5.

Diagnostics

  (None of title will fit in)2
 (Text clipped)2
 (Title attempted with no page)2
 (Title attempted with no picture)2
 (Title omitted below bottom)2
 (Title too tall)2
 (Title truncated)2

See Also

ADDCP7, CLIPLV, CP7LB, CP7PT, CP7XC, CP7YC, DEFCAP and KPOSXY.

Examples

Line contours
Isometric drawing
Polar contour map
Major And Minor Axis Labels
Axis Tick Mark Labelling
Circles And Boxes With Broken Lines
A simple map
Map projections
Bearing and distance
Converting between (x,y) and long/lat coordinates
Contouring on a projected region
Multi-line titles and polynomials
Curve fitting by regression
Multiple scales on an x-y plot
Bar chart
Bar chart and pie chart
Circular chart
Thickened lines
The Greek alphabet
Bundled attributes
Controlling the scales on waterfall charts
Raster emulation and the painter's algorithm
Controlling shading patterns on shaded surfaces


TRIANG

This page uses frames, but your browser doesn't support them.


TRIANG

SUBROUTINE TRIANG (IHANDL, NTRI, ISTAT)

Purpose

to triangulate a Triangle object.

Argument(s)

IHANDL | INTEGER expression | A handle acquired from TRINEW
NTRI | INTEGER variable | To receive number of triangles
ISTAT | INTEGER variable | To receive a status return

Description

TRIANG triangulates the Triangle object accessed by IHANDL. The (x,y) points registered with IHANDL by a prior call of TRIREG are organised into non-overlapping triangular elements covering the data, subject to the constraints specified by any calls of TRIFIX.

ISTAT | Interpretation
0 | Success
-1 | Invalid handle
-2 | Input failed (previous calls)
-3 | Out of memory
-4 | Algorithm failed with broken perimeter(Impossible happened)
-5 | Algorithm failed with inconsistent values(Impossible happened)
If triangulation is successful, ISTAT returns 0, and NTRI returns the number of triangles.

Availability

Section 2, released version 2-16.

See Also

TRINEW, TRIREG, and TRIFIX.

Examples

Triangulation of unconstrained random data
Triangulation of random points with specified perimeter
Triangulation of random points with internal fixed line
Triangulation with specified outer and inner perimeters
Triangulation with specified doubly-nested perimeters
Triangulation with specified intersecting perimeters


TRIDEL

This page uses frames, but your browser doesn't support them.


TRIDEL

SUBROUTINE TRIDEL (IHANDL, ISTAT)

Purpose

to delete a Triangle object.

Argument(s)

IHANDL | INTEGER expression | A handle acquired from TRINEW
ISTAT | INTEGER variable | To receive a status return

Description

TRIDEL deletes the Triangle object accessed by IHANDL.

After every successful call of TRINEW, TRIDEL should be called to delete the Triangle object when it is no longer needed.

ISTAT | Interpretation
0 | Success
-1 | Invalid handle

Availability

Section 2, released version 2-16.

See Also

TRINEW.

Examples

Triangulation of unconstrained random data
Triangulation of random points with specified perimeter
Triangulation of random points with internal fixed line
Triangulation with specified outer and inner perimeters
Triangulation with specified doubly-nested perimeters
Triangulation with specified intersecting perimeters


TRIFIX

This page uses frames, but your browser doesn't support them.


TRIFIX

SUBROUTINE TRIFIX (IHANDL, IFROM, NPTS, BPERIM, ISTAT)

Purpose

to specify a sequence of points to lie on a fixed line in a Triangle object.

Argument(s)

IHANDL | INTEGER expression | A handle acquired from TRINEW
IFROM | INTEGER expression | Index of 1st point on fixed line
NPTS | INTEGER expression | Number of points on fixed line
BPERI | LOGICAL expression | Whether the line is a perimeter
ISTAT | INTEGER variable | To receive a status return

Description

When TRIREG registers data points in the Triangle object accessed by IHANDL, all the points are initially unconstrained. TRIFIX may be called to specify a fixed line joining a sequence of NPTS registered data points, starting from the IFROMth point, counted from 1.

When BPERIM is .FALSE., the fixed line consists of the vectors between each adjacent pair of points; when BPERIM is .TRUE., one additional vector joining the last point to the first is also included to form a closed curve. If any fixed line vectors intersect each other, triangulation is not possible.

Subsequent triangulation is constrained to use each of the fixed line vectors as a triangle edge; for fixed lines with BPERIM = .TRUE., only 1 triangle is constructed on each vector.

TRIFIX may be called repeatedly to specify multiple fixed lines.

ISTAT | Interpretation
0 | Success
-1 | Invalid handle
-2 | Input failed (previous calls)
-3 | IFROM, NPTS invalid for data
-4 | This range overlaps with another
-5 | Out of memory
-6 | Lines cross

Availability

Section 2, released version 2-16.

See Also

TRINEW, and TRIREG.

Examples

Triangulation of random points with specified perimeter
Triangulation of random points with internal fixed line
Triangulation with specified outer and inner perimeters
Triangulation with specified doubly-nested perimeters
Triangulation with specified intersecting perimeters


TRIGET

This page uses frames, but your browser doesn't support them.


TRIGET

SUBROUTINE TRIGET (IHANDL, IFROM, ISIZE, I2ARR, ISTAT)

Purpose

to extract triangles from a Triangle object.

Argument(s)

IHANDL | INTEGER expression | A handle acquired from TRINEW
IFROM | INTEGER expression | index(from 1) of 1st triangle extracted
ISIZE | INTEGER expression | second dimension of I2ARR
I2ARR | INTEGER 2-D array | To receive data element structure, I2ARR(3,ISIZE)
ISTAT | INTEGER variable | To receive a status return

Description

When TRIANG is called to triangulate a Triangle object it returns NTRI, the number of triangles generated. TRIGET may then be called for the same Triangle object to extract up to ISIZE of the triangular elements, starting from triangle number IFROM, counting from 1.

For each triangle, three point indices (ie. their positions in order of registration by TRIREG) are placed in I2ARR. By default, point indices are counted from 1, but a call of TRIOFF(IHANDL, N) changes the base to N.

These triangles may be extracted from the Triangle object by 1 or more calls of TRIGET, depending on ISIZE, the size of I2ARR.

If ISIZE >= NTRI, all the triangles can be returned together by the single call:

TRIGET(IHANDL, I2ARR, 1, ISIZE, ISTAT)

If ISIZE < NTRI, the triangles can be returned in batches of ISIZE by repeating the following for I starting at 1, incrementing in steps of ISIZE, while it is less than NTRI:

TRIGET(IHANDL, I2ARR, I, ISIZE, ISTAT)

In the extreme case, each triangle could be extracted by a separate call of TRIGET; this may be convenient, but is less efficient.

ISTAT | Interpretation
+ve | Number of triangles returned
-1 | Invalid handle
-2 | Out of memory
-3 | Input failed (previous calls)
-4 | MTRIGS invalid

Availability

Section 2, released version 2-16.

See Also

TRIANG and TRIOFF.

Examples

Triangulation of unconstrained random data
Triangulation of random points with specified perimeter
Triangulation of random points with internal fixed line
Triangulation with specified outer and inner perimeters
Triangulation with specified doubly-nested perimeters
Triangulation with specified intersecting perimeters


TRINEW

This page uses frames, but your browser doesn't support them.


TRINEW

SUBROUTINE TRINEW (IHANDL)

Purpose

to acquire a handle to a Triangle object.

Argument(s)

IHANDL INTEGER variable To receive a handle

Description

TRINEW allocates memory for a new Triangle object, and returns a handle to it (in IHANDL), or a negative error return if no new Triangle object can be created.

After every successful call of TRINEW, TRIDEL should be called to delete the Triangle object when it is no longer needed.

Availability

Section 2, released version 2-16.

See Also

TRIDEL.

Examples

Triangulation of unconstrained random data
Triangulation of random points with specified perimeter
Triangulation of random points with internal fixed line
Triangulation with specified outer and inner perimeters
Triangulation with specified doubly-nested perimeters
Triangulation with specified intersecting perimeters


TRIOFF

This page uses frames, but your browser doesn't support them.


TRIOFF

SUBROUTINE TRIOFF (IHANDL, IOFF, ISTAT)

Purpose

to specify the base value subsequently used for point indices.

Argument(s)

IHANDL | INTEGER expression | A handle acquired from TRINEW
IOFF | INTEGER expression | Point index offset
ISTAT | INTEGER variable | To receive a status return

Description

Triangles returned by TRIGET are represented by three point indices (ie. their positions in the arrays registered by TRIREG). By default, point indices are counted from 1, but a call of TRIOFF(IHANDL, N, ISTAT) changes the base to N.

ISTAT | Interpretation
0 | Success
-ve | Error return

Availability

Section 2, released version 2-16.

Default

TRIOFF(IHANDL, 1, ISTAT) restores the default.

See Also

TRIREG, and TRIGET.

Examples

Triangulation of unconstrained random data
Triangulation of random points with specified perimeter
Triangulation of random points with internal fixed line
Triangulation with specified outer and inner perimeters
Triangulation with specified doubly-nested perimeters
Triangulation with specified intersecting perimeters


TRIREG

This page uses frames, but your browser doesn't support them.


TRIREG

SUBROUTINE TRIREG (IHANDL, XARR, YARR, NPTS, ISTAT)

Purpose

to register the (x,y) points in a Triangle object.

Argument(s)

IHANDL | INTEGER expression | A handle acquired from TRINEW
XARR,YARR | REAL arrays | (x,y) coordinates of data values
NPTS | INTEGER expression | Number of data points
ISTAT | INTEGER variable | To receive a status return

Description

TRIREG registers the coordinates of NPTS points from XARR and YARR into the Triangle object accessed by IHANDL.

After a Triangle object has been created by TRINEW, all the data points must be input by one call of TRIREG. If TRIREG is called again, the Triangle object is re-initialised, all previous input is lost, the points provided are registered, and a diagnostic is issued.

Before triangulation, TRIFIX may be called one or more times to specify sequence(s) of the points which are required to form fixed lines.

Triangulation may then be performed by calling TRIANG.

ISTAT | Interpretation
0 | Success
1 | Repeat call
-1 | Invalid handle
-2 | Fewer than 3 distinct points input
-3 | Out of memory

Availability

Section 2, released version 2-16.

Diagnostics

  (trireg repeated)1

See Also

TRINEW, and TRIFIX.

Examples

Triangulation of unconstrained random data
Triangulation of random points with specified perimeter
Triangulation of random points with internal fixed line
Triangulation with specified outer and inner perimeters
Triangulation with specified doubly-nested perimeters
Triangulation with specified intersecting perimeters


VGBDLL

This page uses frames, but your browser doesn't support them.


VGBDLL

SUBROUTINE VGBDLL (RLONG1, RLAT1, BEARIN, DISTIN, VARLNG, VARLAT)

Purpose

to evaluate the latitude and longitude of the point with bearing BEARIN and distance DISTIN from (RLONG1, RLAT1).

Argument(s)

RLONG1,RLAT1 | REAL expression | Coordinates of first point
BEARIN | REAL expression | Bearing (given as an angle)
DISTIN | REAL expression | Distance travelled (in kilometres)
VARLNG,VARLAT | REAL variables | To receive coordinates of second point

Description

RLONG1, RLAT1, VARLNG and VARLAT should be in the standard form - longitudes may take any value, which is interpreted as its equivalent between -180.0 and +180.0. If latitudes are outside the range -90.0 to +90.0, an error message is generated and no calculations can be made.

BEARIN is the bearing East of North from (RLONG1,RLAT1). BEARIN can take any value, but this value is interpreted as being between 0.0 and 360.0. Thus -45.0 is interpreted as 315.0, and both refer to due North-West.

DISTIN gives the distance travelled from (RLONG1,RLAT1). DISTIN is measured in kilometres and can take any value. However, once the value of VARLAT is +90.0 or -90.0, (VARLNG,VARLAT). is at one of the Poles, and its value will remain the same for all values of DISTIN greater than the present value.

VGBDLL is very similar to GGBDPT. The difference is that, while VGBDLL locates the position of (VARLNG,VARLAT), GGBDPT draws a line to this point.

Availability

Section 6, released version 2-12.

Diagnostics

  [VGBDLL:Constant bearing attempted over Pole]
{} [VGBDLL:Inappropriate bearing from Pole: v]
{} [VGBDLL:Latitude v out-of-range]

See Also

GGBDPT and VGLLBD.

Examples

Geographical text strings


VGLLBD

This page uses frames, but your browser doesn't support them.


VGLLBD

SUBROUTINE VGLLBD (RLONG1, RLAT1, RLONG2, RLAT2, VARBR, VARDST)

Purpose

to evaluate bearing and distance from (RLONG1,RLAT1) to (RLONG2,RLAT2).

Argument(s)

RLONG1,RLAT1 | REAL expressions | Coordinates of first point
RLONG2,RLAT2 | REAL expressions | Coordinates of second point
VARBR | REAL variable | To receive bearing (in degrees)
VARDST | REAL variable | To receive distance travelled (in kilometres)

Description

RLONG1, RLAT1, RLONG2 and RLAT2 should be in the standard form - longitudes may take any value, which is interpreted as its equivalent between -180.0 and +180.0. If latitudes are outside the range -90.0 to +90.0, an error message is generated and no calculations can be made.

VARBR is the bearing which would be drawn by the shortest line of constant bearing between two points. VARBR will be between 0.0 and 360.0, the value representing degrees East of North.

VARDST gives the length of the line of constant bearing in terms of distances on the Earth's surface (in kilometres).

If VARBR and VARDST were entered as the first two coordinates of a call to GGBDPT, a line drawn from (RLONG1,RLAT1) would end at (RLONG2,RLAT2).

Availability

Section 6, released version 2-12.

Diagnostics

  [VGLLBD:Latitude v out-of-range]

See Also

GGBDPT and VGBDLL.

Examples

Map projections
Bearing and distance


VGLLSD

This page uses frames, but your browser doesn't support them.


VGLLSD

SUBROUTINE VGLLSD (RLONG1, RLAT1, RLONG2, RLAT2, VARDST)

Purpose

to evaluate shortest distance between (RLONG1,RLAT1) and (RLONG2,RLAT2).

Argument(s)

RLONG1,RLAT1 | REAL expression | Coordinates of first point
RLONG2,RLAT2 | REAL expression | Coordinates of second point
VARDST | REAL variable | To receive distance between (RLONG1, RLAT1) and (RLONG2, RLAT2) (in kilometres)

Description

RLONG1, RLAT1, RLONG2 and RLAT2 should be in the standard form - longitudes may take any value, which is interpreted as its equivalent between -180.0 and +180.0. If latitudes are outside the range -90.0 to +90.0, an error message is generated and no calculations can be made.

VARDST gives the length of the great circle between (RLONG1,RLAT1) and (RLONG2,RLAT2). This line - the shortest distance between the two points - is measured in kilometres. It is never greater than half the Earth's circumference. This is around 20,000 km.

A line drawn by GGLLPT between (RLONG1,RLAT1) and (RLONG2,RLAT2), represents VARDST kilometres on the Earth's surface.

Availability

Section 6, released version 2-12.

Diagnostics

  [VGLLSD:Latitude v out-of-range]

Examples

Shortest distance between two points


VS3DLM

This page uses frames, but your browser doesn't support them.


VS3DLM

SUBROUTINE VS3DLM (XSTART, XSTOP, YSTART, YSTOP, ZSTART, ZSTOP)

Purpose

to set the three-dimensional Limiting Box for plottable data.

Argument(s)

XSTART | REAL expression | Value at start of x scale
XSTOP | REAL expression | Value at end of x scale
YSTART | REAL expression | Value at start of y scale
YSTOP | REAL expression | Value at end of y scale
ZSTART | REAL expression | Value at start of z scale
ZSTOP | REAL expression | Value at end of z scale

Description

ViSualization scales are set to accommodate all data within a three-dimensional box. By default, the x, y and z limits of this box are all -1.0 to +1.0. VS3DLM changes these limits.

All points which lie inside the Limiting Box after transformation can be plotted. Note that, although a point may have (x,y,z) coordinates within the limits set by VS3DLM, it may still lie outside the Limiting Box if any transformations have been applied.

For more information about the effect of transformations on scales, see documentation on the transformation subroutines VSMAG, VSROT and VSTRAN, and the scaling subroutines VSFIT, VSFITP and VSFULL.

VS3DLM is also used to set the Origin, which is at the centre of the Limiting Box. By default, this is at (0.0,0.0,0.0), although after

VS3DLM(XSTART, XSTOP, YSTART, YSTOP, ZSTART, ZSTOP)

it is at

 ((XSTART + XSTOP)/2, (YSTART + YSTOP)/2, (ZSTART + ZSTOP)/2)

VS3DLM does not take effect until the next call of VSNEW.

Availability

Section 7, released version 2-13.

Default

Calling VS3DLM with XSTART=XSTOP, YSTART=YSTOP or ZSTART=ZSTOP restores the default for all scales.

See Also

QV3DLM, VSFIT, VSFITP, VSFULL and VSINIT.

Examples

Setting an appropriate fit type
A contour map on the plane above a surface
Spherical coordinate data - a hedgehog


VSAXDR

This page uses frames, but your browser doesn't support them.


VSAXDR

SUBROUTINE VSAXDR (CAPX, CAPY, CAPZ)

Purpose

to draw 3-D axes on a ViSualization picture.

Argument(s)

CAPX | STRING expression | x-axis caption
CAPY | STRING expression | y-axis caption
CAPZ | STRING expression | z-axis caption

Description

VSAXDR can be called to draw x-yz axes for the current ViSualization picture. VSAXDR must be called after 3-D scales have been applied by VSNEW. The axes are drawn directly on the picture, not into the raster image. It is preferable to draw axes after the image has been transmitted by VSOUT, to avoid the axis being overdrawn.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSAXDR: No current ViSualization picture)1

See Also

AX*, VSAXFC, VSNEW and VSOUT.

Examples

Adding axes and keys


VSAXFC

This page uses frames, but your browser doesn't support them.


VSAXFC

SUBROUTINE VSAXFC (IXFIX, IYFIX, IZFIX)

Purpose

to specify the colours for filled rear planes of ViSualization pictures.

Argument(s)

IXFIX | INTEGER expression | Fill index for rear x plane
IYFIX | INTEGER expression | Fill index for rear y plane
IZFIX | INTEGER expression | Fill index for rear z plane

Description

VSAXFC specifies colour indices for filling the rear planes of the ViSualization Limiting Box. If a non-negative value is specified for any plane, it is filled whenever a new image is started. VSAXFC must therefore be called before VSNEW.

IXFIX specifies the colour index for the rear plane(s) with x constant, IYFIX specifies the colour index for the rear plane(s) with y constant, and IZFIX specifies the colour index for the rear plane(s) with z constant.

If colour index -1 is specified (default), the associated plane is not filled. Zero, one or two planes may be filled for each variable, depending on the Viewing Position set by VSVRTP/VSVXYZ.

In this release of the software, data may be mapped onto colour indices 0 to 95 inclusive.

Availability

Section 7, released version 2-14.

Default

VSAXFC(-1,-1,-1) restores the default.

Diagnostics

  (VSAXFC: Colour index I out of range)1

See Also

VSAXGC, VSOUT, VSVRTP and VSVXYZ.


VSAXGC

This page uses frames, but your browser doesn't support them.


VSAXGC

SUBROUTINE VSAXGC (IXCIX, IYCIX, IZCIX)

Purpose

to specify the colour indices for grid lines on the rear planes of ViSualization pictures.

Argument(s)

IXCIX | INTEGER expression | Colour index for x
IYCIX | INTEGER expression | Colour index for y
IZCIX | INTEGER expression | Colour index for z

Description

VSAXGC specifies colour indices for grid lines on the rear planes of the ViSualization Limiting Box. When grids have been requested, they are drawn in the raster image whenever a new image is started. VSAXGC must therefore be called before VSNEW.

IXCIX specifies the colour index for grid lines on the rear plane(s) with x constant, IYCIX specifies the colour index for grid lines on the rear plane(s) with y constant, and IZCIX specifies the colour index for grid lines on the rear plane(s) with z constant.

If index -1 is specified, grids on the associated planes are not drawn, and if rear planes are filled, grid lines are formed by gaps in the filling. If index -2 is specified, the associated grids are omitted. This is the default.

Availability

Section 7, released version 2-14.

Default

VSAXGC(-2,-2,-2) restores the default.

Diagnostics

  (VSAXGC: Colour index I out of range)1

See Also

VSAXFC.

Examples

Axis grids and polylines


VSBLFL

This page uses frames, but your browser doesn't support them.


VSBLFL

SUBROUTINE VSBLFL (X1, X2, Y1, Y2, Z1, Z2)

Purpose

to fill a 3-D block on a ViSualization picture.

Argument(s)

X1,X2 | REAL expressions | Range of x values
Y1,Y2 | REAL expressions | Range of y values
Z1,Z2 | REAL expressions | Range of z values

Description

VSBLFL draws a single block on the current ViSualization picture. This block is filled with the current fill index set by VSFILC, and subject to edge visibility and colour.

If the range of any dimension is zero (X1=X2, Y1=Y2 or Z1=Z2) nothing is drawn.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSBLFL: No current ViSualization picture)1

See Also

VSBLTN, VSBRFL, VSEDGC, VSEDGV and VSFILC.

Examples

Tinted bar chart


VSBLTN

This page uses frames, but your browser doesn't support them.


VSBLTN

SUBROUTINE VSBLTN (X1, X2, Y1, Y2, Z1, Z2, U1, U2)

Purpose

to tint a 3-D block on a ViSualization picture.

Argument(s)

X1,X2 | REAL expressions | Range of x values
Y1,Y2 | REAL expressions | Range of y values
Z1,Z2 | REAL expressions | Range of z values
U1,U2 | REAL expressions | Range of u values

Description

VSBLTN draws a single block on the current ViSualization picture. The block is tinted with colours ranging from the colour derived from U1 at z=Z1 to the colour derived from U2 at z=Z2. The block is subject to edge visibility and colour.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSBLTN: No current ViSualization picture)1

See Also

VSBLFL, VSBRTN, VSEDGC and VSEDGV.

Examples

Drawing an individual bar


VSBRBZ

This page uses frames, but your browser doesn't support them.


VSBRBZ

SUBROUTINE VSBRBZ (ZVAL)

Purpose

to specify the base z value for bars in ViSualization 3-D barcharts.

Argument(s)

ZVAL REAL expression Required base z value

Description

By default, ViSualization 3-D barcharts show each bar extending from z=0.0, to a z value from an array. VSBRBZ can be called before VSBRFL or VSBRTN to set an alternative base z value.

Availability

Section 7, released version 2-14.

Default

VSBRBZ(0.0) restores the default.

See Also

VSBRFL and VSBRTN.

Examples

3-D bar chart
Tinted bar chart


VSBRFC

This page uses frames, but your browser doesn't support them.


VSBRFC

SUBROUTINE VSBRFC (ICODE)

Purpose

to specify how colour sequences should be used on subsequent ViSualization 3-D barcharts.

Argument(s)

ICODE INTEGER expression Specify use of colour (see below)

ICODE | Different colours
0 | Faces of bars distinguished by pen pointers (default)
1 | Data Rows distinguished by colour sequence
2 | Data Columns distinguished by colour sequence
3 | Data Sets distinguished by colour sequence
4 | Data magnitudes distinguished by colour sequence

Description

VSBRFL fills a ViSualization 3-D barchart. VSBRFC can be called before VSBRFL, to specify how colours are used for the bars.

When ICODE = 0, three colour indices distinguish the three planes of each bar: the x plane uses the first colour index, the y plane uses the second, and the z plane uses the third.

When ICODE > 0, all planes of a bar are shaded with the same colour index. SQSHAD may be called to specify the sequence of colour indices. When SQSHAD has not been called, the colour indices are used in the natural sequence 1, 2, 3, ...

Availability

Section 7, released version 2-14.

Diagnostics

  (VSBRFC: Integer I out of range)1

Default

VSBRFC(0) restores the default.

See Also

SQSHAD and VSBRFL.

Examples

3-D bar chart
Stacked bar chart
Inquiring the size of stacked bars


VSBRFL

This page uses frames, but your browser doesn't support them.


VSBRFL

SUBROUTINE VSBRFL (Z3ARR, NX, NY, NSETS)

Purpose

to fill a ViSualization 3-D barchart.

Argument(s)

Z3ARR | REAL 3-D array | NX * NY * NSETS array of user (z) values
NX,NY,NSETS | INTEGER expressions | Dimensions of 3-D data array

Description

A ViSualization 3-D barchart is drawn representing NSETS sets of values in array Z3ARR, stacked on top of each other. The sets may be stacked downward with the first set at the top, or upward with the first set at the bottom, as specified by VSBRUP.

Different colours may be used to distinguish between data columns, data rows, or data sets, or data magnitudes, as specified by VSBRFC.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSBRFL: No current ViSualization picture)1
 (VSBRFL: Invalid array dimension)1

See Also

QVBRFL, VSBRBZ, VSBRFC, VSBRSZ, VSBRTN and VSBRUP.

Examples

3-D bar chart
Stacked bar chart
Inquiring the size of stacked bars


VSBRSZ

This page uses frames, but your browser doesn't support them.


VSBRSZ

SUBROUTINE VSBRSZ (X1, X2, Y1, Y2)

Purpose

to specify the widths of bars in ViSualization 3-D barcharts.

Argument(s)

X1,X2 | REAL expressions | Limits of bars in x direction
Y1,Y2 | REAL expressions | Limits of bars in y direction

Description

By default, each bar in ViSualization 3-D barcharts extends from 0.1 to 0.9 of the space available in both x and y. VSBRSZ can be called to specify alternative limits.

When X2 is not greater than X1, or either lies outside the range 0.0 to 1.0, the default in x is restored; when Y2 is not greater than Y1, or either lies outside the range 0.0 to 1.0, the default in y is restored.

Availability

Section 7, released version 2-14.

Default

VSBRSZ(0.0, 0.0, 0.0, 0.0) restores the default.

See Also

VSBRFL and VSBRTN.

Examples

Stacked bar chart
Inquiring the size of stacked bars


VSBRTN

This page uses frames, but your browser doesn't support them.


VSBRTN

SUBROUTINE VSBRTN (Z2ARR, NX, NY)

Purpose

to tint a ViSualization 3-D barchart.

Argument(s)

Z2ARR | REAL 2-D array | NX*NY user (z) values
NX,NY | INTEGER expressions | Dimensions of 2-D data array

Description

VSBRTN draws a ViSualization 3-D barchart representing the values in array Z2ARR. The colours representing different z values are controlled by VSUTOC, and by default map onto colour indices 1 to 15.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSBRTN: No current ViSualization picture)1
 (VSBRTN: Invalid array dimension)1

See Also

VSBRBZ, VSBRFL, VSBRSZ and VSUTOC.

Examples

Tinted bar chart


VSBRUP

This page uses frames, but your browser doesn't support them.


VSBRUP

SUBROUTINE VSBRUP (IUP)

Purpose

to specify the stacking direction for ViSualization 3-D barcharts.

Argument(s)

IUP INTEGER expression Whether bars stack upwards

IUP | Direction
0 | Downward (default)
1 | Upward

Description

VSBRUP is called before VSBRFL to specify whether multiple data sets should be stacked downward with the first set at the top, or upward with the first set at the bottom:

Availability

Section 7, released version 2-14.

Diagnostics

  (VSBRUP: Integer I out of range)1

Default

VSBRUP(0) restores the default.

See Also

VSBRFL and VSBRTN.

Examples

Inquiring the size of stacked bars


VSCGS

This page uses frames, but your browser doesn't support them.


VSCGS

SUBROUTINE VSCGS (RFROM, RTO, ICIX1, ICIX2)

Purpose

to set the palette for a range of colour indices to a grey scale suitable for light-sourcing.

Argument(s)

RFROM,RTO | REAL expressions | Range of grey levels [0.0-1.0]
ICIX1,ICIX2 | INTEGER expressions | Range of colour indices

Description

VSCGS changes the ViSualization palette, setting a grey scale from grey level RFROM at index ICIX1 to grey level RTO at index ICIX2, where 0.0 represents Black and 1.0 represents White.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSCGS: Colour index I out of range)1
  (VSCGS: Colour specification R out of range)1

See Also

VSCIM and VSIS.

Examples

Light sourcing IsoSurfaces


VSCHLS

This page uses frames, but your browser doesn't support them.


VSCHLS

SUBROUTINE VSCHLS (ICIX, HUE, BRIGHT, SATN)

Purpose

to set hue, lightness and saturation levels for the ViSualization palette.

Argument(s)

ICIX | INTEGER expression | Colour index to be changed
HUE | REAL expression | Hue (degrees)
BRIGHT | REAL expression | Lightness (0.0- 1.0)
SATN | REAL expression | Saturation (0.0- 1.0)

Description

ViSualization maintains its own target palette for output. Palette requests on devices with limited colour capabilities are rendered using Error Diffusion techniques.

BRIGHT and SATN must be between 0.0 and 1.0. If they are not, a diagnostic is issues and the palette is unchanged.

VSCHLS sets the device palette if palette control is available.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSCHLS: Colour index I out of range)1
 (VSCHLS: Colour specification R out of range)1

See Also

VSCRGB and VSCRNG.

Examples

Polymarkers


VSCIM

This page uses frames, but your browser doesn't support them.


VSCIM

SUBROUTINE VSCIM (METHOD)

Purpose

to switch the method of interpolating colour sequences.

Argument(s)

METHOD INTEGER expression Method ID (see below)

METHOD | Interpolation method
0 | Linear interpolation
1 | Non-linear gamma corrected interpolation

Description

VSCIM controls which method of interpolation is used by VSCGS and VSCRNG. Linear interpolation gives colour values with equally spaced intensities as passed to the display hardware. Non-linear gamma corrected interpolation provides a range of colours with equally spaced intensities as perceived by the human eye. By default linear interpolation is used.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSCIM: Integer I out of range)1

Default

VSCIM(0) restores the default.

See Also

VSCGS, and VSCRNG.


VSCRGB

This page uses frames, but your browser doesn't support them.


VSCRGB

SUBROUTINE VSCRGB (ICIX, RED, GREEN, BLUE)

Purpose

to specify red, green and blue levels for the ViSualization palette.

Argument(s)

ICIX | INTEGER expression | Colour index to be specified
RED | REAL expression | Proportion of Red (0.0- 1.0)
GREEN | REAL expression | Proportion of Green (0.0- 1.0)
BLUE | REAL expression | Proportion of Blue (0.0- 1.0)

Description

ViSualization maintains its own target palette for output. Palette requests on devices with limited colour capabilities are rendered using Error Diffusion techniques.

RED, GREEN and BLUE must be between 0.0 and 1.0. If they are not, a diagnostic is issued and the palette is unchanged.

VSCRGB sets the device palette if palette control is available.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSCRGB: Colour index I out of range)1
  (VSCRGB: Colour specification R out of range)1

See Also

VSCHLS and VSCRNG.

Examples

Composite images


VSCRNG

This page uses frames, but your browser doesn't support them.


VSCRNG

SUBROUTINE VSCRNG (ICIX1, ICIX2)

Purpose

to set a graded range of colours in the ViSualization palette.

Argument(s)

ICIX1 | INTEGER expression | first pen index of graded range
ICIX2 | INTEGER expression | last pen index of graded range

Description

VSCRNG sets the colours for all indices between ICIX1 and ICIX2. The existing values of colours ICIX1 and ICIX2 are left unchanged and a graded range of colours is interpolated for all indices between them.

Availability

Section 7, released version 2-14.

See Also

VSCHLS and VSCRGB.

Examples

Composite images


VSEDGC

This page uses frames, but your browser doesn't support them.


VSEDGC

SUBROUTINE VSEDGC (ICIX)

Purpose

to specify the colour index for the edge of filled areas.

Argument(s)

ICIX INTEGER expression Colour index for edge of filled areas

Description

VSEDGC sets the colour index for the edge of ViSualization filled areas. This value is then applied if the edge visibility is set to ON by VSEDGV(1). In this release of software, data may be mapped on to colour indices 0 to 95 inclusive.

If colour index -1 is specified, subsequent edges are omitted. This differs from selecting colour index 0, which draws the edge in background, and from VSEDGV(0) which fills the interior up to and including the edge.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSEDGC: Colour index I out of range)1

Default

VSEDGC(1) restores the default.

See Also

VSBLFL, VSBLTN, VSBRFL, VSBRTN, VSEDGV, VSPGFL, VSRG, VSRGU, VSPGTN, VSXYZ, VSXYZU, VSZ and VSZU.

Examples

Contours of one data set on the surface of another
A contour map on the plane above a surface


VSEDGI

This page uses frames, but your browser doesn't support them.


VSEDGI

SUBROUTINE VSEDGI (IDIM, IOFF, INCR)

Purpose

to specify an offset and increment for edging of gridded data elements to form a grid over surfaces.

Argument(s)

IDIM | INTEGER expression | Dimension number (see below)
IOFF | INTEGER expression | Offset for first edge
INCR | INTEGER expression | Increment between edges

IDIM | dimension(s) affected
0 | All
1 | x
2 | y
3 | z (Not relevant for 2--D arrays)

Description

VSEDGI controls the offset and increment of drawn edges for one of the dimensions of gridded data. IDIM indicates which dimension is being specified, 1, 2, or 3, or IDIM=0 may be used to specify all dimensions. VSEDGI calls with IDIM=1 and IDIM=2 affect all ViSualization plots drawn from gridded data; IDIM=3 applies to plotting from 3-dimensional arrays, but not to plotting from 2-dimensional arrays. By default, when edge visibility is ON (see VSEDGV) all edges of all elements are drawn. By selecting a less frequent density of edges, a coarser grid can be shown on the surface. The grid lines are offset by IOFF from the first data point. All edges in one dimension can be suppressed by calling VSEDGI with INCR=0.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSEDGI: Integer I out of range)1

Default

VSEDGI(0, 0, 1) restores the defaults.

See Also

VSEDGC, VSEDGV, VSIS, VSISU, VSRG, VSRGU, VSXYZ, and VSXYZU.


VSEDGV

This page uses frames, but your browser doesn't support them.


VSEDGV

SUBROUTINE VSEDGV (LEVEL)

Purpose

to specify whether the edge of polygons is to be drawn.

Argument(s)

LEVEL INTEGER expression Whether to draw the edge in edge colour index

LEVEL | Drawn
0 | OFF - no edge drawn
1 | ON - edge drawn

Description

By default, the edge visibility is OFF, and the edge of filled areas is drawn in the same colour as the interior. By setting the edge visibility ON, the edge of each polygon is drawn in the edge colour index (see VSEDGC). By drawing the edge of polygons separately from the interior, the underlying data structure can be displayed.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSEDGV: Integer I out of range)1

Default

VSEDGV(0) restores the default.

See Also

VSBLFL, VSBLTN, VSBRFL, VSBRTN, VSEDGC, VSEDGI, VSIS, VSISU, VSPGFL, VSPGTN, VSRG, VSRGU, VSXYZ, VSXYZU, VSZ and VSZU.

Examples

Contours of one data set on the surface of another
A contour map on the plane above a surface


VSEQX

This page uses frames, but your browser doesn't support them.


VSEQX

SUBROUTINE VSEQX (XSTART, XSTEP)

Purpose

to specify the equally-spaced x values to be associated with ViSualization gridded 3-D data.

Argument(s)

XSTART | REAL expression | x value of first data column
XSTEP | REAL expression | Interval between data columns

Description

By default, data on a regular grid drawn by VSRG, VSRGU, VSIS or VSISU are scaled to fit within the current Limiting Box specified by VS3DLM.

VSEQX specifies the x values corresponding to the data grid, and may be used in conjunction with VS3DLM to position the y-z plane in 3-D space. XSTART specifies the x coordinate to be associated with the first column of the data array, and XSTEP specifies the interval between columns.

VSEQX has no effect if VS3DLM has not been called to set the ViSualization 3-D scales explicitly.

Availability

Section 7, released version 2-13.

Default

Calling VSEQX with XSTEP=0.0 restores the default.

See Also

VSEQY, VSEQZ, VSRG, VSRGU, VSIS, and VSISU.

Examples

Specifying the x-y-z values associated with a regular grid


VSEQY

This page uses frames, but your browser doesn't support them.


VSEQY

SUBROUTINE VSEQY (YSTART, YSTEP)

Purpose

to specify the equally-spaced y values to be associated with ViSualization gridded 3-D data.

Argument(s)

YSTART | REAL expression | y value of first data row
YSTEP | REAL expression | Interval between data rows

Description

By default, data on a regular grid drawn by VSRG, VSRGU, VSIS or VSISU are scaled to fit within the current Limiting Box specified by VS3DLM.

VSEQY specifies the y values corresponding to the data grid, and may be used in conjunction with VS3DLM to position the x-z plane in 3-D space. YSTART specifies the y coordinate to be associated with the first row of the data array, and YSTEP specifies the interval between rows.

VSEQY has no effect if VS3DLM has not been called to set the ViSualization 3-D scales explicitly.

Availability

Section 7, released version 2-13.

Default

Calling VSEQY with YSTEP=0.0 restores the default.

See Also

VSEQX, VSEQZ, VSRG, VSRGU, VSIS and VSISU.

Examples

Specifying the x-y-z values associated with a regular grid


VSEQZ

This page uses frames, but your browser doesn't support them.


VSEQZ

SUBROUTINE VSEQZ (ZSTART, ZSTEP)

Purpose

to specify the equally-spaced z values to be associated with ViSualization gridded 3-D data.

Argument(s)

ZSTART | REAL expression | z value of first data plane
ZSTEP | REAL expression | Interval between data planes

Description

By default, data on a regular grid drawn by VSIS or VSISU are scaled to fit within the current Limiting Box specified by VS3DLM.

VSEQZ specifies the z values corresponding to the data grid, and may be used in conjunction with VS3DLM to position the data in the 3-D space. ZSTART specifies the first z value of the grid, and ZSTEP specifies the z interval of the grid.

VSEQZ has no effect unless VS3DLM has been called to set the ViSualization 3-D scales explicitly.

Availability

Section 7, released version 2-15.

Default

Calling VSEQZ with ZSTEP=0.0 restores the default.

See Also

VSEQX, VSEQY, VSIS and VSISU.

Examples

Specifying the x-y-z values associated with a regular grid


VSFILC

This page uses frames, but your browser doesn't support them.


VSFILC

SUBROUTINE VSFILC (ICIX)

Purpose

to specify the colour index to be used by ViSualization area fill subroutines.

Argument(s)

ICIX INTEGER expression Colour index for filling

Description

VSFILC sets the colour index for subsequent filling by VSPGFL or VSBLFL. In this release of software, data may be mapped on to colour indices 0 to 95 inclusive. If colour index -1 is specified, subsequent areas are not filled.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSFILC: Colour index I out of range)1

Default

VSFILC(1) restores the default.

See Also

VSBLFL, VSCHLS, VSCRGB and VSPGFL.

Examples

Composite images


VSFIT

This page uses frames, but your browser doesn't support them.


VSFIT

SUBROUTINE VSFIT (CHAXES)

Purpose

to specify which axis scales are measured in similar units.

Argument(s)

CHAXES STRING expression axes which are related

CHAXES | similar axes
"XYZ" | all scales in same units (default)
"XY" | x and y scales are similar
"XZ" | x and z scales are similar
"YZ" | y and z scales are similar
" " | all scales are unrelated

Description

2-D SIMPLEPLOT scales are set to accommodate all data within the three-dimensional box specified by VS3DLM. By default, each of these scales is measured in the same units. If the ranges of these scales are of different magnitudes, the resulting picture is distorted.

VSFIT specifies which scales are comparable. If scales are unrelated, each axis defines the edge of a cube which contains the data. If only 2 scales are similar, the length of the third axis is equal to the longer of the other two.

CHAXES may be in upper or lower case, but if it does not correspond to one of the strings above, an error message is written and nothing is altered.

If non-default scales are used, the relationship between axes is affected by the transformation routines, VSMAG, VSROT and VSTRAN.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSFIT: Invalid string XX)1

Default

VSFIT("XYZ") restores the default.

See Also

VS3DLM and VSFITP.

Examples

Setting an appropriate fit type
A contour map on the plane above a surface
Tinted bar chart


VSFITP

This page uses frames, but your browser doesn't support them.


VSFITP

SUBROUTINE VSFITP (XLEN, YLEN, ZLEN)

Purpose

to specify the relative lengths of the x, y and z axes.

Argument(s)

XLEN REAL expression Length of x-axis

Description

By default, the lengths of the ViSualization scales are proportional to the data range they cover. This means that if the ranges are not comparable, the picture is unduly distorted.

VSFITP specifies that the axis lengths are in proportion to each other. After VSFITP(1.0,1.0,1.0), for example, all axes are of the same length. After VSFITP(1.0,2.0,4.0), the x-axis is half the length of the y-axis, which is half the length of the z-axis.

If any argument is non-zero, the default is restored - scales are proportional to data range.

Availability

Section 7, released version 2-14.

Default

VSFITP(0.0,0.0,0.0) restores the default.

See Also

VS3DLM and VSFIT.

Examples

Adding axes and keys
Axis grids and polylines
Ungridded data
Stacked bar chart


VSFULL

This page uses frames, but your browser doesn't support them.


VSFULL

SUBROUTINE VSFULL (MODE)

Purpose

to specify how the Limiting Box is to fill the SIMPLEPLOT picture.

Argument(s)

MODE INTEGER expression Scaling Mode used

Description

By default, the 2-D SIMPLEPLOT scales are set to accommodate the extent of the Limiting Box. The underlying SIMPLEPLOT scales are Linear Cartesian with 1 unit in x the same as 1 unit in y.

If a point or object is Transformed (Rotated, Translated or Magnified), its (x,y,z) coordinates change. This means that it may no longer fit on the picture, even though before transformation it lies within the limits specified by VS3DLM. After VSFULL(1), VSNEW sets scales to allow all possible rotations. The relative size of the image is comparable for successive pictures.

After VSFULL(2), VSNEW sets all points within the 3-D limits to be plottable after the current requested Transformations. The resulting images are larger than those produced by Scaling Mode 1, but the scales of successive pictures are not directly comparable.

VSFULL does not take effect until the next call of VSNEW.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSFULL: Integer I out of range)1

Default

VSFULL(0) restores the default.

See Also

VS3DLM, VSINIT, VSMAG, VSROT and VSTRAN.


VSINIT

This page uses frames, but your browser doesn't support them.


VSINIT

SUBROUTINE VSINIT (LEVEL)

Purpose

to reset ViSualization defaults.

Argument(s)

LEVEL INTEGER expression Level of initialization

LEVEL | Initializes
1 | Rotation, Translation and Magnification
2 | Scales
4 | Drawing attributes

Description

VSINIT may be called to restore some or all defaults of attributes set in ViSualization:

The following subroutines are affected by VSINIT:

LEVEL | subroutines affected
1 | VSMAG, VSROT, VSTRAN
2 | VS3DLM, VSEQX, VSEQY, VSEQZ, VSFIT,
 | VSFITP, VSFULL, VSVRTP, VSVXYZ
4 | VSAXFC, VSAXGC, VSBRBZ, VSBRFC, VSBRSZ, VSBRUP,
 | VSCRGB, VSEDGC, VSEDGC, VSEDGV, VSFILC, VSCHLS, VSLBOX,
 | VSLINC, VSPMC, VSPMMG, VSUTOC
VSINIT(2) takes effect at the next call to VSNEW. VSINIT(1) and VSINIT(4) take effect immediately.

Multiple categories of attributes may be set by adding the appropriate values of LEVEL, eg. VSINIT(3) is equivalent to calling VSINIT(1) and VSINIT(2). VSINIT(7) restores all defaults.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSINIT: Integer I out of range)1

See Also

VSNEW.


VSIS

This page uses frames, but your browser doesn't support them.


VSIS

SUBROUTINE VSIS (V3ARR, NX, NY, NZ, RVAL)

Purpose

Draw the light-sourced IsoSurface of a specified data level from REAL data in a 3-D array in a ViSualization image.

Argument(s)

V3ARR | REAL 3-D array | Input data
NX,NY,NZ | INTEGER expressions | Dimensions of 3-D array
RVAL | REAL expression | Data level of surface

Description

VSIS draws a surface representing the data level RVAL in the array V3ARR. The lightness at each point on the surface is a value from 0.0 (no light) to 1.0 (maximum light) calculated from the gradient of the surface relative to the direction of the light source. By default, the range of lightnesses is mapped on to colour indices 1 to 15, which by default are a sequence of contrasting colours; VSUTOC may be called to specify a different range of indices, and VSCGS is available to set the palette for a chosen range of indices to a grey scale.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSIS: No current ViSualization picture)1
  (VSIS: Invalid array dimension)1

See Also

VSCGS, VSEDGV, VSEQX, VSEQY, VSEQZ, VSISU, VSLSLD and VSLSSM.

Examples

IsoSurface from a 3-D array
Light sourcing IsoSurfaces
Specifying the x-y-z values associated with a regular grid
Drawing an IsoSurface in slices


VSISU

This page uses frames, but your browser doesn't support them.


VSISU

SUBROUTINE VSISU (V, U, NX, NY, NZ, RVAL)

Purpose

draw contours of REAL data from one 3-D array on the IsoSurface of a specified data level from REAL data in another 3-D array in a ViSualization image.

Argument(s)

V,U | REAL 3-D arrays | Input data
NX,NY,NZ | INTEGER expressions | Dimensions of 3-D arrays
RVAL | REAL expression | Data level of surface

Description

VSISU draws contours of REAL data from the 3-D array U on the IsoSurface of data level RVAL from REAL data in the 3-D array V in a ViSualization image. The colours representing different contour levels are controlled by VSUTOC.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSIS: No current ViSualization picture)1
  (VSIS: Invalid array dimension)1

See Also

VSEDGV, VSEQX, VSEQY, VSEQZ, VSIS, and VSUTOC.

Examples

Contours of one data set on the IsoSurface of another


VSK7H

This page uses frames, but your browser doesn't support them.


VSK7H

SUBROUTINE VSK7H (VCHAR, HCHAR, ULEFT, URIGHT, CAP)

Purpose

to draw a horizontal key.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of key
HCHAR | CHARACTER*1 | Horizontal position of key
ULEFT | REAL expression | u value at left of key
URIGHT | REAL expression | u value at right of key
CAP | STRING expression | Single caption for key

Description

VSK7H draws a key to the current patterns representing user data values on tinted ViSualization plots. A horizontal rectangle gives a sample of colours, and a u-axis, labelled with the caption CAP, gives the data values.

The rectangle is drawn as a ViSualization image, and VSK7H should not be called between VSNEW and VSOUT. A box is drawn round the key unless cancelled by BOXKY(.FALSE.).

VCHAR and HCHAR are the single character initial letters of vertical and horizontal positions of the key. The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSK7H: Key omitted - active ViSualization picture)1

See Also

BOXKY, VSBLTN, VSBRTN, VSK7V, VSPGTN, VSPLTN, VSRG, VSRGU, VSUTOC, VSXYZ, VSXYZU, VSZ and VSZU.

Examples

Adding axes and keys


VSK7V

This page uses frames, but your browser doesn't support them.


VSK7V

SUBROUTINE VSK7V (VCHAR, HCHAR, UTOP, UBOTTM, CAP)

Purpose

to draw a vertical key.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of key
HCHAR | CHARACTER*1 | Horizontal position of key
UTOP | REAL expression | u value at top of key
UBOTTM | REAL expression | u value at bottom of key
CAP | STRING expression | Single caption for key

Description

VSK7V draws a key to the current patterns representing user data values on tinted ViSualization plots. A vertical rectangle gives a sample of colours, and a u-axis, labelled with the caption CAP, gives the data values.

The rectangle is drawn as a ViSualization image, and VSK7V should not be called between VSNEW and VSOUT. A box is drawn round the key unless cancelled by BOXKY(.FALSE.).

VCHAR and HCHAR are the single character initial letters of vertical and horizontal positions of the key. The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSK7V: Key omitted - active ViSualization picture)1

See Also

BOXKY, VSBLTN, VSBRTN, VSK7H, VSPGTN, VSPLTN, VSRG, VSRGU, VSUTOC, VSXYZ, VSXYZU, VSZ and VSZU.

Examples

Ungridded data


VSKEYS

This page uses frames, but your browser doesn't support them.


VSKEYS

SUBROUTINE VSKEYS (VCHAR, HCHAR, LABARR, NARR, CAP)

Purpose

to draw a complete key to a sequence of distinct shading patterns.

Argument(s)

VCHAR | CHARACTER*1 | Vertical position of area
HCHAR | CHARACTER*1 | Horizontal position of area
LABARR | STRING array | Set of captions
NARR | INTEGER expression | Number of labels in LABARR
CAP | STRING expression | Header caption for key

Description

VSKEYS constructs a complete key to the first NARR shading patterns of the currently defined sequence (see SQSHAD and SHPATT).

The key is positioned on the SIMPLEPLOT page in the same way as other keys; VCHAR and HCHAR are single characters representing the initial letters of vertical and horizontal positions. The possible interpretations of VCHAR and HCHAR are listed in Appendix T of the SIMPLEPLOT Supplement.

CAP provides a heading which, by default, is centred at the top of the key. The key is associated only with the current picture but area is masked to prevent overdrawing.

VSKEYS should not be called between VSNEW and VSOUT. A box is drawn round the key unless cancelled by BOXKY(.FALSE.).

Availability

Section 7, released version 2-14.

See Also

ADDJST, BOXKY, DEFKEY, DEFKYW, DEFPOS, SHPATT, SHSET SQSHAD, VSK7H, VSK7V.

Examples

Stacked bar chart


VSLBOX

This page uses frames, but your browser doesn't support them.


VSLBOX

SUBROUTINE VSLBOX (LEVEL)

Purpose

to specify whether Limiting Boxes are to be drawn around ViSualization images.

Argument(s)

LEVEL INTEGER expression Whether images are to be boxed

LEVEL | Action taken
0 | No box drawn
1 | Box is drawn

Description

By default, images are not boxed. VSLBOX specifies whether or not a 3-D box is to be drawn around every subsequent image.

After VSLBOX(1), a 3-D box is drawn around the area defined by the Limiting Box whenever VSNEW is called to start a new image. The box is drawn in the current Line Colour Index set by VSLINC. If an image has already been started, no box is drawn until the next image.

Availability

Section 7, released version 2-13.

Default

VSLBOX(0) restores the default.

Diagnostics

  (VSLBOX: Integer I out of range)1

See Also

VS3DLM, VSFULL, VSLINC and VSNEW.

Examples

Varying the viewing position
Adding axes and keys


VSLINC

This page uses frames, but your browser doesn't support them.


VSLINC

SUBROUTINE VSLINC (ICIX)

Purpose

to specify the colour index to be used by line drawing subroutines.

Argument(s)

ICIX INTEGER expression Colour index for line drawing

Description

VSLINC sets the colour index for subsequent line drawing by VSLBOX or VSPLDR. In this release of software, data may be drawn in colour indices 0 to 95 inclusive. If colour index -1 is specified, subsequent lines are omitted.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSLINC: Colour index I out of range)1

Default

VSLINC(1) restores the default.

See Also

VSCHLS, VSLBOX, VSPLDR and VSCRGB.

Examples

Axis grids and polylines


VSLSLD

This page uses frames, but your browser doesn't support them.


VSLSLD

SUBROUTINE VSLSLD (THETA, PHI)

Purpose

to specify the direction of a light source for a ViSualization image.

Argument(s)

THETA | REAL expression | Horizontal angle
PHI | REAL expression | Vertical angle

Description

VSLSLD sets a direction for the ViSualization IsoSurface light in terms of 2 angles.

THETA is the horizontal angle in degrees between the Light Direction and the Origin on the x-y plane; PHI is the vertical angle in degrees between this plane and the Light Direction. By default, THETA=0.0, and PHI=0.0.

THETA = 0.0 along the x-axis (ie. at y=0.0). PHI = 0.0 on the x-y plane (ie. at z=0.0).

Availability

Section 7, released version 2-15.

Default

VSLSLD(0.0, 0.0) restores the default.

See Also

VSLSSM and VSIS.

Examples

Drawing an IsoSurface in slices


VSLSSM

This page uses frames, but your browser doesn't support them.


VSLSSM

SUBROUTINE VSLSSM (METHOD)

Purpose

to specify the shading method for light-sourcing to be used in a ViSualization image.

Argument(s)

METHOD INTEGER expression Shading method for light-sourcing (see below)

METHOD | Shading method
1 | Uniform colour for each facet
2 | Tinting of each facet

Description

VSLSSM controls which method of shading is used by VSIS when drawing the ViSualization image.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSLSSM: Integer I out of range)1

Default

VSLSSM(1) restores the default.

See Also

VSLSLD and VSIS.

Examples

Light sourcing IsoSurfaces


VSMAG

This page uses frames, but your browser doesn't support them.


VSMAG

SUBROUTINE VSMAG (XFACT, YFACT, ZFACT)

Purpose

to magnify ViSualization coordinates along any or all of the x-yz axes.

Argument(s)

XFACT | REAL expression | Magnification factor along the x-axis
YFACT | REAL expression | Magnification factor along the y-axis
ZFACT | REAL expression | Magnification factor along the z-axis

Description

By default, ViSualization interprets (x,y,z) coordinates literally. However, following a call to VSMAG, a magnification factor is applied to subsequent coordinates.

For example, following a call to VSMAG(XFACT,1.0,1.0), the point (x,y,z) is interpreted as (x*XFACT,y,z), and all subsequent objects are magnified by XFACT along the x-axis.

Similar magnification can be applied to the y and z-axes by setting YFACT and ZFACT to values other than 1.0.

After a point has been magnified, its (x,y,z) position changes. This means that it may not fit on the current picture, even if it lies within the limits specified by VS3DLM. VSFULL(2) may be called before VSNEW to ensure that (x,y,z) points within the Limiting Box before transformation stay on the picture.

Transformation is cumulative, so two successive calls to VSMAG(2.0,2.0,2.0) quadruple the size along each axis.

The transformed coordinate is a combination of the affects of VSMAG, VSROT and VSTRAN, which means that default magnification cannot be restored on its own. All transformation variables are restored by VSINIT(1).

Availability

Section 7, released version 2-13.

See Also

VSFULL, VSINIT, VSROT and VSTRAN.


VSNEW

This page uses frames, but your browser doesn't support them.


VSNEW

SUBROUTINE VSNEW

Purpose

to start a new ViSualization picture.

Argument(s)

None

Description

VSNEW starts a new ViSualization picture and updates the variables which affect scaling. These are attributes set by VS3DLM, VSEQX, VSEQY, VSEQZ, VSFIT, VSFITP, VSFULL, VSVRTP and VSVXYZ.

VSNEW sets the underlying SIMPLEPLOT scales which are used by the internal ViSualization subroutines when constructing and transmitting an image. If another type of graph is drawn after a call to VSNEW, the SIMPLEPLOT scales should be set explicitly by SCALES or EQSCAL.

Backdrops and grids specified by VSAXFC and VSAXGC are drawn into the raster image when VSNEW is called.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSNEW: Radius too short - no perspective applied)1

See Also

VS3DLM, VSAXFC, VSAXGC, VSFIT, VSFITP, VSFULL, VSVRTP and VSVXYZ.

Examples

Surface from a 2-D array


VSOUT

This page uses frames, but your browser doesn't support them.


VSOUT

SUBROUTINE VSOUT

Purpose

to flush the raster image.

Argument(s)

None

Description

VSOUT sends the raster image to the display device. With this release of ViSualization the internal raster image is not retained for subsequent re-processing, and VSNEW must be called before starting a new image.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSOUT: n incomplete tasks)1

See Also

VSNEW.

Examples

Surface from a 2-D array


VSPGFE

This page uses frames, but your browser doesn't support them.


VSPGFE

SUBROUTINE VSPGFE (XARRAY, YARRAY, ZARRAY, IEDGARR, NPTS)

Purpose

to fill an edge-flagged planar polygon with the current fill index in a ViSualization image.

Argument(s)

XARRAY | REAL array | NPTS x values
YARRAY | REAL array | NPTS y values
ZARRAY | REAL array | NPTS z values
IEDGARR | INTEGER array | NPTS edge flags
NPTS | INTEGER expression | Number of points in polygon

Description

The current transformations are applied to the x-yz data. The interior area is filled with the current fill colour index, and the edge is drawn according to the values in IEDGARR. Successive edge points are joined by straight lines.

The ith element of IEDGARR specifies the colour index for the edge joining the ith point of the polygon to the next point. The final element of IEDGARR relates to the edge from the last point to the first point. An edge colour index of -1 specifies that a gap is left in place of an edge; a colour index of -2 specifies that the fill colour continues to that boundary of the polygon.

The presence and colours of edges drawn by VSPGFE are independent of the current edge visibility and colour set by VSEDGV and VSEDGC.

Polygons must be planar, convex, and between 3 and 200 points. If NPTS < 3, a diagnostic is issued and nothing is drawn.

Hidden line and surface removal are applied to all drawing.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSPGFE: No current ViSualization picture)1
  (VSPGFE: Invalid array dimension)1

See Also

VSPGFL, VSPGTE, and VSPGTN.


VSPGFL

This page uses frames, but your browser doesn't support them.


VSPGFL

SUBROUTINE VSPGFL (XARRAY, YARRAY, ZARRAY, NPTS)

Purpose

to fill a planar polygon with the current fill index in a ViSualization image.

Argument(s)

XARRAY | REAL array | NPTS x values
YARRAY | REAL array | NPTS y values
ZARRAY | REAL array | NPTS z values
NPTS | INTEGER expression | Number of points in polygon

Description

The current transformations are applied to the x-yz data. Successive points are joined by a straight line, and the interior area is filled with the current fill colour index. If the Edge Visibility is ON, following a call to VSEDGV(1), the edge is drawn in the current Edge Colour Index.

Polygons must be planar, convex and between 3 and 200 points. If NPTS < 3, a diagnostic is issued and nothing is drawn.

Hidden line and surface removal are applied to all drawing.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSPGFL: No current ViSualization picture)1
  (VSPGFL: Invalid array dimension)1

See Also

VSEDGC, VSEDGV, VSFILC and VSPGTN.

Examples

Composite images


VSPGTE

This page uses frames, but your browser doesn't support them.


VSPGTE

SUBROUTINE VSPGTE (XARRAY, YARRAY, ZARRAY, UARRAY, IEDGARR, NPTS)

Purpose

to tint an edge-flagged planar polygon from user data values in a ViSualization image.

Argument(s)

XARRAY | REAL array | NPTS x values
YARRAY | REAL array | NPTS y values
ZARRAY | REAL array | NPTS z values
UARRAY | REAL array | NPTS u values
IEDGARR | INTEGER array | NPTS edge flags
NPTS | INTEGER expression | Number of points in polygon

Description

The current transformations are applied to the x-yz data. The interior area is tinted with values interpolated from UARRAY, and the edge is drawn according to the values in IEDGARR. Successive edge points are joined by straight lines.

The ith element of IEDGARR specifies the colour index for the edge joining the ith point of the polygon to the next point. The final element of IEDGARR relates to the edge from the last point to the first point. An edge colour index of -1 specifies that a gap is left in place of an edge; a colour index of -2 specifies that the interpolated fill colour continues to that boundary of the polygon.

The presence and colours of edges drawn by VSPGTE are independent of the current edge visibility and colour set by VSEDGV and VSEDGC.

Polygons must be planar, convex, and between 3 and 200 points. If NPTS < 3, a diagnostic is issued and nothing is drawn.

Hidden line and surface removal are applied to all drawing.

Availability

Section 7, released version 2-15.

Diagnostics

  (VSPGTE: No current ViSualization picture)1
  (VSPGTE: Invalid array dimension)1

See Also

VSPGFE, VSPGFL, and VSPGTN.


VSPGTN

This page uses frames, but your browser doesn't support them.


VSPGTN

SUBROUTINE VSPGTN (XARRAY, YARRAY, ZARRAY, UARRAY, NPTS)

Purpose

to tint a planar polygon from user data values in a ViSualization image.

Argument(s)

XARRAY | REAL array | NPTS x values
YARRAY | REAL array | NPTS y values
ZARRAY | REAL array | NPTS z values
UARRAY | REAL array | NPTS user data values
NPTS | INTEGER expression | Number of points in polygon

Description

The current transformations are applied to the x-yz data. Successive points are joined by a straight line, and the interior area is filled by changing colours interpolated from the corresponding user data values. If the Edge Visibility is ON, following a call to VSEDGV(1), the edge is drawn in the current Edge Colour Index.

Polygons must be planar, convex and between 3 and 200 points. If NPTS < 3, a diagnostic is issued and nothing is drawn.

Hidden line removal is applied to all drawing.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSPGTN: No current ViSualization picture)1
  (VSPGTN: Invalid array dimension)1

See Also

VSEDGC, VSEDGV, VSPGFL and VSUTOC.


VSPLDR

This page uses frames, but your browser doesn't support them.


VSPLDR

SUBROUTINE VSPLDR (XARRAY, YARRAY, ZARRAY, NPTS)

Purpose

to draw a polyline through a succession of (x,y,z) data points in a ViSualization image.

Argument(s)

XARRAY | REAL array | NPTS x values
YARRAY | REAL array | NPTS y values
ZARRAY | REAL array | NPTS z values
NPTS | INTEGER expression | Number of points in polyline

Description

The current transformations are applied to the input data and successive points are joined by a straight line, using the current line colour index. Hidden line removal is applied to all drawing.

If NPTS < 2, a diagnostic is issued and nothing is drawn.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSPLDR: No current ViSualization picture)1
  (VSPLDR: Invalid array dimension)1

See Also

VSLINC and VSPLTN.

Examples

Axis grids and polylines


VSPLTN

This page uses frames, but your browser doesn't support them.


VSPLTN

SUBROUTINE VSPLTN (XARRAY, YARRAY, ZARRAY, UARRAY, NPTS)

Purpose

to tint a polyline based on user data values in a ViSualization image.

Argument(s)

XARRAY | REAL array | NPTS x values
YARRAY | REAL array | NPTS y values
ZARRAY | REAL array | NPTS z values
UARRAY | REAL array | NPTS user data values
NPTS | INTEGER expression | Number of points in polyline

Description

The current ViSualization transformations are applied to the x-yz data. Successive points are joined by a straight line, using changing colours interpolated from the corresponding user data values.

If VSPLTN < 2, a diagnostic is issued and nothing is drawn.

Hidden line removal is applied to all drawing.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSPLTN: No current ViSualization picture)1
  (VSPLTN: Invalid array dimension)1

See Also

VSPLDR and VSUTOC.

Examples

Spherical coordinate data - a hedgehog


VSPMC

This page uses frames, but your browser doesn't support them.


VSPMC

SUBROUTINE VSPMC (ICIX)

Purpose

to specify the colour index for subsequent markers.

Argument(s)

ICIX INTEGER expression Colour index for markers

Description

VSPMC sets the colour index for subsequent marker symbols. In this release of software, data may be drawn in colour indices 0 to 95 inclusive. If colour index -1 is specified, subsequent markers are omitted.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSPMC: Colour index I out of range)1

Default

VSPMC(1) restores the default.

See Also

VSCHLS, VSPMDR and VSCRGB.

Examples

Polymarkers


VSPMDR

This page uses frames, but your browser doesn't support them.


VSPMDR

SUBROUTINE VSPMDR (XARRAY, YARRAY, ZARRAY, NPTS, MKTYPE)

Purpose

to draw a set of markers of type MKTYPE in a ViSualization image.

Argument(s)

XARRAY | REAL array | NPTS x coordinates
YARRAY | REAL array | NPTS y coordinates
ZARRAY | REAL array | NPTS z coordinates
NPTS | INTEGER expression | Number of points in polymarker
MKTYPE | INTEGER expression | Marker type

Description

VSPMDR draws a polymarker - a set of marker symbols - of type MKTYPE, centred on each of the points held in the x-yz arrays. The current transformations are applied to the x-yz data.

Markers are drawn in the current marker colour with the current marker magnification factor applied by VSPMMG. Markers are drawn face on to the viewer, orthogonal to the line of sight.

By default, markers are scaled to occupy 2% of the smaller of the width or height of the picture size, with a minimum size of 0.14cm. When perspective is applied to the ViSualization image, the target marker size applies at a point half way between the front and back of the image. The size of markers decreases away from the viewer.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSPMDR: No Current ViSualization picture)1
 (VSPMDR: Invalid array dimension)1
 (VSPMDR: Integer I out of range)1

See Also

VSPMC and VSPMMG.

Examples

Polymarkers


VSPMMG

This page uses frames, but your browser doesn't support them.


VSPMMG

SUBROUTINE VSPMMG (FACTOR)

Purpose

to specify the scaling factor for subsequent markers.

Argument(s)

FACTOR REAL expression Factor by which marker size to be scaled

Description

By default, markers are scaled to occupy 2% of the smaller of the width or height of the picture size, with a minimum marker size of 0.14cm. When perspective is applied to the ViSualization image, the target marker size applies at a point half way between the front and back of the image. The size of markers decreases away from the viewer.

After VSPMMG(FACTOR), the size of markers is increased by a factor of FACTOR. FACTOR must be greater than 0.0. If it is not, the default is used.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSPMMG: Value R out of range)1

Default

VSPMMG(0.0) restores the default.

See Also

VSPMDR.

Examples

Polymarkers


VSPOP

This page uses frames, but your browser doesn't support them.


VSPOP

SUBROUTINE VSPOP

Purpose

to recall a transformation matrix saved by VSPUSH.

Argument(s)

None

Description

VSPUSH saves the current matrix of transformations, set by VSMAG, VSROT and VSTRAN. At the next call of VSPOP, subsequent calls to these subroutines are ignored. The modelling transformations active at the call of VSPUSH are applied.

VSPOP may be called as many times as there have been calls to VSPUSH. The first call to VSPOP recalls the matrix saved most recently, with subsequent calls remembering previous matrices. If VSPUSH has been called n times, the first matrix saved is recalled by the nth call to VSPOP.

If there is an attempt to recall more matrices than have been saved, a diagnostic is issued and the current matrix is unchanged.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSPOP: No more modelling transformations)1

See Also

VSMAG, VSPUSH, VSROT and VSTRAN.


VSPUSH

This page uses frames, but your browser doesn't support them.


VSPUSH

SUBROUTINE VSPUSH

Purpose

to save current ViSualization transformation matrix.

Argument(s)

None

Description

VSPUSH saves the current matrix of transformations, set by VSMAG, VSROT and VSTRAN. At the next call of VSPOP, subsequent calls to these subroutines are ignored. The modelling transformations active at the call of VSPUSH are applied.

VSPUSH may be called more than once. If a series of calls to VSPUSH are made, the first call to VSPOP recalls the matrix most recently pushed. Subsequent calls to VSPOP each recall the matrix most previously pushed but not yet popped.

Up to 20 matrices may be pushed at any one time. If an attempt is made to push more, a diagnostic is issued and the matrix is not remembered.

Availability

Section 7, released version 2-14.

Diagnostics

  (VSPUSH: Too many modelling transformations)1

See Also

VSMAG, VSPOP, VSROT and VSTRAN.


VSPUT

This page uses frames, but your browser doesn't support them.


VSPUT

SUBROUTINE VSPUT (IXDEST, IYDEST, NX, NY, IARRAY, ZARRAY, MODE)

Purpose

to copy data into the raster image and ZBuffer.

Argument(s)

IXDEST,IYDEST | INTEGER expressions | Column and row of raster image for positioning bottom left corner of data
NX,NY | INTEGER expressions | Number of columns and rows to be copied
IARRAY | BYTE array | Data to be copied into raster image
ZARRAY | BYTE array | Data to be copied into ZBuffer
MODE | INTEGER expression | Copy mode

Description

VSPUT copies NX*NY elements from arrays IARRAY and ZARRAY into the internal raster image and ZBuffer. MODE defines the type of copy operation to be performed:

MODE | Description
0 | Unconditional copy. Previous contents of destination are lost
1 | Copy image data only if nearer than destination data
The number of bytes in each element of IARRAY and ZARRAY is given by QVSIZE.

Availability

Section 7, released version 2-?.

Diagnostics

  (VSPUT: No raster image)1
 (VSPUT: Invalid position)1
 (VSPUT: Invalid array dimension)1

See Also

QVGET, QVLIMS and QVSIZE.


VSRG

This page uses frames, but your browser doesn't support them.


VSRG

SUBROUTINE VSRG (Z2ARR, NX, NY)

Purpose

to draw a perspective surface picture from a 2-D array in a ViSualization image.

Argument(s)

Z2ARR | REAL 2-D array | NX*NY array of user (z) values
NX,NY | INTEGER expression | Dimensions of 2-D data array

Description

The data values held in the array Z2ARR are drawn as a filled surface. The colours representing different heights are controlled by VSUTOC.

By default, the x, y and z ranges of the data are mapped onto the Limiting Box. If VS3DLM has been called to set the scales explicitly, the z values map onto the specified limits, and the x and y scales can be controlled by VSEQX and VSEQY.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSRG: No current ViSualization picture)1
  (VSRG: Invalid array dimension)1

See Also

VS3DLM, VSEDGC, VSEDGV, VSEQX, VSEQY, VSRGU and VSUTOC.

Examples

Surface from a 2-D array
Varying the viewing position
Setting an appropriate fit type
A contour map on the plane above a surface
Composite images


VSRGU

This page uses frames, but your browser doesn't support them.


VSRGU

SUBROUTINE VSRGU (Z2ARR, U2ARR, NX, NY)

Purpose

to draw contours of data from one 2-D array on a surface picture from another 2-D array in a ViSualization image.

Argument(s)

Z2ARR | REAL 2-D array | NX*NY array of (z) values
U2ARR | REAL 2-D array | NX*NY array of data values
NX,NY | INTEGER expressions | Dimensions of 2-D arrays

Description

Contours representing U2ARR are drawn on the surface defined by Z2ARR. The colours representing different contour levels are controlled by VSUTOC.

By default, the x, y and z ranges of the data are mapped onto the Limiting Box. If VS3DLM has been called to set the scales explicitly, the z values map onto the specified limits, and the x and y scales can be controlled by VSEQX and VSEQY.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSRGU: No current ViSualization picture)1
  (VSRGU: Invalid array dimension)1

See Also

VS3DLM, VSEDGC, VSEDGV, VSEQX, VSEQY, VSRG and VSUTOC.

Examples

Contours of one data set on the surface of another
A contour map on the plane above a surface
Stacked contour plots from a 3-D matrix


VSROT

This page uses frames, but your browser doesn't support them.


VSROT

SUBROUTINE VSROT (CHAXIS, ROTATE)

Purpose

to rotate ViSualization coordinates around one of the x-yz axes.

Argument(s)

CHAXIS | CHARACTER*2 | Axis type
ROTATE | REAL expression | Rotation (in degrees)

CHAXIS | Type of axis
"X3" | 3-D perspective x-axis
"Y3" | 3-D perspective y-axis
"Z3" | 3-D perspective z-axis

Description

By default, ViSualization interprets (x,y,z) coordinates literally. However, following a call to VSROT, subsequent coordinates are rotated around one of the axes.

CHAXIS signifies axis type. If you are looking down the axis in a positive direction, rotation is clockwise.

Following a call to VSROT("X3",45.0), the point (x,y,z) is rotated by 45° around the x-axis. Transformation is cumulative, so two successive calls to VSROT("Y3",30.0) rotate points 60° around the y-axis.

After a point has been rotated, its (x,y,z) position changes. This means that it may not fit on the current picture, even if it lies within the limits specified by VS3DLM. VSFULL(1) or VSFULL(2) may be called before VSNEW to ensure that (x,y,z) points within the Limiting Box before transformation stay on the picture.

The transformed coordinate is a combination of the effects of VSMAG, VSROT and VSTRAN, which means that default rotation cannot be restored on its own. All transformation variables are restored by VSINIT(1).

Availability

Section 7, released version 2-13.

Diagnostics

  (VSROT: Invalid string XX)1

See Also

VSFULL, VSINIT, VSMAG and VSTRAN.

Examples

A surface and mesh from spherical coordinate data


VSTRAN

This page uses frames, but your browser doesn't support them.


VSTRAN

SUBROUTINE VSTRAN (XTRANS, YTRANS, ZTRANS)

Purpose

to translate ViSualization coordinates along any or all of the x-yz axes.

Argument(s)

XTRANS | REAL expression | Translation along the x-axis
YTRANS | REAL expression | Translation along the y-axis
ZTRANS | REAL expression | Translation along the z-axis

Description

By default, ViSualization interprets (x,y,z) coordinates literally. However, following a call to VSTRAN, a translation value is applied to subsequent coordinates.

For example, following a call to VSTRAN(XTRANS,0.0,0.0), the point (x,y,z) is interpreted as (x+XTRANS,y,z), and all subsequent objects are translated by XTRANS along the x-axis.

Similar translation can be applied to the y and z-axes by setting YTRANS and ZTRANS to non-zero values.

After a point has been translated, its (x,y,z) position changes. This means that it may not fit on the current picture, even if it lies within the limits specified by VS3DLM. VSFULL(2) may be called before VSNEW to ensure that (x,y,z) points within the Limiting Box before transformation stay on the picture.

Transformation is cumulative, so two successive calls to VSTRAN(2.0,2.0,2.0) move points 4.0 units along each axis.

The transformed coordinate is a combination of the effects of VSMAG, VSROT and VSTRAN, which means that default translation cannot be restored on its own. All transformation variables are restored by VSINIT(1).

Availability

Section 7, released version 2-13.

See Also

VSFULL, VSINIT, VSMAG and VSROT.


VSUTOC

This page uses frames, but your browser doesn't support them.


VSUTOC

SUBROUTINE VSUTOC (UMIN, UMAX, ICIX1, ICIX2)

Purpose

to define mapping from user data values to colour indices.

Argument(s)

UMIN,UMAX | REAL expressions | Range of user data values to be mapped
ICIX1,ICIX2 | INTEGER expressions | Corresponding range of colour indices

Description

By default, ViSualization maps the full range of user data given in output subroutines on to colour indices 1 to 15. VSUTOC selects different ranges of colour associated with a ViSualization picture.

VSUTOC maps data within a given range onto a specified set of pen indices. After VSUTOC(UMIN,UMAX,ICIX1,ICIX2), each index from ICIX1 to (ICIX2-1) is associated with an equal range of data between UMIN and UMAX. Each range measures (UMAX-UMIN)/ICIX2-ICIX1 units.

Index ICIX2 represents all data values greater than or equal to UMAX. Index ICIX1 is also used for data less than UMIN.

The default action may be restored by setting UMIN greater than UMAX.

In this release of software, data may be mapped on to colour indices 0 to 95 inclusive.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSUTOC: Colour index I out of range)1

Default

VSUTOC(0.0, -1.0, 0, 0) restores the default.

See Also

VSCRGB and VSCHLS.

Examples

Stacked contour plots from a 3-D matrix
Composite images
A surface and mesh from spherical coordinate data


VSVRTP

This page uses frames, but your browser doesn't support them.


VSVRTP

SUBROUTINE VSVRTP (RADIUS, THETA, PHI)

Purpose

to set the Viewing Position in terms of a radius and 2 angles for a projected picture.

Argument(s)

RADIUS | REAL expression | Distance of the Viewing Position from the Origin
THETA | REAL expression | Horizontal angle
PHI | REAL expression | Vertical angle

Description

VSVRTP sets a Viewing Position for ViSualization in terms of a radius and 2 angles.

RADIUS is the distance between the Viewing Position and the Origin, where the maximum possible distance from the Origin to any point in the Limiting Box is sqrt(3). The Origin and Limiting Box are set by VS3DLM.

RADIUS is interpreted as being positive. A radius of -R is equivalent to a radius of +R.

If the Viewing Position is too close to the Origin, points could be projected to infinity, or be otherwise unplottable. To prevent this happening, if the absolute value of RADIUS <= sqrt(3), a diagnostic is issued at the next call to VSNEW, and no perspective is applied.

THETA is the horizontal angle in degrees between the Viewing Position and the Origin on the x-y plane; PHI is the vertical angle in degrees between this plane and the Line of Sight. By default, THETA=30.0, and PHI=15.0.

THETA = 0.0 along the x-axis (ie. at y=0.0). PHI = 0.0 on the x-y plane (ie. at z=0.0).

The change in Viewing Position does not take effect until the next call of VSNEW. VSVRTP overrides any previous call to VSVXYZ.

Availability

Section 7, released version 2-13.

Default

VSVRTP(0.0, 30.0, 15.0) restores the default.

See Also

VS3DLM, VSINIT, VSNEW and VSVXYZ.

Examples

Varying the viewing position
Setting an appropriate fit type
Stacked contour plots from a 3-D matrix


VSVXYZ

This page uses frames, but your browser doesn't support them.


VSVXYZ

SUBROUTINE VSVXYZ (XVIEW, YVIEW, ZVIEW)

Purpose

to set the Viewing Position for a projected picture in terms of (x,y,z).

Argument(s)

XVIEW | REAL expression | x component of Viewing Position
YVIEW | REAL expression | y component of Viewing Position
ZVIEW | REAL expression | z component of Viewing Position

Description

VSVXYZ sets a Viewing Position for ViSualization in terms of (x,y,z).

XVIEW, YVIEW and ZVIEW are in the underlying three-dimensional coordinates before transformation.

If the Viewing Position is too close to the Origin, points could be projected to infinity, or be otherwise unplottable. To prevent this from happening, the distance from (XVIEW,YVIEW,ZVIEW) to the Origin should be greater than the radius of the Bounding Sphere specified by VS3DLM.

If

  XVIEW2 + YVIEW2 + ZVIEW2 <

    ((XSTOP-XSTART)/2)2 + ((YSTOP-YSTART)/2)2 + ((ZSTOP-ZSTART)/2)2

a diagnostic is issued at the next call to VSNEW, and no perspective is applied.

The change in Viewing Position does not take effect until the next call of VSNEW. VSVXYZ overrides any previous call to VSVRTP.

Availability

Section 7, released version 2-13.

Default

See VSVRTP.

See Also

VS3DLM, VSINIT, VSNEW and VSVRTP.


VSXYZ

This page uses frames, but your browser doesn't support them.


VSXYZ

SUBROUTINE VSXYZ (X2ARR, Y2ARR, Z2ARR, NX, NY)

Purpose

to draw a surface picture from three 2-D arrays in a ViSualization image.

Argument(s)

X2ARR,Y2ARR,Z2ARR | REAL 2-D arrays | NX*NY arrays of user (x,y,z) values
NX,NY | INTEGER expression | Dimensions of 2-D arrays

Description

The quadrilateral data structure held in the x-yz arrays is represented by a surface. Elements are constructed from each of the 4 adjacent elements in the 2-D arrays. The colours representing different z-values are controlled by VSUTOC.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSXYZ: No current ViSualization picture)1
  (VSXYZ: Invalid array dimension)1

See Also

VS3DLM, VSEDGC, VSEDGV, VSUTOC and VSXYZU.

Examples

A surface and mesh from spherical coordinate data


VSXYZU

This page uses frames, but your browser doesn't support them.


VSXYZU

SUBROUTINE VSXYZU (X2ARR, Y2ARR, Z2ARR, U2ARR, NX, NY)

Purpose

to draw contours of data in one 2-D array on a surface picture from three 2-D arrays in a ViSualization image.

Argument(s)

X2ARR,Y2ARR,Z2ARR | REAL 2-D arrays | NX*NY arrays of user (x,y,z) values
U2ARR | REAL 2-D array | NX*NY User data values
NX,NY | INTEGER expression | Dimensions of 2-D arrays

Description

The quadrilateral data structure held in the x-yz arrays is represented by a surface. Contours from the corresponding U2ARR array are drawn on this surface. Elements are constructed from each of the four adjacent elements in the x-yz arrays. The colours representing different u values are controlled by VSUTOC.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSXYZU: No current ViSualization picture)1
  (VSXYZU: Invalid array dimension)1

See Also

VS3DLM, VSEDGC, VSEDGV, VSUTOC and VSXYZ.

Examples

A surface and mesh from spherical coordinate data


VSZ

This page uses frames, but your browser doesn't support them.


VSZ

SUBROUTINE VSZ (XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELS)

Purpose

to draw a surface from 3-D data structured into elements.

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELS | INTEGER expression | Number of elements

Description

VSZ draws a surface representing data structured into elements and held in parallel arrays, XARR[NPTS], YARR[NPTS] and ZARR[NPTS].

Before using VSZ, the element array I2ARR[NNODES][NELS], must be set up. The SIMPLEPLOT-PLUS subroutines ZZORDR or ZZORDN can only be used for this purpose if the surface is such that there is a single function value z for any (x,y), otherwise the user must construct an index array identifying the indices in the x, y and z arrays to each node in each element.

The colours representing different contour levels are controlled by VSUTOC.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSZ: No current ViSualization picture)1
  (VSZ: Invalid array dimension)1

See Also

VSEDGC, VSEDGV, VSUTOC, and VSZU.


VSZU

This page uses frames, but your browser doesn't support them.


VSZU

VSZ

Specifications

WFCHT

SUBROUTINE VSZU (XARR, YARR, ZARR, UARR, NPTS, I2ARR, NNODES, NELS)

Purpose

to draw contours of data in an array on a surface from 3-D data structured into elements.

Argument(s)

X2ARR,Y2ARR,Z2ARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
U2ARR | REAL array | NPTS user data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELS | INTEGER expression | Number of elements

Description

VSZU draws a contour map of the data values in UARR[NPTS], on the surface representing data structured into planar elements and held in parallel arrays XARR[NPTS], YARR[NPTS] and ZARR[NPTS].

Before using VSZU, the element array I2ARR[NNODES][NELS] must have been set up. The SIMPLEPLOT-PLUS subroutines ZZORDR or ZZORDN can be used for this purpose if the surface is such that there is a single function value z for any (x,y). Otherwise, the user must construct an index array identifying the indices in the x, y and z arrays to each node in each element.

The colours representing different contour levels are controlled by VSUTOC.

Availability

Section 7, released version 2-13.

Diagnostics

  (VSZU: No current ViSualization picture)1
  (VSZU: Invalid array dimension)1

See Also

VSEDGC, VSEDGV, VSUTOC and VSZ.

Examples

Ungridded data


WFCHT

This page uses frames, but your browser doesn't support them.


WFCHT

SUBROUTINE WFCHT (Z2ARR, NPTS, NCURVS, CAPN, CAPL)

Purpose

to draw a waterfall chart on the current picture.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NPTS | INTEGER expression | Number of columns in Z2ARR
NCURVS | INTEGER expression | Number of rows in Z2ARR
CAPN | STRING expression | Numeric axis caption
CAPL | STRING expression | Label axis caption

Description

A waterfall chart has a numeric scale for an independent variable and a label scale over which a series of staggered curves are plotted. WFCHT draws a waterfall chart on the current picture of data held in the two-dimensional array, Z2ARR(NPTS,NMAX), where NMAX is greater or equal to NCURVS, the number of curves to be plotted Each curve corresponding to the points Z2ARR(1,n) to Z2ARR(NPTS,n) is offset from the last by an equal step and masked by curves already drawn on the waterfall chart.

NPTS and NCURVS must both be positive INTEGERs; if they are not, a diagnostic is generated and nothing is drawn. A waterfall curve must have between 2 and 1024 points.

WFCHT draws numeric and label axes which can be configured using appropriate AX* subroutines with CHAXIS="NW" and "LW" respectively. Other characteristics of a waterfall chart can be specified using prior calls of WF*.

WFCHT draws a waterfall chart on the current 2-D picture and should therefore be preceded by the new picture subroutine, NEWPIC.

Availability

Section plus, released version 2-13.

Diagnostics

  (Constant data: default z scale used)1
 (Too many points in waterfall curve)1
 (Waterfall chart not all in range)2
 (WATERFALL OMITTED: INVALID DIMENSIONS)1

See Also

WF*.

Examples

A simple waterfall chart
Distinguishing between data levels on a waterfall chart
Conversion on waterfall charts
Waterfall charts and cascade surface pictures
Waterfall charts and pen usage
Controlling the scales on waterfall charts
Fine control of waterfall charts


WFDRAW

This page uses frames, but your browser doesn't support them.


WFDRAW

SUBROUTINE WFDRAW (ZARR, NPTS)

Purpose

to draw a single curve on a waterfall chart.

Argument(s)

ZARR | REAL array | Data values of curve
NPTS | INTEGER expression | Number of points in ZARR

Description

WFDRAW draws a single waterfall curve on the current picture. Each curve corresponding to the points ZARR(1) to ZARR(NPTS) is offset from the last by an equal step, and masked by waterfall curves already drawn.

Different parts of the curves are drawn using different pen pointers so that independent changes to the visibility or appearance of the parts can be achieved through pointer adjustments:

Pointer | Pen usage
{}[1] | Unmasked part of curve with z >= ZLEVEL
{}[2] | Masked part of curve with z >= ZLEVEL
{}[3] | Unmasked part of curve with z < ZLEVEL
{}[4] | Masked part of curve with z < ZLEVEL
The first WFDRAW(NPTS) on a chart sets the number of points for curve on the whole chart. Subsequent curves on the same chart are either short or incomplete if they have different values of NPTS. NPTS must be a positive INTEGER; if it is not, a diagnostic is generated and nothing is drawn. The maximum number of points per waterfall curve is limited to 1024.

WFDRAW draws a waterfall curve on the current 2-D picture therefore the first call to WFDRAW must be preceded by the new picture subroutine, NEWPIC.

Availability

Section plus, released version 2-13.

Diagnostics

  (Constant data: default z scale used)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Too many waterfall curves on picture)1
 (Too many points in waterfall curve)1
 (Waterfall curve not all in range)2

See Also

WFEQL, WFEQN, WFNCVS, WFPNS, WFSTEP, WFZLEV and WFZSCL.

Examples

Drawing individual waterfall curves
Waterfall charts drawn curve-by-curve


WFEQL

This page uses frames, but your browser doesn't support them.


WFEQL

SUBROUTINE WFEQL (CSTART, CSTEP)

Purpose

to specify the equally-spaced values on the label scale of a waterfall chart.

Argument(s)

CSTART | REAL expression | Minimum scale value
CSTEP | REAL expression | Interval between curves

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. Standard SIMPLEPLOT calls may be used to add axes to annotate the chart. By default, the label scale is defined to identify the curves by 1.0, 2.0, 3.0 etc. in the order of drawing.

WFEQL may be called to specify CSTART, the scale value to associate with the beginning of the span of the first curve, and CSTEP, the scale interval between curves.

The label scale defined by WFEQL affects axis annotations, but has no effect on the curves.

WFEQL takes effect at the start of the next waterfall chart.

Availability

Section plus, released version 2-13.

Default

Calling WFEQL with CSTEP=0.0 restores the default.

See Also

AXIS7, WFCHT and WFDRAW.


WFEQN

This page uses frames, but your browser doesn't support them.


WFEQN

SUBROUTINE WFEQN (ESTART, ESTEP)

Purpose

to specify the equally-spaced values on the numeric scale of a waterfall chart.

Argument(s)

ESTART | REAL expression | Value of first data column
ESTEP | REAL expression | Interval between data columns

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves is plotted. By default, curves cover the full range of the numeric scale.

By default, the numeric scale on a waterfall chart is 1.0 to (REAL)NPTS, where NPTS is the number of points in the first curve drawn. WFEQN relates the numeric scale to the data values. WFEQN must be called before a waterfall chart has been started.

After a call to WFEQN, the numeric waterfall axis displays the range of values from ESTART to ESTART+ESTEP*(NPTS-1), where NPTS is specified as an argument to WFCHT/WFDRAW.

Availability

Section plus, released 2-13.

Default

Calling WFEQN with ESTEP=0.0 restores the default.

See Also

WFCHT, WFDRAW, WFEQL and WFNSCL.

Examples

A simple waterfall chart
Conversion on waterfall charts
Fine control of waterfall charts


WFINIT

This page uses frames, but your browser doesn't support them.


WFINIT

SUBROUTINE WFINIT

Purpose

to reset all defaults for waterfall charts.

Argument(s)

None

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. The characteristics of waterfall charts can be controlled by various specification subroutines to change values used when plotting waterfall charts.

WFINIT cancels the effects of calls of all the waterfall specification subroutines, resetting all values to their defaults.

WFINIT has no effect on the axis characteristics of a waterfall chart.

Availability

Section plus, released version 2-13.

See Also

INITSP, WFEQL, WFEQN, WFNCVS, WFPNS, WFSTEP, WFZLEV and WFZSCL.


WFNCVS

This page uses frames, but your browser doesn't support them.


WFNCVS

SUBROUTINE WFNCVS (NCURVS)

Purpose

to specify the number of curves to be accommodated on waterfall charts.

Argument(s)

NCURVS INTEGER expression Total number of waterfall curves

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. The curves drawn on the chart can all be plotted by a single call of WFCHT, or by a succession of calls of WFDRAW.

By default, a waterfall chart drawn by WFCHT is scaled to accommodate the number of curves in the supplied data; if only one waterfall curve is drawn by WFDRAW, the scale accommodates this single curve. WFNCVS specifies an alternative number of curves, NCURVS.

Following a call to WFNCVS, the label scale is calculated to accommodate NCURVS curves for each waterfall chart. In this case, a waterfall chart drawn by WFCHT is scaled to accommodate NCURVS curves and only this number are drawn. Similarly, NCURVS curves can be drawn on the same picture by NCURVS successive calls of WFDRAW.

NCURVS must be a positive INTEGER; if not, the default is restored. The maximum number of curves that can be accommodated on a waterfall chart is 1024.

Availability

Section plus, released version 2-13.

Default

WFNCVS(0) restores the default.

See Also

WFCHT, WFDRAW and WFSTEP.

Examples

Drawing individual waterfall curves
Waterfall charts drawn curve-by-curve


WFNSCL

This page uses frames, but your browser doesn't support them.


WFNSCL

SUBROUTINE WFNSCL (START, STOP)

Purpose

to specify the numeric scale for waterfall charts.

Argument(s)

START | REAL expression | Value at start of numeric scale
STOP | REAL expression | Value at end of numeric scale

Description

By default, the numeric scale on a waterfall chart is 1.0 to (REAL)NPTS, where NPTS is the number of points in the first curve drawn. If WFEQN has been called to relate the plotting scales to the data values, the default numeric scale is ESTART to ESTART + (ESTEP*(NPTS-1)). WFNSCL sets an alternative scale from START to STOP. These new scale limits can extend beyond the default limits or restrict the default limits; also, the direction of the scale can be reversed by making START greater than STOP.

Availability

Section plus, released version 2-13.

Default

Calling WFNSCL with START=STOP restores the default.

See Also

WFEQL and WFEQN.

Examples

Distinguishing between data levels on a waterfall chart
Conversion on waterfall charts
Controlling the scales on waterfall charts


WFPNS

This page uses frames, but your browser doesn't support them.


WFPNS

SUBROUTINE WFPNS (IPEN1, IPEN2, IPEN3, IPEN4)

Purpose

to specify the pens used in waterfall charts.

Argument(s)

IPEN1 | INTEGER expression | Pen associated with [1]
IPEN2 | INTEGER expression | Pen associated with [2]
IPEN3 | INTEGER expression | Pen associated with [3]
IPEN4 | INTEGER expression | Pen associated with [4]

Pointer | Pen usage
{}[1] | Unmasked part of curve with z >= ZLEVEL
{}[2] | Masked part of curve with z >= ZLEVEL
{}[3] | Unmasked part of curve with z < ZLEVEL
{}[4] | Masked part of curve with z < ZLEVEL
IPENi | Pen usage
-1 | plotting is omitted on all devices
0 | drawn in background colour
1, 2, 3 ... | pens/bundles as specified by PENHLS/PENRGB and BUNLPR

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. Different parts of the curves are distinguished by the use of different pen pointers.

IPENi can have values -1, 0, 1, 2, 3, ... etc.

Pointers set by WFPNS are used for waterfall curves independently of pointers set by SETPNS. This allows different defaults, and simultaneous setting of one set of pointers for the waterfall charts for axes.

Availability

Section plus, released version 2-13.

Default

WFPNS(1,-1,1,-1) restores the default.

See Also

AXIS7, BUNLPR, SETPNS, WFCHT and WFDRAW.

Examples

Distinguishing between data levels on a waterfall chart
Waterfall charts and pen usage
Waterfall charts drawn curve-by-curve
Fine control of waterfall charts


WFSTEP

This page uses frames, but your browser doesn't support them.


WFSTEP

SUBROUTINE WFSTEP (ZDISP)

Purpose

to specify the displacement between waterfall curves.

Argument(s)

ZDISP REAL expression Displacement between curves relative to the span of a curve

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. Each curve is scaled to occupy an equal portion of the label scale, and the curves are displaced from each other by an equal step. By default, each curve is displaced from the next by one third of the span of a curve.

WFSTEP specifies an alternative value for ZDISP. Subsequently, label scales are calculated to cover a range dependent on a function of ZDISP, the number of curves being accommodated, and the physical length of the scale.

The value of ZDISP must be greater than -1.0 (the value of ZDISP for which the next curve would be completely obscured); if ZDISP<=-1.0 the default is restored.

Availability

Section plus, released version 2-13.

Default

WFSTEP(-1.0) restores the default.

See Also

WFCHT, WFDRAW and WFNCVS.

Examples

Distinguishing between data levels on a waterfall chart
Waterfall charts and cascade surface pictures
Waterfall charts and pen usage
Waterfall charts drawn curve-by-curve
Controlling the scales on waterfall charts


WFZLEV

This page uses frames, but your browser doesn't support them.


WFZLEV

SUBROUTINE WFZLEV (ZLEVEL)

Purpose

to specify the data value at which waterfall curves can change pens.

Argument(s)

ZLEVEL REAL expression Data value for pen change

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. If pen pointers are used to discriminate between parts of the curves, a switch of pens is made at a particular data value. By default, the switch occurs at 0.0; WFZLEV may be called to specify an alternative value, ZLEVEL, for switching pens.

Availability

Section plus, released version 2-13.

Default

WFZLEV(0.0) restores the default.

See Also

WFCHT, WFDRAW and WFPNS.

Examples

Distinguishing between data levels on a waterfall chart
Fine control of waterfall charts


WFZSCL

This page uses frames, but your browser doesn't support them.


WFZSCL

SUBROUTINE WFZSCL (ZSTART, ZSTOP)

Purpose

to specify the z scales for curves on subsequent waterfall charts.

Argument(s)

ZSTART,ZSTOP REAL expressions Range of z covered

Description

A waterfall chart has a numeric scale for an independent variable, and a label scale over which a series of staggered curves are plotted. Each curve is drawn on a scale covering the same z range.

By default, the z scale extends from the minimum z to the maximum z of the data as it is known at the start of a waterfall chart. This involves all the data when WFCHT is used for the chart, but only the first curve of a chart drawn by WFDRAW. WFZSCL specifies an alternative z scale to be used for all the curves on a waterfall chart. WFZSCL only takes effect when the next waterfall chart is started.

Availability

Section plus, released version 2-13.

Default

Calling WFZSCL with ZSTART=ZSTOP restores the default scaling.

See Also

KSCALE, KWZVAL, WFCHT and WFDRAW.

Examples

Waterfall charts and cascade surface pictures
Fine control of waterfall charts


XCALC

This page uses frames, but your browser doesn't support them.


XCALC

REAL FUNCTION XCALC (X, Y, Z2ARR, NX, NY, XARR)

Purpose

to interpolate z=f(x,y) from 3-D data on an x-specified grid.

Argument(s)

X,Y | REAL expressions | Coordinates of a point
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid

Description

The value of z at (x,y) is evaluated by two-way linear interpolation within the rectangular cell of the grid in which (x,y) is located. If X or Y lie outside the limits of the data, XCALC returns the current no-data value.

SIMPLEPLOT can only interpret data on an x-specified grid if the grid values, xi, are supplied in increasing or decreasing order (ie. x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and the current no-data value is returned.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

NODATA, QNODAT and SFEQY.


XCNTS

This page uses frames, but your browser doesn't support them.


XCNTS

SUBROUTINE XCNTS (Z2ARR, NX, NY, XARR)

Purpose

to draw a contour map from 3-D data on an x-specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid

Description

XCNTS draws a contour map on the current picture representing 3-D data on an x-specified tartan grid. Contours are drawn for equally-spaced z values within the range of data held in Z2ARR. By default, an interval is allocated to give between 5 and 10 contour levels over the range.

The contours drawn by XCNTS use the four pen pointers as follows:

  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set
CTBRKN overrides the bundled line-drawing attributes of pens associated with the four pen pointers.

SIMPLEPLOT can only interpret data on an x-specified grid if the grid values, xi, are supplied in increasing or decreasing order (ie. x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no contours are drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour map not all in range)2
 (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTLABS, CTNUMB, RIDDLE, SFEQY, SFEQZ, SFEQZD, SFLIMS, SFZSCL, SQBRKN, SQPEN, SQZLAB and SQZVAL.


XCONT

This page uses frames, but your browser doesn't support them.


XCONT

SUBROUTINE XCONT (ZLEV, Z2ARR, NX, NY, XARR)

Purpose

to draw a contour curve from 3-D data on an x-specified grid.

Argument(s)

ZLEV | REAL expression | Contour level
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid

Description

XCONT draws [1] a contour curve on the current picture. The contour curve corresponds to z=ZLEV from 3-D data (on an x-specified tartan grid) held in Z2ARR.

SIMPLEPLOT can only interpret data on an x-specified grid if the grid values, xi, are supplied in increasing or decreasing order (ie. x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no contour is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour curve not all in range)2
 (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTHOLD, CTLABS, CTNUMB, QCURVE, RIDDLE and SFEQY.


XCUT

This page uses frames, but your browser doesn't support them.


XCUT

SUBROUTINE XCUT (X1, Y1, X2, Y2, Z2ARR, NX, NY, XARR)

Purpose

to draw a 2-D curve of a surface section from 3-D data on an x-specified grid.

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of two points
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid

Description

If the surface represented by the data in Z2ARR were cut along the straight line from (x1, y1) to (x2, y2), the side view of the section would show as a two-dimensional curve of the variation of the data along that line.

XCUT draws [1] the curve of surface height vs. distance from (x1, y1) on the current picture - suitable scales must be set up before attempting to draw a section.

SIMPLEPLOT can only interpret data on an x-specified grid if the grid values in XARR are supplied in increasing or decreasing order (ie. they are monotonic). If the grid values are not monotonic, a diagnostic is issued and no curve is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface section not all in range)2

See Also

CTBRKN, CTCURV, CTHOLD, QCURVE and SFEQY.


XSCALE

This page uses frames, but your browser doesn't support them.


XSCALE

SUBROUTINE XSCALE (XSTART, XSTOP, IXTYPE)

Purpose

to specify the Cartesian horizontal scale for all 2-D plotting.

Argument(s)

XSTART | REAL expression | Horizontal scale value at left edge
XSTOP | REAL expression | Horizontal scale value at right edge
IXTYPE | INTEGER expression | Type of horizontal scale

IXTYPE | Type of scale
0 | Centimetre
1 | Linear
2 | Logarithmic
3 | Normal probability (%)

Description

By default, the horizontal scale is linear in centimetres starting at zero. XSCALE can be used to specify the horizontal scale of a 2-D picture, leaving the vertical scale unchanged. The scale increases in the conventional direction when xstart<xstop.

XSCALE resets the underlying coordinate system to Cartesian.

The same scale is used for all relevant 2-D pictures until reset.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Range >=100; linear scale used)1
 (Range through 0; linear scale used)1

Default

Calling XSCALE with XSTART=XSTOP, or IXTYPE=0, restores the default (the values of all arguments are otherwise ignored).

See Also

EQSCAL, SCALES and YSCALE.

Examples

Missing data


XSHAD

This page uses frames, but your browser doesn't support them.


XSHAD

SUBROUTINE XSHAD (ZLEV1, ZLEV2, ISHADE, Z2ARR, NX, NY, XARR)

Purpose

to shade the area between two contour levels from 3-D data on an x-specified grid.

Argument(s)

ZLEV1,ZLEV2 | REAL expressions | Contour levels
ISHADE | INTEGER expression | Shading pattern number
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid

Description

XSHAD shades the area between contour levels z=ZLEV1 and ZLEV2 from 3-D data (on an x-specified grid) held in Z2ARR; the area is drawn on the current picture using shading pattern ISHADE. By default, the contours themselves are not drawn (see SHEDGE).

If data values, z, coincide with contour levels, only those equal to zmin are included within the shaded region, ie. zmin<= z < zmax, where zmin=min(ZLEV1,ZLEV2) and zmax=max(ZLEV1,ZLEV2).

SIMPLEPLOT can only interpret data on an x-specified grid if the grid values, xi, are supplied in increasing or decreasing order (ie. x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no contours are drawn.

Availability

Section plus, released version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contour not all in range)2

See Also

CTLABS, CTNUMB, XSHDS, MPTYPE, SFEQY, SFMESH and SHEDGE.

Examples

Contour maps of tartan-gridded data


XSHDS

This page uses frames, but your browser doesn't support them.


XSHDS

SUBROUTINE XSHDS (Z2ARR, NX, NY, XARR)

Purpose

to draw a shaded contour map from 3-D data on an x-specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid

Description

XSHDS draws a shaded contour map on the current picture from 3-D data on a x-specified grid. By default, the contour curves are drawn at equally-spaced z values using an interval chosen to give between 5 and 10 contours levels over the range of data held in Z2ARR; each of the contour intervals is shaded with a sequence of shading patterns; the contours themselves are not drawn (see SHEDGE).

SIMPLEPLOT can only interpret data on an x-specified grid if the grid values, xi, are supplied in increasing or decreasing order (ie. x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no contours are drawn.

Availability

Section plus, released version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contours not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SFEQY, SHEDGE, SHPATT, SQ*, XSHAD and XCNTS.

Examples

Contour maps of tartan-gridded data


XSURF

This page uses frames, but your browser doesn't support them.


XSURF

SUBROUTINE XSURF (Z2ARR, NX, NY, XARR)

Purpose

to start a new picture and draw a surface from 3-D data on an x-specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid

Description

XSURF starts a new picture, and draws a surface of the data in Z2ARR.

In order to draw a surface picture of polar data, z=f(r,theta), specify polar units with COORDS before calling XSURF.

XSURF uses the four pens pointers as follows:

  • [1] z >= 0, on underside of surface.
  • [2] z < 0, on underside of surface.
  • [3] z >= 0, top side of surface.
  • [4] z < 0, on top side of surface.
A shaded surface can be drawn according to a prior call of ISSHAD.

SIMPLEPLOT can only interpret data on an x-specified grid if the grid values, xi, are supplied in increasing or decreasing order (ie. x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no surface is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface not all within picture)2
 (SURFACE OMITTED: CONSTANT DATA)1

See Also

IS*, ISSHAD, RIDDLE, SFEQY, SFEQZ, SFEQZD, SFLIMS, SFMESH and SFZSCL.


XYCALC

This page uses frames, but your browser doesn't support them.


XYCALC

REAL FUNCTION XYCALC (X, Y, Z2ARR, NX, NY, XARR, YARR)

Purpose

to interpolate z=f(x,y) from 3-D data on an x-y specified grid.

Argument(s)

X,Y | REAL expressions | Coordinates of a point
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid
YARR | REAL array | NY y values of the grid

Description

The value of z at (x,y) is evaluated by two-way linear interpolation within the rectangular cell of the grid in which (x,y) is located. If X or Y lie outside the limits of the data, XYCALC returns the current no-data value.

SIMPLEPLOT can only interpret data on an x-y specified grid if the grid values, yi and xi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn, and x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and the current no-data value is returned.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

NODATA and QNODAT.


XYCNTS

This page uses frames, but your browser doesn't support them.


XYCNTS

SUBROUTINE XYCNTS (Z2ARR, NX, NY, XARR, YARR)

Purpose

to draw a contour map from 3-D data on an x-y specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid
YARR | REAL array | NY y values of the grid

Description

XYCNTS draws a contour map on the current picture representing 3-D data on an x-y specified tartan grid. Contours are drawn for equally-spaced z values within the range of data held in Z2ARR. By default, an interval is allocated to give between 5 and 10 contour levels over the range.

The contours drawn by XYCNTS use the four pen pointers as follows:

  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set
CTBRKN overrides the bundled line-drawing attributes of pens associated with the four pen pointers.

SIMPLEPLOT can only interpret data on an x-y specified grid if the grid values, yi and xi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn, and x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no curves are drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour map not all in range)2
 (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTLABS, CTNUMB, RIDDLE, SFEQZ, SFEQZD, SFLIMS, SFZSCL, SQBRKN, SQPEN, SQZLAB and SQZVAL.


XYCONT

This page uses frames, but your browser doesn't support them.


XYCONT

SUBROUTINE XYCONT (ZLEV, Z2ARR, NX, NY, XARR, YARR)

Purpose

to draw a contour curve from 3-D data on an x-y specified grid.

Argument(s)

ZLEV | REAL expression | Contour level
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid
YARR | REAL array | NY y values of the grid

Description

XYCONT draws [1] a contour curve on the current picture. The contour curve corresponds to z=ZLEV from 3-D data (on an x-y specified tartan grid) held in Z2ARR.

SIMPLEPLOT can only interpret data on an x-y specified grid if the grid values, yi and xi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn, and x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no curve is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour curve not all in range)2
 (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTHOLD, CTLABS, CTNUMB, QCURVE and RIDDLE.


XYCUT

This page uses frames, but your browser doesn't support them.


XYCUT

SUBROUTINE XYCUT (X1, Y1, X2, Y2, Z2ARR, NX, NY, XARR, YARR)

Purpose

to draw a 2-D curve of a surface section from 3-D data on an x-y specified grid.

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of two points
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid
YARR | REAL array | NY y values of the grid

Description

If the surface represented by the data in Z2ARR were cut along the straight line (x1, y1) to (x2,y2), the side view of the section would show as a two-dimensional curve of the variation of the data along that line.

XYCUT draws [1] the curve of surface height vs. distance from (x1, y1) on the current picture - suitable scales must be set up before attempting to draw a section.

SIMPLEPLOT can only interpret data on an x-y specified grid if the grid values in XARR and YARR are each supplied in increasing or decreasing order (ie. they are monotonic). If the grid values are not monotonic, a diagnostic is issued and no curve is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface section not all in range)2

See Also

CTBRKN, CTCURV, CTHOLD and QCURVE.


XYSHAD

This page uses frames, but your browser doesn't support them.


XYSHAD

SUBROUTINE XYSHAD (ZLEV1, ZLEV2, ISHADE, Z2ARR, NX, NY, XARR, YARR)

Purpose

to shade the area between two contour levels from 3-D data on an x-y specified grid.

Argument(s)

ZLEV1,ZLEV2 | REAL expressions | Contour levels
ISHADE | INTEGER expression | Shading pattern number
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid
YARR | REAL array | NY y values of the grid

Description

XYSHAD shades the area between contour levels z=ZLEV1 and ZLEV2 from 3-D data (on an x-y specified grid) held in Z2ARR; the area is drawn on the current picture using shading pattern ISHADE. By default, the contours themselves are not drawn (see SHEDGE).

If data values, z, coincide with contour levels, only those equal to zmin are included within the shaded region, ie. zmin<= z < zmax, where zmin=min(ZLEV1,ZLEV2) and zmax=max(ZLEV1,ZLEV2).

SIMPLEPLOT can only interpret data on an x-y specified grid if the grid values, yi and xi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn, and x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no curves are drawn.

Availability

Section plus, released version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contour not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SFMESH, SHEDGE and XYSHDS.


XYSHDS

This page uses frames, but your browser doesn't support them.


XYSHDS

SUBROUTINE XYSHDS (Z2ARR, NX, NY, XARR, YARR)

Purpose

to draw a shaded contour map from 3-D data on an x-y specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid
YARR | REAL array | NY y values of the grid

Description

XYSHDS draws a shaded contour map on the current picture from 3-D data on a x-y specified grid. By default, the contour curves are drawn at equally-spaced z values using an interval chosen to give between 5 and 10 contours levels over the range of data held in Z2ARR; each of the contour intervals is shaded with a sequence of shading patterns; the contours themselves are not drawn (see SHEDGE).

SIMPLEPLOT can only interpret data on an x-y specified grid if the grid values, yi and xi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn, and x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no curves are drawn.

Availability

Section plus, released version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contours not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SHEDGE, SHPATT, SQ*, XYSHAD and XYCNTS.


XYSURF

This page uses frames, but your browser doesn't support them.


XYSURF

SUBROUTINE XYSURF (Z2ARR, NX, NY, XARR, YARR)

Purpose

to start a new picture and draw a surface from 3-D data on an x-y specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
XARR | REAL array | NX x values of the grid
YARR | REAL array | NY y values of the grid

Description

XYSURF starts a new picture, and draws a surface of the data in Z2ARR.

In order to draw a surface picture of polar data, z=f(r,theta), specify polar units with COORDS before calling XYSURF.

XYSURF uses the four pens pointers as follows:

  • [1] z >= 0, on underside of surface.
  • [2] z < 0, on underside of surface.
  • [3] z >= 0, top side of surface.
  • [4] z < 0, on top side of surface.
A shaded surface can be drawn according to a prior call of ISSHAD.

SIMPLEPLOT can only interpret data on an x-y specified grid if the grid values, yi and xi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn, and x1<x2<...<xn or x1>x2>...>xn). If the grid values are not monotonic, a diagnostic is issued and no surface is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface not all within picture)2
 (SURFACE OMITTED: CONSTANT DATA)1

See Also

IS*, ISSHAD, RIDDLE, SFEQZ, SFEQZD, SFLIMS, SFMESH and SFZSCL.


YCALC

This page uses frames, but your browser doesn't support them.


YCALC

REAL FUNCTION YCALC (X, Y, Z2ARR, NX, NY, YARR)

Purpose

to interpolate z=f(x,y) from 3-D data on a y-specified grid.

Argument(s)

X,Y | REAL expressions | Coordinates of a point
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
YARR | REAL array | NY y values of the grid

Description

The value of z at (x,y) is evaluated by two-way linear interpolation within the rectangular cell of the grid in which (x,y) is located. If X or Y lie outside the limits of the data, YCALC returns the current no-data value.

SIMPLEPLOT can only interpret data on a y-specified grid if the grid values, yi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn). If the grid values are not monotonic, a diagnostic is issued and the current no-data value is returned.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

NODATA, QNODAT and SFEQX.


YCNTS

This page uses frames, but your browser doesn't support them.


YCNTS

SUBROUTINE YCNTS (Z2ARR, NX, NY, YARR)

Purpose

to draw a contour map from 3-D data on a y-specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
YARR | REAL array | NY y values of the grid

Description

YCNTS draws a contour map on the current picture representing 3-D data on a y-specified grid. Contours are drawn for equally-spaced z values within the range of data held in Z2ARR. By default, an interval is allocated to give between 5 and 10 contour levels over the range.

The contours drawn by YCNTS use the four pen pointers as follows:

  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set
CTBRKN overrides the bundled line-drawing attributes of pens associated with the four pen pointers.

SIMPLEPLOT can only interpret data on a y-specified grid if the grid values, yi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn). If the grid values are not monotonic, a diagnostic is issued and no contours are drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour map not all in range)2
 (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTLABS, CTNUMB, RIDDLE, SFEQX, SFEQZ, SFEQZD, SFLIMS, SFZSCL, SQBRKN, SQPEN, SQZLAB and SQZVAL.


YCONT

This page uses frames, but your browser doesn't support them.


YCONT

SUBROUTINE YCONT (ZLEV, Z2ARR, NX, NY, YARR)

Purpose

to draw a contour curve from 3-D data on a y-specified grid.

Argument(s)

ZLEV | REAL expression | Contour level
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
YARR | REAL array | NY y values of the grid

Description

YCONT draws [1] a contour curve on the current picture. The contour curve corresponds to z=ZLEV from 3-D data (on a y-specified tartan grid) held in Z2ARR.

SIMPLEPLOT can only interpret data on a y-specified grid if the grid values, yi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn). If the grid values are not monotonic, a diagnostic is issued and no contour is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour curve not all in range)2
 (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTHOLD, CTLABS, CTNUMB, QCURVE, RIDDLE and SFEQX.

Examples

Surface pictures of tartan-gridded data


YCUT

This page uses frames, but your browser doesn't support them.


YCUT

SUBROUTINE YCUT (X1, Y1, X2, Y2, Z2ARR, NX, NY, YARR)

Purpose

to draw a 2-D curve of a surface section from 3-D data on a y-specified grid.

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of two points
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
YARR | REAL array | NY y values of the grid

Description

If the surface represented by the data in Z2ARR were cut along the straight line joining (x1, y1) to (x2, y2), the side view of the section would show as a two-dimensional curve of the variation of the data along that line.

YCUT draws [1] the curve of surface height vs. distance from (x1, y1) on the current picture - suitable scales must be set up before attempting to draw a section.

SIMPLEPLOT can only interpret data on a y-specified grid if the grid values in YARR are supplied in increasing or decreasing order (ie. they are monotonic). If the grid values are not monotonic, a diagnostic is issued and no curve is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface section not all in range)2

See Also

CTBRKN, CTCURV, CTHOLD, QCURVE and SFEQX.


YSCALE

This page uses frames, but your browser doesn't support them.


YSCALE

SUBROUTINE YSCALE (YSTART, YSTOP, IYTYPE)

Purpose

to specify the Cartesian vertical scale for all 2-D plotting.

Argument(s)

YSTART | REAL expression | y scale at bottom edge
YSTOP | REAL expression | y scale value at top edge
IYTYPE | INTEGER expression | Type of vertical scale

IYTYPE | Type of scale
0 | Centimetre
1 | Linear
2 | Logarithmic
3 | Normal probability (%)

Description

By default, the vertical scale is linear in centimetres starting at zero. YSCALE can be used to specify the vertical scale of a 2-D picture, leaving the horizontal scale unchanged. The scale increases in the conventional direction when ystart<ystop.

YSCALE resets the underlying coordinate system to Cartesian.

The same scale is used for all relevant 2-D pictures until reset.

Availability

Section 1, released before version 2-5.

Diagnostics

  (Range >=100; linear scale used)1
 (Range through 0; linear scale used)1

Default

Calling YSCALE with YSTART=YSTOP, or IYTYPE=0, restores the default (the values of all arguments are otherwise ignored).

See Also

EQSCAL, SCALES and XSCALE.

Examples

Curve fitting by regression


YSHAD

This page uses frames, but your browser doesn't support them.


YSHAD

SUBROUTINE YSHAD (ZLEV1, ZLEV2, ISHADE, Z2ARR, NX, NY, YARR)

Purpose

to shade the area between two contour levels from 3-D data on a y-specified grid.

Argument(s)

ZLEV1,ZLEV2 | REAL expressions | Contour levels
ISHADE | INTEGER expression | Shading pattern number
Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
YARR | REAL array | NY y values of the grid

Description

YSHAD shades the area between contour levels z=ZLEV1 and ZLEV2 from 3-D data (on a y-specified grid) held in Z2ARR; the area is drawn on the current picture using shading pattern ISHADE. By default, the contours themselves are not drawn (see SHEDGE).

If data values, z, coincide with contour levels, only those equal to zmin are included within the shaded region, ie. zmin<= z < zmax, where zmin=min(ZLEV1,ZLEV2) and zmax=max(ZLEV1,ZLEV2).

SIMPLEPLOT can only interpret data on a y-specified grid if the grid values, yi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn). If the grid values are not monotonic, a diagnostic is issued and no contours are drawn.

Availability

Section plus, released version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contour not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SFEQX, SFMESH, SHEDGE and YSHDS.


YSHDS

This page uses frames, but your browser doesn't support them.


YSHDS

SUBROUTINE YSHDS (Z2ARR, NX, NY, YARR)

Purpose

to draw a shaded contour map from 3-D data on a y-specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
YARR | REAL array | NY y values of the grid

Description

YSHDS draws a shaded contour map on the current picture from 3-D data on a y-specified grid. By default, the contour curves are drawn at equally-spaced z values using an interval chosen to give between 5 and 10 contours levels over the range of data held in Z2ARR; each of the contour intervals is shaded with a sequence of shading patterns; the contours themselves are not drawn (see SHEDGE).

SIMPLEPLOT can only interpret data on a y-specified grid if the grid values, yi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn). If the grid values are not monotonic, a diagnostic is issued and no contours are drawn.

Availability

Section plus, released version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contours not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SFEQX, SHEDGE, SHPATT, SQ*, YSHAD and YCNTS.


YSURF

This page uses frames, but your browser doesn't support them.


YSURF

SUBROUTINE YSURF (Z2ARR, NX, NY, YARR)

Purpose

to start a new picture and draw a surface from 3-D data on a y-specified grid.

Argument(s)

Z2ARR | REAL 2-D array | Data values over a grid
NX,NY | INTEGER expressions | Number of columns and rows in Z2ARR
YARR | REAL array | NY y values of the grid

Description

YSURF starts a new picture, and draws a surface of the data in ZARR.

In order to draw a surface picture of polar data, z=f(r,theta), specify polar units with COORDS before calling YSURF.

YSURF uses the four pens pointers as follows:

  • [1] z >= 0, on underside of surface.
  • [2] z < 0, on underside of surface.
  • [3] z >= 0, top side of surface.
  • [4] z < 0, on top side of surface.
A shaded surface can be drawn according to a prior call of ISSHAD.

SIMPLEPLOT can only interpret data on a y-specified grid if the grid values, yi, are supplied in increasing or decreasing order (ie. y1<y2<...<yn or y1>y2>...>yn). If the grid values are not monotonic, a diagnostic is issued and no surface is drawn.

Availability

Section 2, released before version 2-5.

Diagnostics

  (DATA GRID NOT MONOTONIC)1
 (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface not all within picture)2
 (SURFACE OMITTED: CONSTANT DATA)1

See Also

IS*, RIDDLE, SFEQX, SFEQZ, SFEQZD, SFLIMS, SFMESH and SFZSCL.

Examples

Surface pictures of tartan-gridded data


ZCALC

This page uses frames, but your browser doesn't support them.


ZCALC

REAL FUNCTION ZCALC (X, Y, XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to interpolate z=f(x,y) from ungridded 3-D data (without neighbours).

Argument(s)

X,Y | REAL expressions | Coordinates of a point
XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

The value of z at (x,y) is interpolated on a plane triangle across 3 data points surrounding (x,y). The data points are selected from the the ungridded 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR.

If NNODES is greater than 3, an extra point in each element is generated by taking the mean of each of the coordinates of the data points of the element, and triangular sub-elements are constructed by joining each of the nodes to this extra point.

If X or Y lies outside the limits of the data, ZCALC returns the current no-data value.

Before using ZCALC, the element array I2ARR(NNODES,NELEMS) must be set up; ZORDER or ZORDEN can be used for this purpose.

ZZCALC is more efficient than ZCALC.

Availability

Section 2, released before version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1

See Also

NODATA, QNODAT, ZORDEN, ZORDER and ZZCALC.


ZCNTS

This page uses frames, but your browser doesn't support them.


ZCNTS

SUBROUTINE ZCNTS (XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to draw a contour map from ungridded 3-D data (without neighbours).

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZCNTS draws a contour map on the current picture representing ungridded 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR. Contours are drawn for equally-spaced z values within the range of data held in ZARR. By default, an interval is allocated to give between 5 and 10 contour levels over the range.

The contours drawn by ZCNTS use the four pen pointers as follows:

  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set
CTBRKN overrides the bundled line-drawing attributes of pens associated with the four pen pointers.

Before using ZCNTS the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

ZZCNTS is more efficient than ZCNTS.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour map not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTLABS, CTNUMB, SFEQZ, SFLIMS, SQBRKN, SQPEN, SQZLAB, SQZVAL, ZORDEN, ZORDER and ZZCNTS.


ZCONT

This page uses frames, but your browser doesn't support them.


ZCONT

SUBROUTINE ZCONT (ZLEV, XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to draw a contour curve from ungridded 3-D data (without neighbours).

Argument(s)

ZLEV | REAL expression | Contour level
XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZCONT draws [1] a contour curve on the current picture. The contour curve corresponds to z=ZLEV from the ungridded 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR.

Before using ZCONT the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

ZZCONT is more efficient than ZCONT.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Contour curve not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTHOLD, CTLABS, CTNUMB, QCURVE, RIDDLE, ZORDEN, ZORDER and ZZCONT.


ZCUT

This page uses frames, but your browser doesn't support them.


ZCUT

SUBROUTINE ZCUT (X1, Y1, X2, Y2, XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to draw a 2-D curve of a surface section from ungridded 3-D data (without neighbours).

Argument(s)

X1,Y1,X2,Y2 | REAL expressions | Coordinates of two points
XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

If the surface represented by the 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR, was cut along the straight line from (x1, y1) to (x2, y2), the side view of the section would show as a two-dimensional curve of the variation of the data along that line.

ZCUT draws [1] the curve of surface height vs. distance from (x1, y1) on the current picture - suitable 2-D scales must be set up before attempting to draw a section.

Before using ZCUT the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

Availability

Section 2, released before version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface section not all in range)2

See Also

CTBRKN, CTCURV, CTHOLD, QCURVE, ZORDEN and ZORDER.


ZEDGE

This page uses frames, but your browser doesn't support them.


ZEDGE

SUBROUTINE ZEDGE (XARR, YARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to draw around the boundary of the data area covered by a set of elements (without neighbours).

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZEDGE searches the (x,y) coordinates held in parallel arrays, XARR and YARR, and draws [1] straight lines between all pairs of nodes which are adjacent in only one element. These straight lines constitute the boundary of the area in which ZCNTS and ZCONT can draw contours with this element structure.

Before using ZEDGE the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

ZZEDGE is more efficient than ZEDGE.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Element boundary not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTHOLD, QCURVE, ZORDEN, ZORDER and ZZEDGE.


ZELEM

This page uses frames, but your browser doesn't support them.


ZELEM

SUBROUTINE ZELEM (JELE, XARR, YARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to draw a single area element.

Argument(s)

JELE | INTEGER expression | Element number to be drawn
XARR,YARR | REAL arrays | (x,y) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZELEM draws [1] the boundary of the JELEth area element on the current 2-D picture.

Before using ZELEM, the element array I2ARR(NNODES,NELEMS) must be set up; ZORDER or ZORDEN can be used for this purpose.

If any part of the element is off the current picture scales, this part is omitted and a diagnostic is issued.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Element not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, ZELEMS, ZNUMB, ZORDEN, ZORDER and ZZELMS.


ZELEMS

This page uses frames, but your browser doesn't support them.


ZELEMS

SUBROUTINE ZELEMS (XARR, YARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to draw the configuration of a set of area elements (without neighbours).

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZELEMS draws [1] the boundaries of all the area elements on the current 2-D picture. The elements represent the 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR.

Before using ZELEMS the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

If any part of the element is off the current picture scales, this part is omitted and a diagnostic is issued.

ZZELMS is more efficient than ZELEMS.

Availability

Section 2, released before version 2-5.

Diagnostics

  (Elements not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTHOLD, QCURVE, ZELEM, ZORDEN, ZORDER and ZZELMS.


ZNEIGH

This page uses frames, but your browser doesn't support them.


ZNEIGH

SUBROUTINE ZNEIGH (I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to set up an array of neighbours from an array of elements.

Argument(s)

I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | To receive element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

Some computations with ungridded data are slow because of the need to search repeatedly through the elements. Considerable savings in searching time are made possible by the introduction of an additional INTEGER array, the array of neighbours, with the same dimensions as the array of elements. ZNEIGH sets up an array of neighbours N2ARR(NNODES,NELEMS) from the array of elements I2ARR(NNODES,NELEMS).

For each subroutine, Z*, operating on ungridded (x,y,z) coordinates, a more efficient ZZ* subroutine is available; each ZZ* subroutine has the array N2ARR in addition to the arguments of the corresponding ZZ* subroutine.

If an array of elements needs to be set up as well as an array of neighbours, ZZORDR (or ZZORDN) is more efficient than using ZORDER (or ZORDEN) and ZNEIGH separately.

Availability

Section 2, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1

See Also

ZZORDN and ZZORDR.


ZNUMB

This page uses frames, but your browser doesn't support them.


ZNUMB

SUBROUTINE ZNUMB (NTORF, ETORF)

Purpose

to specify whether nodes and/or elements are to be numbered.

Argument(s)

NTORF | LOGICAL expression | Whether to number nodes
ETORF | LOGICAL expression | Whether to number elements

Description

ZNUMB modifies the actions of subsequent calls to ZELEM, ZELEMS or ZZELMS - in addition to drawing element boundaries, they will also label each node drawn with the node number (ie. its position in XARR and YARR) if NTORF=.TRUE., and/or label the centre of each element drawn with the element number (ie. its position in the element array) if ETORF=.TRUE..

Availability

Section 2, released before version 2-5.

Default

ZNUMB(.FALSE.,.FALSE.) restores the default.

See Also

LABANG, ZELEM, ZELEMS and ZZELMS.


ZORDEN

This page uses frames, but your browser doesn't support them.


ZORDEN

SUBROUTINE ZORDEN (XARR, YARR, NPTS, I2ARR, NVAR, ISIZE)

Purpose

to reconfigure (x,y) coordinates into triangular area elements using normalized values.

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | To receive data element structure, I2ARR(3,ISIZE)
NVAR | INTEGER variable | To receive number of elements
ISIZE | INTEGER expression | second dimension of I2ARR

Description

ZORDEN organizes a set of (x,y) coordinates, held in parallel arrays XARR and YARR, into a structure of non-overlapping triangular area elements covering the data, in a similar way to ZORDER. Unlike ZORDER, ZORDEN allows for dissimilar orders of magnitude in x and y, by triangulating x and y values normalized over identical ranges; the values in the arrays are not altered.

The number of triangles generated is placed into NVAR. If NVAR reaches ISIZE before the process is complete, triangulation is incomplete - a diagnostic is issued and I2ARR is filled with the partial structure and NVAR=ISIZE.

Availability

Section 2, released version 2-9.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Triangulation data duplicated)1
 (Triangulation incomplete)1
 (Triangulation failed)1
 (Triangulation impossible)1

See Also

ZORDER, ZZORDN and ZZORDR.


ZORDER

This page uses frames, but your browser doesn't support them.


ZORDER

SUBROUTINE ZORDER (XARR, YARR, NPTS, I2ARR, NVAR, ISIZE)

Purpose

to reconfigure (x,y) coordinates into triangular area elements.

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | To receive data element structure, I2ARR(3,ISIZE)
NVAR | INTEGER variable | To receive number of elements
ISIZE | INTEGER expression | second dimension of I2ARR

Description

ZORDER organizes a set of (x,y) coordinates, held in parallel arrays XARR and YARR, into a structure of non-overlapping triangular area elements covering the data; three node numbers (ie. their positions in XARR and YARR) for each triangle are placed in I2ARR.

For example, I2ARR(1,n)=i, I2ARR(2,n)=j, I2ARR(3,n)=k, means that the nth triangle consists of (XARR(i),YARR(i)), (XARR(j),YARR(j)) and (XARR(k),YARR(k)).

The number of triangles generated is placed into NVAR. If NVAR reaches ISIZE before the process is complete, triangulation is incomplete - a diagnostic is issued and I2ARR is filled with the partial structure and NVAR=ISIZE.

Availability

Section 2, released before version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Triangulation data duplicated)1
 (Triangulation incomplete)1
 (Triangulation failed)1
 (Triangulation impossible)1

See Also

ZORDEN, ZZORDN and ZZORDR.


ZSHAD

This page uses frames, but your browser doesn't support them.


ZSHAD

SUBROUTINE ZSHAD (ZLEV1, ZLEV2, ISHADE, XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to shade the area between two contour levels from ungridded 3-D data (without neighbours).

Argument(s)

ZLEV1,ZLEV2 | REAL expressions | Contour levels
ISHADE | INTEGER expression | Shading pattern number
XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZSHAD shades the area between contour levels z=ZLEV1 and ZLEV2 from ungridded 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR. The area is drawn on the current picture using shading pattern ISHADE. By default, the contours themselves are not drawn (see SHEDGE).

If data values, z, coincide with contour levels, only those equal to zmin are included within the shaded region, ie. zmin<= z < zmax, where zmin=min(ZLEV1,ZLEV2) and zmax=max(ZLEV1,ZLEV2).

Before using ZSHAD the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

ZZSHAD is more efficient than ZSHAD.

Availability

Section plus, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contour not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SFMESH, SHEDGE, ZORDEN, ZORDER, ZSHDS and ZZSHAD.


ZSHDS

This page uses frames, but your browser doesn't support them.


ZSHDS

SUBROUTINE ZSHDS (XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to draw a shaded contour map from ungridded 3-D data (without neighbours).

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZSHDS draws a shaded contour map on the current picture from ungridded 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR. By default, the contour curves are drawn at equally-spaced z values using an interval chosen to give between 5 and 10 contours levels over the range of data held in ZARR; each of the contour intervals is shaded with a sequence of shading patterns; the contours themselves are not drawn (see SHEDGE).

Before using ZSHDS the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

ZZSHDS is more efficient than ZSHDS.

Availability

Section plus, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contours not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SHEDGE, SHPATT, SQ*, ZCNTS, ZORDEN, ZORDER, ZSHAD and ZZSHDS.


ZSURF

This page uses frames, but your browser doesn't support them.


ZSURF

SUBROUTINE ZSURF (XARR, YARR, ZARR, NPTS, I2ARR, NNODES, NELEMS)

Purpose

to start a new picture and draw a surface from ungridded 3-D data (without neighbours).

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZSURF starts a new picture, and draws a surface representing the ungridded data (without neighbours) held in parallel arrays, XARR, YARR and ZARR.

In order to draw a surface picture of polar data, z=f(r,theta), specify polar units with COORDS before calling ZSURF.

ZSURF uses the four pens pointers as follows:

  • [1] z >= 0, on underside of surface.
  • [2] z < 0, on underside of surface.
  • [3] z >= 0, top side of surface.
  • [4] z < 0, on top side of surface.
A shaded surface can be drawn according to a prior call of ISSHAD.

Before using ZSURF the element array, I2ARR(NNODES,NELEMS), must be set up; ZORDER or ZORDEN can be used for this purpose.

ZZSURF is more efficient than ZSURF.

Availability

Section 2, released before version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface not all within picture)2
 (SURFACE OMITTED: CONSTANT DATA)1

See Also

IS*, RIDDLE, SFEQZ, SFEQZD, SFLIMS, SFMESH, SFZSCL, ZORDEN, ZORDER and ZZSURF.


ZZCALC

This page uses frames, but your browser doesn't support them.


ZZCALC

REAL FUNCTION ZZCALC (X, Y, XARR, YARR, ZARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to interpolate z=f(x,y) from ungridded 3-D data (with neighbours).

Argument(s)

X,Y | REAL expressions | Coordinates of a point
XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

The value of z at (x,y) is interpolated on a plane triangle across 3 data points surrounding (x,y). The data points are selected from the the ungridded 3-D data (without neighbours) held in parallel arrays, XARR, YARR and ZARR.

If NNODES is greater than 3, an extra point in each element is generated by taking the mean of each of the coordinates of the data points of the element, and triangular sub-elements are constructed by joining each of the nodes to this extra point.

If X or Y lies outside the limits of the data, ZZCALC returns the current no-data value.

Before using ZZCALC the element array, I2ARR(NNODES,NELEMS), and the neighbour array, N2ARR(NNODES,NELEMS), must be set up; ZZORDR or ZZORDN can be used for this purpose.

ZZCALC is more efficient than ZCALC.

Availability

Section 2, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1

See Also

NODATA, QNODAT, ZZORDN and ZZORDR.

Examples

Ungridded Data


ZZCNTS

This page uses frames, but your browser doesn't support them.


ZZCNTS

SUBROUTINE ZZCNTS (XARR, YARR, ZARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to draw contours from ungridded 3-D data (with neighbours).

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZZCNTS draws a contour map on the current picture representing ungridded 3-D data (with neighbours) held in parallel arrays, XARR, YARR and ZARR. Contours are drawn for equally-spaced z values within the range of data held in ZARR. By default, an interval is allocated to give between 5 and 10 contour levels over the range.

The contours drawn by ZZCNTS use the four pen pointers as follows:

  • [1] positive levels except lowest and highest of set
  • [2] highest level when more than one level drawn
  • [3] lowest level of set
  • [4] negative and zero levels except lowest and highest of set

The element data structures specified by I2ARR and N2ARR may be created by ZZORDR or ZZORDN if required.

ZZCNTS is more efficient than ZCNTS.

Availability

Section 2, released version 2-5.

Diagnostics

  (Contour map not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTLABS, CTNUMB, SFEQZ, SFEQZD, SFLIMS, SFZSCL, SQBRKN, SQPEN, SQZLAB, SQZVAL, ZZORDN, ZZORDR and ZZSHDS.

Examples

Contour maps of ungridded data
Extra labelling on contour maps


ZZCONT

This page uses frames, but your browser doesn't support them.


ZZCONT

SUBROUTINE ZZCONT (ZLEV, XARR, YARR, ZARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to draw a contour curve from ungridded 3-D data (with neighbours).

Argument(s)

ZLEV | REAL expression | Contour level
XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZZCONT draws [1] a contour curve on the current picture. The contour curve corresponds to z=ZLEV from the ungridded 3-D data (with neighbours) held in parallel arrays, XARR, YARR and ZARR

Before using ZZCONT the element array, I2ARR(NNODES,NELEMS), and the neighbour array, N2ARR(NNODES,NELEMS), must be set up; ZZORDR or ZZORDN can be used for this purpose.

ZZCONT is more efficient than ZCONT.

Availability

Section 2, released version 2-5.

Diagnostics

  (Contour curve not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTCURV, CTHOLD, CTLABS, CTNUMB, QCURVE, RIDDLE, ZZORDN and ZZORDR.


ZZEDGE

This page uses frames, but your browser doesn't support them.


ZZEDGE

SUBROUTINE ZZEDGE (XARR, YARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to draw around the boundary of the data area covered by a set of elements (with neighbours).

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZZEDGE searches the (x,y) coordinates held in parallel arrays, XARR and YARR, and draws [1] straight lines between all pairs of nodes which are adjacent in only one element. These straight lines constitute the boundary of the area in which ZZCNTS and ZZCONT can draw contours with this element structure.

Before using ZZEDGE the element array, I2ARR(NNODES,NELEMS), and the neighbour array, N2ARR(NNODES,NELEMS), must be set up; ZZORDR or ZZORDN can be used for this purpose.

ZZEDGE is more efficient than ZEDGE.

Availability

Section 2, released version 2-5.

Diagnostics

  (Element boundary not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTHOLD, QCURVE, ZZORDN and ZZORDR.


ZZELMS

This page uses frames, but your browser doesn't support them.


ZZELMS

SUBROUTINE ZZELMS (XARR, YARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to draw the configuration of a set of area elements (with neighbours).

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZZELMS draws [1] the boundaries of all the area elements on the current 2-D picture. The elements represent the 3-D data (with neighbours) held in parallel arrays, XARR, YARR and ZARR.

Before using ZZELMS the element array, I2ARR(NNODES,NELEMS), and the neighbour array, N2ARR(NNODES,NELEMS), must be set up; ZZORDR or ZZORDN can be used for this purpose.

ZZELMS is more efficient than ZELEMS.

Availability

Section 2, released version 2-5.

Diagnostics

  (Elements not all in range)2
 (INVALID ARGUMENT: ARRAY SIZE)1

See Also

CTBRKN, CTHOLD, QCURVE, ZELEM, ZNUMB, ZZORDN and ZZORDR.

Examples

Contour maps of ungridded data


ZZORDN

This page uses frames, but your browser doesn't support them.


ZZORDN

SUBROUTINE ZZORDN (XARR, YARR, NPTS, I2ARR, N2ARR, NVAR, ISIZE)

Purpose

to reconfigure (x,y) coordinates into triangular elements and an array of neighbours (using normalized values).

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values in parallel arrays
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | To receive data element structure, I2ARR(3,ISIZE)
N2ARR | INTEGER 2-D array | To receive neighbour array, N2ARR(3,ISIZE)
NVAR | INTEGER variable | To receive number of elements
ISIZE | INTEGER expression | second dimension of I2ARR and N2ARR

Description

ZZORDN organizes a set of (x,y) coordinates, held in parallel arrays XARR and YARR, into a structure of non-overlapping triangular area elements covering the data. The element numbers of neighbouring elements are placed into N2ARR for use by the ZZ* subroutines.

Unlike ZZORDR, ZZORDN allows for dissimilar orders of magnitude in x and y, by triangulating x and y values normalized over identical ranges.

If NVAR reaches ISIZE before completion, a diagnostic is issued, I2ARR is filled with the partial structure and NVAR=ISIZE.

Availability

Section 2, released version 2-9.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Triangulation data duplicated)1
 (Triangulation incomplete)1
 (Triangulation failed)1
 (Triangulation impossible)1

See Also

ZNEIGH, ZORDEN, ZORDER and ZZORDR.


ZZORDR

This page uses frames, but your browser doesn't support them.


ZZORDR

SUBROUTINE ZZORDR (XARR, YARR, NPTS, I2ARR, N2ARR, NVAR, ISIZE)

Purpose

to reconfigure (x,y) coordinates into triangular elements and an array of neighbours.

Argument(s)

XARR,YARR | REAL arrays | (x,y) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | To receive data element structure, I2ARR(3,ISIZE)
N2ARR | INTEGER 2-D array | To receive neighbour array, N2ARR(3,ISIZE)
NVAR | INTEGER variable | To receive number of elements
ISIZE | INTEGER expression | second dimension of I2ARR and N2ARR

Description

ZZORDR organizes a set of (x,y) coordinates, held in parallel arrays XARR and YARR, into a structure of non-overlapping triangular area elements covering the data. Three node numbers (ie. their positions in XARR and YARR) for each triangle are placed in I2ARR. At the same time, the element numbers of neighbouring elements are placed in N2ARR for use by the ZZ* subroutines.

If NVAR reaches ISIZE before the process is complete, a diagnostic is issued, I2ARR is filled with the partial structure and NVAR=ISIZE.

Availability

Section 2, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Triangulation data duplicated)1
 (Triangulation incomplete)1
 (Triangulation failed)1
 (Triangulation impossible)1

See Also

ZNEIGH, ZORDEN, ZORDER and ZZORDN.

Examples

Surface pictures of ungridded data
Contour maps of ungridded data
Extra labelling on contour maps
Ungridded data


ZZSHAD

This page uses frames, but your browser doesn't support them.


ZZSHAD

SUBROUTINE ZZSHAD (ZLEV1, ZLEV2, ISHADE, XARR, YARR, ZARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to shade the area between two contour levels from ungridded 3-D data (with neighbours).

Argument(s)

ZLEV1,ZLEV2 | REAL expressions | Contour levels
ISHADE | INTEGER expression | Shading pattern number
XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZZSHAD shades the area between contour levels z=ZLEV1 and ZLEV2 from ungridded 3-D data (with neighbours) held in parallel arrays, XARR, YARR and ZARR. The area is filled with shading pattern ISHADE. By default, the contours themselves are not drawn (see SHEDGE).

If data values, z, coincide with contour levels, only those equal to zmin are included within the shaded region, ie. zmin<= z < zmax, where zmin=min(ZLEV1,ZLEV2) and zmax=max(ZLEV1,ZLEV2).

Before using ZZSHAD the element array, I2ARR(NNODES,NELEMS), and the neighbour array, N2ARR(NNODES,NELEMS), must be set up; ZZORDR or ZZORDN can be used for this purpose.

ZZSHAD is more efficient than ZSHAD.

Availability

Section plus, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contour not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SFMESH, SHEDGE, ZZORDN, ZZORDR and ZZSHDS.


ZZSHDS

This page uses frames, but your browser doesn't support them.


ZZSHDS

SUBROUTINE ZZSHDS (XARR, YARR, ZARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to draw a shaded contour map from ungridded 3-D data (with neighbours).

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZZSHDS draws a shaded contour map on the current picture from ungridded 3-D data (with neighbours) held in parallel arrays, XARR, YARR and ZARR. By default, the contour curves are drawn at equally-spaced z values using an interval chosen to give between 5 and 10 contours levels over the range of data held in ZARR; each of the contour intervals is shaded with a sequence of shading patterns; the contours themselves are not drawn (see SHEDGE).

Before using ZZSHDS the element array, I2ARR(NNODES,NELEMS), and the neighbour array, N2ARR(NNODES,NELEMS), must be set up; ZZORDR or ZZORDN can be used for this purpose.

ZZSHDS is more efficient than ZSHDS.

Availability

Section plus, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Shaded contours not all in range)2

See Also

CTLABS, CTNUMB, MPTYPE, SHEDGE, SHPATT, SQ*, ZZCNTS, ZZORDN, ZZORDR and ZZSHAD.


ZZSURF

This page uses frames, but your browser doesn't support them.


ZZSURF

SUBROUTINE ZZSURF (XARR, YARR, ZARR, NPTS, I2ARR, N2ARR, NNODES, NELEMS)

Purpose

to start a new picture and draw a surface from ungridded 3-D data (with neighbours).

Argument(s)

XARR,YARR,ZARR | REAL arrays | (x,y,z) coordinates of data values
NPTS | INTEGER expression | Number of data points
I2ARR | INTEGER 2-D array | Data element structure
N2ARR | INTEGER 2-D array | Element numbers of neighbours
NNODES | INTEGER expression | Number of nodes per element
NELEMS | INTEGER expression | Number of elements

Description

ZZSURF starts a new picture, and draws a surface representing the ungridded data (with neighbours) held in parallel arrays, XARR, YARR and ZARR. In order to draw a surface picture of polar data, z=f(r,theta), specify polar units with COORDS before calling ZZSURF.

ZZSURF uses the four pens pointers as follows:

  • [1] z >= 0, on underside of surface.
  • [2] z < 0, on underside of surface.
  • [3] z >= 0, top side of surface.
  • [4] z < 0, on top side of surface.
A shaded surface can be drawn according to a prior call of ISSHAD.

Before using ZZSURF the element array, I2ARR(NNODES,NELEMS), and the neighbour array, N2ARR(NNODES,NELEMS), must be set up; ZZORDR or ZZORDN can be used for this purpose. ZZSURF is more efficient than ZSURF.

Availability

Section 2, released version 2-5.

Diagnostics

  (INVALID ARGUMENT: ARRAY SIZE)1
 (Surface not all within picture)2
 (SURFACE OMITTED: CONSTANT DATA)1

See Also

IS*, RIDDLE, SFEQZ, SFEQZD, SFLIMS, SFMESH, SFZSCL, ZZORDN and ZZORDR.

Examples

Surface pictures of ungridded data


THEINDEX.HTM

This page uses frames, but your browser doesn't support them.


  • ' (minutes)
    • in strings GGSFMT
  • '' (seconds)
    • in strings GGSFMT
  • 2-D limits QVSCAL
  • 3-D axes VSAXDR
  • 3-D barchart ISBRFL VSBRFL
    • base z value ISBRBZ VSBRBZ
    • colour sequences ISBRFC VSBRFC
    • direction of data ISBRUP VSBRUP
    • inquire height QVBRFL QIBRFL
    • single block VSBLFL
    • single tinted block VSBLTN
    • size of bars ISBRSZ VSBRSZ
    • tinted VSBRTN
  • 3-D limits
    • inquire limits QV3DLM
    • specify limits VS3DLM
  • 3-D pie chart PIE3D
    • angle PIANG
    • height PIHGHT
  • 4-D data
    • add contours to surface VSISU VSRGU VSXYZU VSZU
  • Angle of
    • labels LABANG
    • perspective picture
      • viewing position PVVIEW
    • software shading lines SHANGS
    • surface ISANG
  • Angular scale
    • convention POLZER
    • user-defined POLRNG
  • Array limits
    • array index LIMIDX
    • exclusive LIMEXC
    • inclusive LIMINC
  • Arrows
    • draw ARROW
    • specify
      • shafts ARSHFT
      • size of head ARHEAD
  • Axes
    • individual AXIS7
    • with barchart BARCHT
    • with histogram HSTGRM
    • with new picture
      • polar POLAR7
      • surface picture ISAXES
      • xy axes AXES7
    • with waterfall chart WFCHT
    • xyz on surface picture ISAXD7
  • Axis
    • 3-D VSAXDR
    • annotation
      • at intersection AXLBGP
      • draw set of AXTXT7
      • individual AXLAB AXLAB7
      • justification AXLBJS
      • non-linear AXLBLV
      • omission AXLBGP
      • position AXLBAN
      • style AXLBAN
      • text direction AXLBSL
      • time-date AXLBTP
    • draw
      • 3-D axes VSAXDR
      • complete axis AXIS7
      • individual label AXLAB AXLAB7
      • major subdivision AXMAJ
      • minor subdivision AXMIN
      • set of labels AXTXT7
    • grids
      • broken line AXGRID
      • draw AXGRID
    • intersection AXCRSS
    • location AXLOCN
    • non-linear annotation AXLBLV
    • position AXCRSS AXLOCN
    • range AXRNGE
    • rear plane
      • fill colour ISAXFC VSAXFC
      • grid colour ISAXGC VSAXGC
    • subdivisions
      • base value AXSBDV
      • cancellation AXCLR
      • interval AXSBDV
      • major AXMAJ
      • minor AXMIN
      • offset AXSBDV
      • subinterval AXSUBS
    • tick marks
      • position AXSBMN AXSBTK
      • style AXSBMN AXSBTK
    • time-date
      • alternative labels TIMLDA
      • alternative prefix/suffix TIMLDC
      • annotation AXLBTP
      • separators AXLBSP
      • specify format TIMFMT
  • BUSS Logo BOXPG2
  • Backspace within text string STRLV
  • Bar chart BARCHT
    • 3-D ISBRFL VSBRFL
    • base z value ISBRBZ VSBRBZ
    • colour sequences ISBRFC VSBRFC
    • composite key SHKEYS
    • direction of data ISBRUP VSBRUP
    • draw axes BARCHT
    • individual axis AXIS7
    • inquire height of stacked barchart QVBRFL QIBRFL
    • single block VSBLFL
    • single tinted block VSBLTN
    • size of bars ISBRSZ VSBRSZ
    • specify
      • direction of scales BARDIR
      • justification BARFMT
      • range of scales BARRNG
      • type BARTYP
      • width of bars BARFMT
    • tinted VSBRTN
  • Base z for 3-D barcharts ISBRBZ VSBRBZ
  • Bearing
    • draw line of constant bearing GGBDPT
    • evaluate from VGLLBD
    • used to evaluate VGBDLL
  • Blank line
    • caption area BLNKKY
    • key BLNKKY
    • within text string STRLV
  • Blanked areas
    • reset INITBL
  • Block
    • draw a 3-D block VSBLFL
    • draw a tinted 3-D block VSBLTN
  • Boundary
    • draw perimeter GGPERI
  • Box
    • boundary
      • caption areas BOXCAP
      • current picture only PERIM
      • groups of pictures BOXGRP
      • keys BOXKY
      • pages BOXPAG BOXPG2
      • perspective picture PVBOX
      • picture BOXPIC
      • pie chart labels PIBOXL
    • rectangle
      • broken line BRKNBX
      • shaded SHDEBX
      • solid line DRAWBX
  • Break a line GGBRK
  • Broken line
    • axis grids AXGRID
    • box BRKNBX
    • circle BRKNCL
    • contours CTBRKN
    • curve through data
      • set of coordinates BRKNCV
      • single data set BRKNAR
    • draw to point BRKNPT
    • function BRKNFN
    • hardware/software LINSET
    • key entry
      • line pattern only LINEK7
      • with symbol BOTHK7 BOTHKY
    • parametric function BRKNPR
    • pattern GGBRKN
    • sequence for contours SQBRKN
    • thickness THCKMG
  • Buffer flushing OUTBUF
  • Bundles BUNLPR
  • Caption area
    • boundary box BOXCAP
    • define DEFCAP
    • entry
      • blank BLNKKY
      • by row and column PUTCP7
      • in next space ADDCP7
      • justification ADDJST
    • inquire required size QKYCAP
    • reserve DEFCAP
    • reuse ADDTOP
    • user-defined position DEFPOS
  • Central meridian GGCENT
  • Centre of projection GGCENT
  • Channel
    • specify input/output value IOCHAN
  • Characters
    • adjustable CHDESC
    • alternative fonts CHSET
    • aspect ratio TEXTAR
    • magnify TEXTMG
    • masked CHMASK
    • minimum width TEXTMN
    • slant (hardware only) TEXTSL
    • underlined CHUNDL
    • width TEXTSZ
  • Circle GGCIRC
    • broken line BRKNCL
    • circular plotting region GGRGCL
    • shaded area SHDECL
    • solid line DRAWCL
  • Clear graphics screen SCLEAR
  • Clipping region GGCLIP
  • Clipping strategy CLIPLV
  • Close
    • SIMPLEPLOT ENDPLT
  • Close device ENDPLT
  • Clustered bar chart BARTYP
  • Coastlines
    • draw coastlines GGMAP
  • Coefficients
    • polynomial input POLIN
    • regression output POLOUT
  • Colour
    • according to data values VSUTOC
    • bundles BUNLPR
    • edge of filled areas VSEDGC
    • grids ISAXGC VSAXGC
    • lines VSLINC
    • pen pointers SETPNS
    • polygons VSFILC
    • polymarkers VSPMC
    • rear plane ISAXFC VSAXFC
    • reset palette PENRST
    • sequences
      • interpolation method VSCIM
    • sequences on barchart ISBRFC VSBRFC
    • shading patterns
      • monochrome SHPEN
      • number to use SHCOLS
    • specify
      • colour separation ONEPEN
      • single pen usage PEN
    • specify palette
      • HLS PENHLS VSCHLS
      • RGB PENRGB VSCRGB
      • range VSCRNG
  • Comparable xyz scales
    • proportional lengths VSFITP
    • similar units VSFIT
  • Compass labels
    • alternative compass labels GGSLDA
  • Constant bearing
    • draw line of constant bearing GGBDPT
    • evaluate from VGLLBD
    • used to evaluate VGBDLL
  • Contour curve
    • function of 2 variables FNCONT
    • gridded data
      • regular RGCONT
      • specified x XCONT
      • specified x-y XYCONT
      • specified y YCONT
    • specify
      • broken line pattern CTBRKN
      • curve type CTCURV
      • fineness of mesh SFMESH
      • labels CTLABS CTNUMB
    • store coordinates CTHOLD
    • ungridded data
      • with neighbours ZZCONT
      • without neighbours ZCONT
  • Contour map
    • function of 2 variables FNCNTS
    • gridded data
      • regular RGCNTS
      • specified x XCNTS
      • specified x-y XYCNTS
      • specified y YCNTS
    • sequence of
      • broken line patterns SQBRKN
      • labels SQZLAB
      • levels SQZVAL
      • pens SQPEN
    • specify
      • broken line pattern CTBRKN
      • contour levels SFEQZ
      • curve type CTCURV
      • discrete contour levels SFEQZD
      • fineness of mesh SFMESH
      • labels CTLABS CTNUMB
      • z range SFLIMS
      • z scale SFZSCL
    • ungridded data
      • with neighbours ZZCNTS
      • without neighbours ZCNTS
    • values
      • inquire QSFLAB
      • label picture SFLAB
  • Contours KGLLRG
    • add to surface VSISU VSRGU VSXYZU VSZU
    • region covered GGEQLL
  • Contours on perspective pictures PVCONT
  • Convert
    • KGLLXY
    • INTEGER to text string KNUMB
    • REAL to text string KREAL
    • coordinates
      • device KXYXY
      • page KXYXY
      • perspective KPVXY
      • surface KISXY
      • user KXYXY
    • latitude
      • alternative compass labels GGSLDA
      • string format GGSFMT
      • to string KGLAT
    • longitude
      • alternative compass labels GGSLDA
      • string format GGSFMT
      • to string KGLONG
    • positions KPOSXY
    • scale limits KSCALE
    • time-date
      • to REAL KTREAL
      • to text KTSTR
      • to triple KTTRI
    • to contour grid KGLLRG
    • ungridded data
      • with neighbours KZZRG
      • without neighbours KZRG
    • waterfall z value KWZVAL
  • Coordinates
    • Cartesian COORDS
    • convert from KGLLXY
    • convert from xy to KGXYLL
    • input GETXY
    • polar COORDS POLAR7
  • Cross section
    • broken line pattern CTBRKN
    • function of 2 variables FNCUT
    • gridded data
      • regular RGCUT
      • specified x XCUT
      • specified x-y XYCUT
      • specified y YCUT
    • store coordinates CTHOLD
    • ungridded data ZCUT
  • Cumulative histogram HSTCUM HSTTYP
  • Curve through data
    • set of coordinates
      • broken line BRKNCV
      • marker symbols MARKCV
      • shaded area SHDECV
      • solid line DRAWCV
    • single data set
      • broken line BRKNAR
      • marker symbols MARKAR
      • shaded area SHDEAR
      • solid line DRAWAR
    • specify
      • curve type CVTYPE
      • regression CVTYPE
      • shading limits SHTYPE
    • with label LABCV7
  • Curve type
    • contours CTCURV
    • curves through data CVTYPE
    • surface picture ISCURV
  • Data
    • from device driver DDDATA
    • specified by colour VSUTOC
  • Defaults
    • 3-D VSINIT
    • all INITSP
    • blanked areas INITBL
    • maps GGINIT
    • raster image VSINIT
    • waterfall WFINIT
  • Depth
    • inquire limits QVDPLM
    • of single xyzcoord KVXYD
  • Descriptive position, user-defined DEFPOS
  • Device
    • specify
      • by name DEVNAM
      • by number DEVNO
  • Device driver
    • pass on data DDDATA
  • Diagnostic
    • device driver DIAGDD
    • inquire status QSTAT
    • level DIAGLV
    • user-defined message DIAGOP
  • Direction of barchart data ISBRUP VSBRUP
  • Distance
    • draw line of shortest distance GGLLPT
  • Edge of filled areas
    • colour VSEDGC
    • visibility VSEDGV
  • Edge of ungridded data
    • broken line pattern CTBRKN
    • store coordinates CTHOLD
    • with neighbours ZZEDGE
    • without neighbours ZEDGE
  • Edged Polygon VSPGFE
  • Edged polygon VSPGTE
  • Edges
    • grids VSEDGI
  • Elements
    • draw surface VSZ
    • quadrilateral
      • draw surface VSXYZ
      • draw surface with added contours VSXYZU
  • Elements of ungridded data
    • broken line pattern CTBRKN
    • configuration
      • with neighbours ZZELMS
      • without neighbours ZELEMS
    • individual ZELEM
    • store coordinates CTHOLD
  • Equally spaced x scale VSEQX
  • Equally spaced y scale VSEQY
  • Equally spaced z scale VSEQZ
  • Error diffusion VSCHLS VSCRGB VSCRNG
  • Error status, inquire QSTAT
  • Evaluate
    • VGBDLL
    • bearing and distance from VGLLBD
    • shortest distance between two points VGLLSD
  • Explode pie chart segments
    • composite PIEXPL
    • individual SGEXPL
  • Fast area-fill
    • inquire character size QFFSIZ
    • key entry FILLK7
    • specify
      • method used MPTYPE
      • size of characters FFSIZE
      • software/hardware FFSET
  • Fill colour VSFILC
    • rear plane ISAXFC VSAXFC
  • Fill the available picture VSFULL
  • Filled edged Polygon VSPGFE
  • Filled polygon VSPGFL
  • Flush graphics buffer OUTBUF
  • Font selection
    • hardware/software CHSET
    • within text string STRLV
  • Format
    • REAL signs FIGSGN
    • REAL values FIGFMT
    • time-date
      • alternative labels TIMLDA
      • alternative prefix/suffix TIMLDC
      • axis labels TIMFMT
  • Format of strings GGSFMT
  • Frequency calculation for histograms HSTCLC
  • Function of 1 variable
    • broken line BRKNFN
    • shaded area SHDEFN
    • solid line DRAWFN
    • specify range of variable FNRNGE
  • Function of 2 variables
    • contour curve FNCONT
    • contour map FNCNTS
    • cross section FNCUT
    • inquire function range LIMSFN
    • shaded contour map FNSHDS
    • shaded contour range FNSHAD
    • surface picture FNSURF
    • variable ranges FNAREA
  • Gamma correction VSCIM
  • Graphics device
    • close ENDPLT
    • flush buffer OUTBUF
    • input coordinates GETXY
    • inquire
      • maximum page size QPAGE
      • name/number QDEV
      • number of pixels QPIXLS
    • specify
      • by name DEVNAM
      • by number DEVNO
  • Graticule
    • draw graticule GGGRAT
    • interval GGGRDV
  • Great circle
    • draw line of shortest distance GGLLPT
    • evaluate shortest distance between two points VGLLSD
  • Grey-scale
    • light-sourcing VSCGS
  • Grid
    • convert contour data KGLLRG
    • draw graticule GGGRAT
    • graticule interval GGGRDV
  • Grid lines AXGRID
  • Gridded data
    • convert ungridded data
      • with neighbours KZZRG
      • without neighbours KZRG
    • regular
      • contour curve RGCONT
      • contour map RGCNTS
      • cross section RGCUT
      • interpolation RGCALC
      • shaded contour map RGSHDS
      • shaded contour range RGSHAD
      • surface picture RGSURF
    • specified x
      • contour curve XCONT
      • contour map XCNTS
      • cross section XCUT
      • interpolation XCALC
      • shaded contour map XSHDS
      • shaded contour range XSHAD
      • surface picture XSURF
    • specified x-y
      • contour curve XYCONT
      • contour map XYCNTS
      • cross section XYCUT
      • interpolation XYCALC
      • shaded contour map XYSHDS
      • shaded contour range XYSHAD
      • surface picture XYSURF
    • specified y
      • contour curve YCONT
      • contour map YCNTS
      • cross section YCUT
      • interpolation YCALC
      • shaded contour map YSHDS
      • shaded contour range YSHAD
      • surface picture YSURF
  • Grids
    • offsets and intervals VSEDGI
  • Groups of pictures
    • boundary box BOXGRP
    • define formation GROUP
  • HLS (Hue Light Saturation)
    • set palette PENHLS VSCHLS
  • Hardware/software
    • broken line patterns LINSET
    • character sets CHSET
    • fast area-fill FFSET
    • marker symbols MKSET
    • shading patterns SHSET
  • Height
    • set origin GGHGHT
  • Hershey
    • characters CHSET
  • Histogram
    • cumulative HSTTYP
    • draw from frequencies
      • cumulative HSTCUM
      • standard HSTPLT
    • draw with axes from raw data HSTGRM
    • frequency calculation HSTCLC
    • inverse HSTTYP
    • specify
      • direction of range HSTRNG
      • direction of scales HSTDIR
      • shading pattern HSTSHD
      • type HSTTYP
  • Horizontal
    • bar chart BARTYP
    • centred label CP7XC
    • key MPK7H VSK7H
    • scale SCALES XSCALE
  • INTEGER
    • convert to text string KNUMB
  • Initialize
    • raster image VSNEW
  • Initialize defaults
    • 3-D VSINIT
    • all INITSP
    • blanked areas INITBL
    • maps GGINIT
    • raster image VSINIT
    • waterfall WFINIT
  • Input
    • graphical GETXY
    • non-graphical OWNIO
    • polynomial coefficients POLIN
    • specify filename OWNFIL
  • Input/Output channel
    • specify value IOCHAN
  • Inquire
    • 2-D limits QVSCAL
    • 3-D limits QV3DLM
    • SIMPLEPLOT version QSPLOT
    • contour levels QSFLAB
    • curve coordinates QCURVE
    • depth limits QVDPLM
    • device name/number QDEV
    • error status QSTAT
    • height of stacked barchart QVBRFL QIBRFL
    • limits of 3-D function LIMSFN
    • map scale limits QGSCAL
    • no-data value QNODAT
    • number of pixels QPIXLS
    • perspective data levels QPVLEV
    • size of
      • current picture QPIC
      • fast area-fill characters QFFSIZ
      • key/caption area QKYCAP
      • maximum page QPAGE
      • text string QSTR7
    • waterfall z scale QWZSCL
  • Interpolation method
    • colour sequences VSCIM
  • Interpolation, z=f(x,y)
    • gridded data
      • regular RGCALC
      • specified x XCALC
      • specified x-y XYCALC
      • specified y YCALC
    • ungridded data
      • with neighbours ZZCALC
      • without neighbours ZCALC
  • Interval
    • graticule GGGRDV
  • IsoSurface
    • from regular grid VSIS
  • Justification
    • axis annotation AXLBJS
    • bars BARFMT
    • caption/key entries ADDJST
    • labels drawn at point LABJST
    • user-defined position DEFPOS
  • Key
    • 3-D
      • distinct data values VSKEYS
      • horizontal VSK7H
      • vertical VSK7V
    • to shaded contour map
      • horizontal MPK7H
      • vertical MPK7V
    • to shading patterns SHKEYS
  • Key area
    • boundary box BOXKY
    • define DEFKEY
    • inquire required size QKYCAP
    • reserve DEFKEY
    • reuse ADDTOP
    • sample width DEFKYW
    • user-defined position DEFPOS
  • Key entry
    • blank BLNKKY
    • broken line + symbol BOTHK7 BOTHKY
    • broken line pattern LINEK7
    • fast area-fill FILLK7
    • marker symbol MARKK7
    • shading pattern SHDEK7
  • Label
    • alternative compass labels GGSLDA
    • axis annotation AXLAB
    • contour curves
      • frequency CTLABS
      • sequence SQZLAB
      • specify CTNUMB
    • drawn at point
      • angle of text LABANG
      • centred horizontally CP7XC
      • centred vertically CP7YC
      • justification LABJST
      • text only CP7LB
    • title TITLE7
    • with marker symbol CP7PT
      • justified CP7LBM
  • Labelled curve
    • draw LABCV7
    • justification CVLBJS
    • position of label CVLBPS
  • Landscape page PAGVW
  • Latitude
    • draw graticule GGGRAT
    • graticule interval GGGRDV
    • string KGLAT
      • alternative compass labels GGSLDA
      • format GGSFMT
  • Layout
    • distribution of margins MARGDV
    • fixed picture device
      • WYSIWYG FITPAG
      • orientation PAGVW
    • full page PGFULL
    • group of pictures GROUP
    • length of paper PAPINC
    • picture size PICSIZ
    • size of
      • individual margins PICMRG
      • individual peripheries PAGMRG
      • overall margin MARGIN
      • overall periphery PERIPH
      • page PAGE
    • start page NEWPAG
    • start picture NEWPIC
    • superimposed pictures MOVEON
    • terminate page ENDPAG
    • terminate picture ENDPIC
    • user-defined position of
      • page PAGPOS
      • picture PICPOS
  • Lift pen BREAK GGBRK
  • Light-sourcing
    • direction
      • (Theta,Phi) VSLSLD
    • grey-scale VSCGS
  • Lighting-sourcing
    • shading method VSLSSM
  • Limiting Box
    • colour VSLINC
    • draw around picture VSLBOX
    • inquire scales QV3DLM
    • specify scales VS3DLM
  • Limits
    • 3-D function range LIMSFN
    • data range
      • array index LIMIDX
      • exclusive LIMEXC
      • inclusive LIMINC
    • inquire map scale limits QGSCAL
  • Line
    • break a line BREAK GGBRK
    • broken line BRKNPT
    • broken line pattern GGBRKN
    • colour VSLINC
    • draw line of constant bearing GGBDPT
    • draw line of shortest distance GGLLPT
    • solid line JOINPT
  • Line plots DRAWLN
  • Line spacing TEXTLF
  • Linear regression
    • coefficients POLOUT
    • curve through data CVTYPE
  • Logarithmic scales SCALES
  • Logo
    • on boundary BOXPG2
  • Longitude
    • draw graticule GGGRAT
    • graticule interval GGGRDV
    • string KGLONG
      • alternative compass labels GGSLDA
      • format GGSFMT
  • Loxodrome
    • draw line of constant bearing GGBDPT
    • evaluate bearing and distance VGLLBD
    • evaluate end point VGBDLL
  • Magnification VSMAG
    • line thickness THCKMG
    • text TEXTMG
  • Map
    • draw map GGMAP
  • Map projection
    • select projection GGPROJ
    • set central meridian GGCENT
    • set centre of projection GGCENT
    • set origin GGHGHT
    • set standard parallel GGPARL
  • Margin
    • page (periphery)
      • individual PAGMRG
      • overall PERIPH
    • picture
      • distribution MARGDV
      • individual PICMRG
      • overall size MARGIN
  • Marker symbol VSPMDR
    • clipping strategy CLIPLV
    • colour index VSPMC
    • draw set MARKAR MARKCV
    • drawn at point
      • symbol only MARKPT
      • with text label CP7LBM CP7PT
    • key entry
      • symbol only MARKK7
      • with broken line pattern BOTHK7 BOTHKY
    • masked MKMASK
    • size MKSIZE VSPMMG
    • software/hardware MKSET
    • thickness THCKMG
  • Mask
    • cancel masked areas INITBL
    • characters CHMASK
    • marker symbols MKMASK
  • Maximum/minimum of array
    • array index LIMIDX
    • exclusive LIMEXC
    • inclusive LIMINC
  • Meridian
    • draw graticule GGGRAT
    • graticule interval GGGRDV
    • set central meridian GGCENT
  • Metafile
    • output
      • comment line MTCOMM
      • omit page MTMISS
      • start MTFILE
    • redraw complete file REDRAW
    • redraw line-by-line
      • draw MTDRAW
      • start MTOPEN
      • terminate MTCLOS
    • without device output MTONLY
  • Moveable position DEFPOS
  • Neighbours, ungridded data ZNEIGH
  • New page
    • boundary box BOXPAG BOXPG2
    • with new picture NEWPIC
    • without picture NEWPAG
  • New picture GGNEW
    • 3-D VSNEW
    • boundary box BOXPIC
    • device control OWNNEW
    • empty surface picture ISNEW
    • perspective picture PVDRAW
    • polar POLAR7
    • surface picture
      • regular gridded data RGSURF
      • ungridded data ZSURF ZZSURF
      • x specified data XSURF
      • x-y specified data XYSURF
      • y specified data YSURF
    • with xy axes AXES7
    • without axes NEWPIC
  • No-data value
    • inquire QNODAT
    • specify NODATA
  • Normal probability scales SCALES
  • Omit pie chart segments
    • composite PIOMIT
    • individual SGOMIT
  • Origin GGHGHT
  • Output
    • non-graphical OWNIO
    • polynomial coefficients POLOUT
    • preview FITPAG
    • raster image VSOUT
    • reduce polylines RIDDLE
    • specify filename OWNFIL
  • Output channel
    • specify value IOCHAN
  • Page
    • boundary box BOXPAG BOXPG2
    • fixed picture device
      • layout FITPAG
      • orientation PAGVW
    • peripheral margins
      • individual PAGMRG
      • overall PERIPH
    • size of
      • inquire QPAGE
      • specify PAGE
    • start NEWPAG
    • termination ENDPAG
    • user-defined position PAGPOS
  • Palette
    • grey-scale VSCGS
    • reset PENRST
    • specify by HLS PENHLS VSCHLS
    • specify by RGB PENRGB VSCRGB
    • specify by colour range VSCRNG
  • Parallel
    • draw graticule GGGRAT
    • graticule interval GGGRDV
    • set standard parallel GGPARL
  • Parametric function
    • broken line BRKNPR
    • shaded area SHDEPR
    • solid line DRAWPR
  • Pen pointers SETPNS
  • Pen selection
    • bundles BUNLPR
    • monochrome shading SHPEN
    • pen pointers SETPNS
    • sequence SQPEN
    • single PEN
    • within text string STRLV
  • Perimeter
    • draw perimeter GGPERI
  • Periphery
    • individual sizes PAGMRG
    • minimize PGFULL
    • overall size PERIPH
  • Perspective VSVRTP VSVXYZ
  • Perspective pictures
    • convert coordinates KPVXY
    • draw PVDRAW
    • inquire data levels QPVLEV
    • specify
      • boxes round data PVBOX
      • change of data set PVNEW
      • contours on planes PVCONT
      • number of slices PVLINS
      • scales PVSCAL
      • single data level PVLEV
      • size of masking array PVMESH
      • to fill space PVFULL
      • two data levels PVLEVS
      • viewing position PVVIEW
      • x range PVXLIM
      • y range PVYLIM
      • z range PVZLIM
  • Phi ( VSLSLD VSVRTP
  • Picture
    • boundary box BOXPIC
    • boxed individually PERIM
    • group layout GROUP
    • margins
      • distribution MARGDV
      • individual PICMRG
      • overall size MARGIN
    • restore picture PICRST
    • save picture PICSAV
    • size
      • inquire QPIC
      • specify PICSIZ
    • start without axes NEWPIC
    • superimposed MOVEON
    • termination ENDPIC
    • user-defined position PICPOS
  • Pie chart PIE3D
    • angle PIANG
    • boxed labels PIBOXL
    • composite key SHKEYS
    • contents of labels PIINCL
    • diameter PIDIAM
    • draw PIECHT
    • explode segments PIEXPL SGEXPL
    • height PIHGHT
    • omit segments PIOMIT SGOMIT
    • position of labels PIPOSL
    • tilted PITILT
  • Pixels, inquire number of QPIXLS
  • Plotting region GGREGN
  • Polar plot
    • angular convention POLZER
    • degrees COORDS
    • individual axis AXIS7
    • new picture and axes POLAR7
    • partial plots EQSCAL
    • radians COORDS
    • user-defined scale POLRNG
  • Political boundaries
    • draw political boundaries GGMAP
  • Polygon
    • draw filled edged polygon VSPGFE
    • draw filled polygon VSPGFL
    • draw tinted edged polygon VSPGTE
    • draw tinted polygon VSPGTN
    • edge colour VSEDGC
    • edge visibility VSEDGV
    • fill colour VSFILC
  • Polyline VSPLDR
    • colour VSLINC
    • draw tinted polyline VSPLTN
  • Polymarker VSPMDR
    • colour index VSPMC
    • size VSPMMG
  • Polynomial
    • FUNCTION POLY
    • coefficients
      • input POLIN
      • output POLOUT
  • Portrait page PAGVW
  • Preview FITPAG
  • Projection
    • select projection GGPROJ
    • set central meridian GGCENT
    • set centre of projection GGCENT
    • set origin GGHGHT
    • set standard parallel GGPARL
  • Proportional length scales VSFITP
  • Pyramid bar chart BARTYP
  • Quadratic regression
    • coefficients POLOUT
    • curve through data CVTYPE
  • Quadrilateral elements
    • draw surface VSXYZ
  • REAL
    • convert to text string KREAL
    • sign format FIGSGN
    • value format FIGFMT
  • RGB (Red Green Blue)
    • set palette PENRGB VSCRGB
  • Radius, Theta, Phi
    • specify Viewing Position VSVRTP
  • Range bars RANGE
  • Range of colours
    • set palette VSCRNG
  • Raster image
    • initialize image VSNEW
    • output image VSOUT
  • Rear plane
    • fill colour ISAXFC VSAXFC
    • grid colour ISAXGC VSAXGC
  • Rectangle
    • broken line BRKNBX
    • shaded area SHDEBX
    • solid line DRAWBX
  • Redraw metafile
    • complete file REDRAW
    • line-by-line MTDRAW
  • Reduce polylines RIDDLE
  • Region
    • clip against rectangle GGCLIP
    • for contours GGEQLL
    • select plotting region GGREGN
  • Regression
    • coefficients POLOUT
    • curve through data CVTYPE
  • Regular grid
    • convert contour data KGLLRG
    • draw surface VSIS VSRG
    • equally spaced x scales VSEQX
    • equally spaced y scales VSEQY
    • equally spaced z scales VSEQZ
  • Reserved areas
    • cancel RESCLR
    • define
      • captions DEFCAP
      • keys DEFKEY
    • specify which area is used RESNXT
  • Reset
    • initialize defaults GGINIT
  • Reset all defaults INITSP
  • Reset blanked areas INITBL
  • Restore picture PICRST
  • Reuse of caption areas/keys ADDTOP
  • Rotation VSROT
  • SIMPLEPLOT
    • close ENDPLT
    • inquire version QSPLOT
    • reset all defaults INITSP
  • Save picture PICSAV
  • Scales
    • 2-D limits QVSCAL
    • Cartesian
      • x and y scales SCALES
      • x scale XSCALE
      • y scale YSCALE
    • angular
      • convention POLZER
      • user-defined POLRNG
    • bar chart
      • direction BARDIR
      • range BARRNG
    • comparable xyz scales
      • proportional lengths VSFITP
      • similar units VSFIT
    • convert limits KSCALE
    • equally spaced x scale VSEQX
    • equally spaced y scale VSEQY
    • equally spaced z scale VSEQZ
    • fill the available picture VSFULL
    • histogram
      • direction HSTDIR
      • range HSTRNG
    • inquire 3-D limits QV3DLM
    • inquire map scale limits QGSCAL
    • non-linear SCALES
    • perspective pictures PVSCAL
    • polar EQSCAL
    • restore scale PICRST
    • save scale PICSAV
    • set scales VSNEW
    • similar linear x-y EQSCAL
    • specify 3-D limits VS3DLM
    • z scale SFZSCL
  • Screen clear SCLEAR
  • Segment of pie chart
    • explode
      • composite PIEXPL
      • individual SGEXPL
    • omit
      • composite PIOMIT
      • individual SGOMIT
  • Sequence of
    • broken line patterns SQBRKN
    • contour labels SQZLAB
    • contour levels SQZVAL
    • pens SQPEN
    • shading patterns SQSHAD
  • Shaded area
    • between 2 curves
      • function values SHDEA2
      • set of coordinates SHDEC2
    • box SHDEBX
    • circle SHDECL
    • curve through data
      • set of coordinates SHDECV
      • single data set SHDEAR
    • function of 1 variable SHDEFN
    • parametric function SHDEPR
    • specify
      • boundary drawn SHEDGE
      • type of area SHTYPE
    • user-defined
      • start SHSTRT
      • terminate SHSTOP
  • Shaded contour map
    • draw contour curves SHEDGE
    • function of 2 variables FNSHDS
    • gridded data
      • regular RGSHDS
      • specified x XSHDS
      • specified x-y XYSHDS
      • specified y YSHDS
    • key
      • horizontal MPK7H
      • vertical MPK7V
    • sequence of
      • labels SQZLAB
      • levels SQZVAL
      • pens SQPEN
      • shading patterns SQSHAD
    • shading method MPTYPE
    • ungridded data
      • with neighbours ZZSHDS
      • without neighbours ZSHDS
  • Shaded contour range
    • draw contour curves SHEDGE
    • function of 2 variables FNSHAD
    • gridded data
      • regular RGSHAD
      • specified x XSHAD
      • specified x-y XYSHAD
      • specified y YSHAD
    • shading method MPTYPE
    • ungridded data
      • with neighbours ZZSHAD
      • without neighbours ZSHAD
  • Shaded contours
    • add to surface VSISU VSRGU VSXYZU VSZU
  • Shading method
    • lighting-sourcing VSLSSM
  • Shading patterns
    • draw complete key SHKEYS
    • fast area-fill MPTYPE
    • histogram HSTSHD
    • key entry SHDEK7
    • software/hardware SHSET
    • specify
      • all details SHDESC
      • hatching angles SHANGS
      • individual SHPATT
      • number of colours SHCOLS
      • sequence SQSHAD
      • single colour SHPEN
      • software line separation SHGAP
      • uniform SHUNIF
  • Shortest distance
    • draw line of shortest distance GGLLPT
    • evaluate shortest distance between two points VGLLSD
  • Similar linear x-y scales EQSCAL
  • Similar unit scales VSFIT
  • Size of
    • arrow heads ARHEAD
    • bars ISBRSZ VSBRSZ
    • characters (width) TEXTSZ
    • fast area-fill characters FFSIZE
    • inquire
      • current picture QPIC
      • key/caption area QKYCAP
      • maximum page QPAGE
      • text string QSTR7
    • key sample DEFKYW
    • margins
      • individual PICMRG
      • overall MARGIN
    • marker symbols MKSIZE
    • page PAGE
    • peripheral margins
      • individual PAGMRG
      • overall PERIPH
    • pictures PICSIZ
    • pie chart diameter PIDIAM
    • polymarkers VSPMMG
  • Software/hardware
    • broken line patterns LINSET
    • character sets CHSET
    • fast area-fill FFSET
    • marker symbols MKSET
    • shading patterns SHSET
  • Solid line
    • box DRAWBX
    • circle DRAWCL
    • curve through data
      • set of coordinates DRAWCV
      • single data set DRAWAR
    • draw to point JOINPT
    • function DRAWFN
    • line plot DRAWLN
    • parametric function DRAWPR
  • Stacked barchart BARTYP
  • Stacking direction ISBRUP VSBRUP
  • Standard parallel GGPARL
  • Store curve coordinates CTHOLD
  • String
    • alternative compass labels GGSLDA
    • format GGSFMT
    • from latitude KGLAT
    • from longitude KGLONG
  • Subscripts STRLV
  • Superimposed pictures MOVEON
  • Superscripts STRLV
  • Surface
    • from elements VSZ
    • from quadrilateral elements VSXYZ
    • from regular grid VSRG
  • Surface picture
    • axes
      • on current picture ISAXD7
      • with new picture ISAXES
    • convert coordinates KISXY
    • draw xyz axes ISAXD7
    • empty picture ISNEW
    • function of 2 variables FNSURF
    • gridded data
      • regular RGSURF
      • specified x XSURF
      • specified x-y XYSURF
      • specified y YSURF
    • individual axis AXIS7
    • shaded surface
      • backdrop ISSBCK
      • base ISSBAS
      • shading pattern ISSPAT
      • skirt ISSKRT
      • type of shading ISSHAD
    • shading technique RASTER
    • specify
      • angle ISANG
      • contour levels SFEQZ
      • curve type ISCURV
      • discrete contour levels SFEQZD
      • fineness of mesh ISMESH SFMESH
      • mirror image ISYUP
      • proportions ISRISE
      • size ISFULL
      • type of surface ISTYPE
      • view point ISVIEW
      • x grid SFEQX
      • xyz diagram ISDIAG
      • y grid SFEQY
      • z range SFLIMS
      • z scale SFZSCL
    • ungridded data
      • with neighbours ZZSURF
      • without neighbours ZSURF
    • values
      • inquire QSFLAB
      • label picture SFLAB
  • Surface section
    • function of 2 variables FNCUT
    • regular RGCUT
    • specified x XCUT
    • specified x-y XYCUT
    • specified y YCUT
    • ungridded data ZCUT
  • Symbol VSPMDR
  • Terminate
    • page ENDPAG
    • picture ENDPIC
    • plotting ENDPLT
    • user-defined shaded area SHSTOP
  • Text
    • clipping strategy CLIPLV
    • embedded commands
      • interpretation STRLV
      • special characters STRCHS
    • inquire physical size QSTR7
    • masked CHMASK
    • specify
      • angle LABANG
      • aspect ratio TEXTAR
      • hardware/software CHSET
      • justification LABJST
      • line spacing TEXTLF
      • magnification TEXTMG
      • minimum width TEXTMN
      • slant (hardware only) TEXTSL
      • width TEXTSZ
    • thickness THCKMG
    • title TITLE7
  • Theta ( VSLSLD VSVRTP
  • Theta, Phi
    • specify Lighting direction VSLSLD
  • Time-date
    • axis
      • components AXLBTM
      • separators AXLBSP
    • axis annotation AXLBTP
    • convert to REAL KTREAL
    • convert to text KTSTR
    • convert to triple KTTRI
    • load
      • alternative labels TIMLDA
      • alternative prefix/suffix TIMLDC
    • specify format TIMFMT
  • Tinted barchart VSBRTN
  • Tinted block VSBLTN
  • Tinted edged polygon VSPGTE
  • Tinted polygon VSPGTN
  • Tinted polyline VSPLTN
  • Title
    • text string TITLE7
    • user-defined position DEFPOS
  • Transformation
    • magnification VSMAG
    • rotation VSROT
    • translation VSTRAN
  • Translation VSTRAN
  • Triangulation
    • define boundary TRIFIX
    • define fixed line TRIFIX
    • fast
      • create object TRINEW
      • define boundary TRIFIX
      • define fixed line TRIFIX
      • define index base value TRIOFF
      • delete object TRIDEL
      • get triangle structures TRIGET
      • register data TRIREG
      • triangulate data TRIANG
    • normalized
      • with neighbour generation ZZORDN
      • without neighbours ZORDEN
    • standard
      • with neighbour generation ZZORDR
      • without neighbours ZORDER TRIANG
    • without neighbours
      • boundary TRIFIX
  • Underline
    • all text CHUNDL
    • within text string STRLV
  • Ungridded data
    • cross section ZCUT
    • element ZELEM
    • neighbour generation ZNEIGH
    • number nodes/elements ZNUMB
    • triangulation
      • with neighbour generation ZZORDN ZZORDR
      • without neighbours ZORDEN ZORDER
    • with neighbours
      • boundary ZZEDGE
      • contour curve ZZCONT
      • contour map ZZCNTS
      • convert to gridded KZZRG
      • element configuration ZZELMS
      • interpolation ZZCALC
      • shaded contour map ZZSHDS
      • shaded contour range ZZSHAD
      • surface picture ZZSURF
      • triangulation ZZORDN ZZORDR
    • without neighbours
      • boundary ZEDGE
      • contour curve ZCONT
      • contour map ZCNTS
      • convert to gridded KZRG
      • element configuration ZELEMS
      • interpolation ZCALC
      • neighbour generation ZNEIGH
      • shaded contour map ZSHDS
      • shaded contour range ZSHAD
      • surface picture ZSURF
      • triangulation ZORDEN ZORDER
  • Uniform software shading SHUNIF
  • Units
    • coordinate interpretation COORDS
    • similar scales EQSCAL
  • Update the picture OUTBUF
  • User-defined
    • angular scale POLRNG
    • descriptive position DEFPOS
    • polynomial function POLY
    • position of
      • page PAGPOS
      • picture PICPOS
    • shaded area
      • start SHSTRT
      • terminate SHSTOP
  • Version
    • inquire SIMPLEPLOT version QSPLOT
  • Vertical
    • bar chart BARTYP
    • centred label CP7YC
    • key MPK7V VSK7V
    • scale SCALES YSCALE
  • Viewing position
    • (Radius,Theta,Phi) VSVRTP
    • xyzcoord VSVXYZ
  • Visibility
    • edge of filled areas VSEDGV
  • WYSIWYG layout FITPAG
  • Waterfall chart
    • convert z value KWZVAL
    • curve displacement WFSTEP
    • draw axes WFCHT
    • draw complete WFCHT
    • draw curve WFDRAW
    • individual axis AXIS7
    • initialize WFINIT
    • inquire z scale QWZSCL
    • label scale WFEQL
    • number of curves WFNCVS
    • numeric scale
      • interval WFEQN
      • limits WFNSCL
    • pen change level WFZLEV
    • pen usage WFPNS
    • z scale WFZSCL
  • Width of bars ISBRSZ VSBRSZ
  • x scale XSCALE
  • x-specified data
    • contour curve XCONT
    • contour map XCNTS
    • cross section XCUT
    • interpolation XCALC
    • shaded contour map XSHDS
    • shaded contour range XSHAD
    • surface picture XSURF
  • x-y axes
    • with new picture AXES7
  • x-y plots
    • no-data value
      • inquire QNODAT
      • specify NODATA
  • x-y scales
    • linear and non-linear SCALES
    • similar linear EQSCAL
  • x-y specified data
    • contour curve XYCONT
    • contour map XYCNTS
    • cross section XYCUT
    • interpolation XYCALC
    • shaded contour map XYSHDS
    • shaded contour range XYSHAD
    • surface picture XYSURF
  • x-y-z
    • diagram ISDIAG
  • xy
    • convert to KGXYLL
    • equivalent of KGLLXY
    • inquire map scale limits QGSCAL
  • xy plots
    • inquire limits QVSCAL
  • xycoord
    • for single xyzcoord KVXYD
  • xyz
    • comparable scales
      • proportional lengths VSFITP
      • similar units VSFIT
    • inquire limits QV3DLM
    • specify limits VS3DLM
  • xyzcoord
    • equivalent xycoord KVXYD
    • specify Viewing Position VSVXYZ
  • y scale YSCALE
  • y-specified data
    • contour curve YCONT
    • contour map YCNTS
    • cross section YCUT
    • interpolation YCALC
    • shaded contour map YSHDS
    • shaded contour range YSHAD
    • surface picture YSURF
  • z
    • base value for 3-D barcharts ISBRBZ VSBRBZ
  • z range
    • contour map SFLIMS
    • perspective pictures PVZLIM
    • surface picture SFLIMS
  • z scale
    • contour map SFZSCL
    • equal spacing between values VSEQZ
    • surface picture SFZSCL
    • waterfall chart WFZSCL


DDDATA

This page uses frames, but your browser doesn't support them.


DDDATA

SUBROUTINE DDDATA ( IARR )

Purpose

to pass device driver specific information from the application to a device driver.

Argument(s)

IARR INTEGER array array with 8 elements holding required value. All elements of the array must be defined

Description

Some applications have a requirement to pass data to a device driver. The information to be passed is usually of non-standard type and may be many bytes in length. Driver-specific data include widgets, lists of pixel values, points to bitmaps and pasteboard IDs.

Rather than provide a subroutine which could directly handle every possible type and quantity of data, a simple value is passed. It is expected that in the majority of cases this will be a pointer to the actual data.

An array of eight integers is used to allow for systems where INTEGERs are shorter than addresses. The exact conversion between a pointer and the INTEGER array is system dependent. Typically it will be the union (equivalence) of a pointer and the INTEGER array.

This subroutine may be called at any time. Data passed to this subroutine are stored until a device driver reads it or the device driver sub-system goes through a final closedown.

It is the responsibility of the calling code to ensure that the routine is called at an appropriate time and for an appropriate device driver.

Availability

Section plus, released version 2-14.

See Also

device driver specific information .


Access to 2-16 Examples

Example Set 7. 2-16 Examples

2-16 1. | Triangulation of unconstrained random data
2-16 2. | Triangulation of random points with specified perimeter
2-16 3. | Triangulation of random points with internal fixed line
2-16 4. | Triangulation with specified outer and inner perimeters
2-16 5. | Triangulation with specified doubly-nested perimeters
2-16 6. | Triangulation with specified intersecting perimeters


Access to Examples

Example Sets

Example Set 1. | Primer | The programs from the SIMPLEPLOT Primer
Example Set 2. | 3D | The programs from the SIMPLEPLOT 3D Manual
Example Set 3. | Supplement | The programs from the SIMPLEPLOT Supplement
Example Set 4. | Help | Programs which demonstrate individual concepts
Example Set 5. | Maps | The programs from the SIMPLEPLOT Maps Manual
Example Set 6. | VS | The programs from the SIMPLEPLOT ViSualization Manual
Example Set 7. | 2-16 | Programs demonstrating new 2-16 features


Example sixt01

This page uses frames, but your browser doesn't support them.


Example sixt01

2-16 1. Triangulation of unconstrained random data

Picture of Output
! ================================================================================
! Sixt01 - Triangulate set of randomly scattered data points, and plot ...
! ================================================================================

SUBROUTINE Sixt01
  use spmodule

  INTEGER, PARAMETER :: NPTS = 22		! # 'Random' points
  REAL, DIMENSION(NPTS) :: xArr, yArr, zArr

  INTEGER, PARAMETER :: MAX_TRIG = NPTS * 2 + 1
  INTEGER, DIMENSION(3, MAX_TRIG) :: iElArr
  INTEGER iHandle, iStatus

  DATA xArr/0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 3.0, 3.0, 4.0, 5.0, 5.0, 4.0, 4.0, 3.0, 2.0, 2.0, &
    1.0, 0.0, &
    1.0, 2.0, 2.0, 3.0/
  DATA yArr/3.0, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 4.0, 3.0, &
    3.0, 3.0, &
    2.0, 1.0, 2.0, 3.0/
  DATA zArr/2.9, 2.2, 2.6, 3.0, 2.4, 2.0, 3.1, 4.0, 3.2, 1.9, 1.8, 3.1, 2.9, 2.3, &
            2.8, 4.5, 3.7, 2.9, &
            4.0, 4.4, 5.0, 3.6/

  CALL TRINEW(iHandle)
  IF(iHandle .LT. 0) THEN
    RETURN
  ENDIF
  CALL TRIREG(iHandle, xArr, yArr, NPTS, iStatus)
  CALL TRIANG(iHandle, nTri, iStatus)
  IF(iStatus.EQ.0) THEN
    CALL TRIOFF(iHandle, 1, iStatus)
    CALL TRIGET(iHandle, 1, nTri, iElArr, iStatus)
  ELSE
    nTri = 0
  ENDIF
  CALL TRIDEL(iHandle, iStatus)

! =====================================================================================
  CALL PlotData(xArr, yArr, zArr, NPTS, iElArr, nTri)
END SUBROUTINE Sixt01

! ================================================================================
! PlotData
! ================================================================================

SUBROUTINE PlotData(XARR, YARR, ZARR, NPTS, I2ARR, NTRI)
  use spmodule

  INTEGER,INTENT(IN) :: NPTS, NTRI
  REAL, INTENT(IN), DIMENSION(NPTS) :: XARR, YARR, ZARR
  INTEGER, INTENT(IN), DIMENSION(3, NTRI) :: I2ARR

  REAL xMin, xMax, yMin, yMax
  INTEGER i
  CHARACTER*20 cReal

! =====================================================================================
  CALL LIMEXC(XARR, NPTS, xMin, xMax)
  CALL LIMEXC(YARR, NPTS, yMin, yMax)
  CALL GROUP(2, 1)
  CALL EQSCAL(xMin, xMax, yMin, yMax, 0)

! 1st picture - mark points & draw triangles
  CALL AXES7(' ', ' ')
  DO, i = 1, NPTS
    CALL KREAL(ZARR(i), cReal)
    CALL CP7LB(XARR(i), YARR(i), cReal)
  ENDDO
  CALL ZELEMS(XARR, YARR, NPTS, I2ARR, 3, NTRI)	! Draw triangles

  IF(NTRI.GT.0) THEN
    CALL AXES7(' ', ' ')
    CALL ZSHDS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
    CALL CTCURV(3)	! Joint contour points with a straight line
    CALL ZCNTS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
  ENDIF
END SUBROUTINE PlotData


Example sixt02

This page uses frames, but your browser doesn't support them.


Example sixt02

2-16 2. Triangulation of random points with specified perimeter

Picture of Output
! Sixt02 - Use 1st 'NEDGE' points to define the perimeter
! ================================================================================

SUBROUTINE Sixt02
  use spmodule

  INTEGER, PARAMETER :: NPTS = 21		! # Total # points, boundary + random
  INTEGER, PARAMETER :: NEDGE = 17		! # Edge = Perimeter points
  REAL, DIMENSION(NPTS) :: xArr, yArr, zArr

  INTEGER, PARAMETER :: MAX_TRIG = NPTS * 2 + 1
  INTEGER, DIMENSION(3, MAX_TRIG) :: iElArr
  INTEGER iOK
  INTEGER iHandle, iStatus

  DATA xArr/0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 3.0, 3.0, 4.0, 5.0, 5.0, 4.0, 4.0, 3.0, 2.0, 2.0, &
    1.0, &
    1.0, 2.0, 2.0, 3.0/
  DATA yArr/3.0, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 4.0, 3.0, &
    3.0, &
    2.0, 1.0, 2.0, 3.0/
  DATA zArr/2.9, 2.2, 2.6, 3.0, 2.4, 2.0, 3.1, 4.0, 3.2, 1.9, 1.8, 3.1, 2.9, 2.3, &
            2.8, 4.5, 3.7, &
            4.0, 4.4, 5.0, 3.6/

  CALL TRINEW(iHandle)
  IF(iHandle .LT. 0) THEN
    RETURN
  ENDIF
  iOK = 0
  CALL TRIREG(iHandle, xArr, yArr, NPTS, iStatus)
  if(iStatus.NE.0) iOK = 1
  CALL TRIFIX(iHandle, 1, NEDGE, .TRUE., iStatus)
  if(iStatus.NE.0) iOK = iOK + 2
  CALL TRIANG(iHandle, nTri, iStatus)
  IF(iStatus.EQ.0) THEN
    CALL TRIOFF(iHandle, 1, iStatus)
    CALL TRIGET(iHandle, 1, nTri, iElArr, iStatus)
  ELSE
    nTri = 0
  ENDIF
  CALL TRIDEL(iHandle, iStatus)

! =====================================================================================
  CALL PlotData(xArr, yArr, zArr, NPTS, iElArr, nTri)
END SUBROUTINE Sixt02

! ================================================================================
! PlotData
! ================================================================================

SUBROUTINE PlotData(XARR, YARR, ZARR, NPTS, I2ARR, NTRI)
  use spmodule

  INTEGER,INTENT(IN) :: NPTS, NTRI
  REAL, INTENT(IN), DIMENSION(NPTS) :: XARR, YARR, ZARR
  INTEGER, INTENT(IN), DIMENSION(3, NTRI) :: I2ARR

  REAL xMin, xMax, yMin, yMax
  INTEGER i
  CHARACTER*20 cReal

! =====================================================================================
  CALL LIMEXC(XARR, NPTS, xMin, xMax)
  CALL LIMEXC(YARR, NPTS, yMin, yMax)
  CALL GROUP(2, 1)
  CALL EQSCAL(xMin, xMax, yMin, yMax, 0)

! 1st picture - mark points & draw triangles
  CALL AXES7(' ', ' ')
  DO, i = 1, NPTS
    CALL KREAL(ZARR(i), cReal)
    CALL CP7LB(XARR(i), YARR(i), cReal)
  ENDDO
  CALL ZELEMS(XARR, YARR, NPTS, I2ARR, 3, NTRI)	! Draw triangles

  IF(NTRI.GT.0) THEN
    CALL AXES7(' ', ' ')
    CALL ZSHDS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
    CALL CTCURV(3)	! Joint contour points with a straight line
    CALL ZCNTS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
  ENDIF
END SUBROUTINE PlotData


Example sixt03

This page uses frames, but your browser doesn't support them.


Example sixt03

2-16 3. Triangulation of random points with internal fixed line

Picture of Output
! Sixt03 - Display Internal edge
! ================================================================================

SUBROUTINE Sixt03
  use spmodule

  INTEGER, PARAMETER :: NPTS = 21		! # Total # points, boundary + random
  INTEGER, PARAMETER :: NEDGE = 13		! # Edge = Perimeter points
  REAL, DIMENSION(NPTS) :: xArr, yArr, zArr

  INTEGER, PARAMETER :: MAX_TRIG = NPTS * 2 + 1
  INTEGER, DIMENSION(3, MAX_TRIG) :: iElArr
  INTEGER iHandle, iStatus
  INTEGER nTri

  DATA xArr/0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 3.0, 4.0, 4.0, 3.0, 2.0, 2.0, &
    1.0, &
    1.0, 2.0, 2.0, 3.0, 3.0, 5.0, 5.0, 5.0/
  DATA yArr/3.0, 2.0, 1.0, 1.0, 0.0, 1.0, 2.0, 2.0, 4.0, 4.0, 4.0, 3.0, &
    3.0, &
    2.0, 1.0, 2.0, 3.0, 0.0, 2.0, 3.0, 3.0/
  DATA zArr/2.9, 2.2, 2.6, 3.0, 2.4, 3.1, 4.0, 3.2, 2.9, 2.3, &
            2.8, 4.5, 3.7, &
            4.0, 4.4, 5.0, 3.6, 2.0, 1.9, 1.8, 3.1/

  CALL TRINEW(iHandle)

  CALL TRIREG(iHandle, xArr, yArr, NPTS, iStatus)
  CALL TRIFIX(iHandle, 1, NEDGE, .TRUE., iStatus)
  CALL TRIANG(iHandle, nTri, iStatus)
  IF(iStatus.EQ.0) THEN
    CALL TRIOFF(iHandle, 1, iStatus)
    CALL TRIGET(iHandle, 1, nTri, iElArr, iStatus)
  ELSE
    nTri = 0
  ENDIF
  CALL TRIDEL(iHandle, iStatus)

! =====================================================================================
  CALL PlotData(xArr, yArr, zArr, NPTS, iElArr, nTri)
! Now draw re-defined edges as double thick dotted line:
  CALL THCKMG('Lines', 2.0)
  CALL CVTYPE(3)	! Straight lines between points
  CALL BRKNCV(xArr, yArr, NEDGE, -1)
  CALL THCKMG('Lines', 1.0)	! Reset
END SUBROUTINE Sixt03

! ================================================================================
! PlotData
! ================================================================================

SUBROUTINE PlotData(XARR, YARR, ZARR, NPTS, I2ARR, NTRI)
  use spmodule

  INTEGER,INTENT(IN) :: NPTS, NTRI
  REAL, INTENT(IN), DIMENSION(NPTS) :: XARR, YARR, ZARR
  INTEGER, INTENT(IN), DIMENSION(3, NTRI) :: I2ARR

  REAL xMin, xMax, yMin, yMax
  INTEGER i
  CHARACTER*20 cReal

! =====================================================================================
  CALL LIMEXC(XARR, NPTS, xMin, xMax)
  CALL LIMEXC(YARR, NPTS, yMin, yMax)
  CALL GROUP(2, 1)
  CALL EQSCAL(xMin, xMax, yMin, yMax, 0)

! 1st picture - mark points & draw triangles
  CALL AXES7(' ', ' ')
  DO, i = 1, NPTS
    CALL KREAL(ZARR(i), cReal)
    CALL CP7LB(XARR(i), YARR(i), cReal)
  ENDDO
  CALL ZELEMS(XARR, YARR, NPTS, I2ARR, 3, NTRI)	! Draw triangles

  IF(NTRI.GT.0) THEN
    CALL AXES7(' ', ' ')
    CALL ZSHDS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
    CALL CTCURV(3)	! Joint contour points with a straight line
    CALL ZCNTS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
  ENDIF
END SUBROUTINE PlotData


Example sixt04

This page uses frames, but your browser doesn't support them.


Example sixt04

2-16 4. Triangulation with specified outer and inner perimeters

Picture of Output
! Sixt04 - define an inner and outer rectangular perimeter
! ================================================================================

SUBROUTINE Sixt04
  use spmodule

  INTEGER, PARAMETER :: NPTS = 15		! # points
  REAL, DIMENSION(NPTS) :: xArr, yArr, zArr

  INTEGER, PARAMETER :: MAX_TRIG = NPTS * 2 + 1
  INTEGER, DIMENSION(3, MAX_TRIG) :: iElArr
  INTEGER iHandle, iStatus

  DATA xArr/0.0, 5.0, 5.0, 0.0, 0.0, &	! Outer rectangle (x)
            1.0, 4.0, 4.0, 1.0, 1.0, &	! Inner rectangle (x)
            2.0, 3.0, 3.0, 2.0, 2.0/	! Inner rectangle (x)
  DATA yArr/0.0, 0.0, 5.0, 5.0, 0.0, &	! Outer rectangle (y)
            1.0, 1.0, 4.0, 4.0, 1.0, &	! Inner rectangle (y)
            2.0, 2.0, 3.0, 3.0, 2.0/	! Inner rectangle (y)
  DATA zArr/0.0, 0.0, 0.0, 0.0, 0.0, &	! Outer rectangle (z)
            2.0, 2.0, 2.0, 2.0, 2.0, &	! Inner rectangle (z)
            4.0, 4.0, 4.0, 4.0, 4.0/	! Inner rectangle (z)

  CALL TRINEW(iHandle)
  IF(iHandle .LT. 0) THEN
    RETURN
  ENDIF
  CALL TRIREG(iHandle, xArr, yArr, NPTS, iStatus)	! Register all points
  CALL TRIFIX(iHandle, 1, 5, .TRUE., iStatus)	! Outer perimeter
  CALL TRIFIX(iHandle, 11, 5, .TRUE., iStatus) ! An inner perimeter
  CALL TRIANG(iHandle, nTri, iStatus)
  IF(iStatus.EQ.0) THEN
    CALL TRIOFF(iHandle, 1, iStatus)
    CALL TRIGET(iHandle, 1, nTri, iElArr, iStatus)
  ELSE
    nTri = 0
  ENDIF
  CALL TRIDEL(iHandle, iStatus)

! =====================================================================================
  CALL PlotData(xArr, yArr, zArr, NPTS, iElArr, nTri)
END SUBROUTINE Sixt04

! ================================================================================
! PlotData
! ================================================================================

SUBROUTINE PlotData(XARR, YARR, ZARR, NPTS, I2ARR, NTRI)
  use spmodule

  INTEGER,INTENT(IN) :: NPTS, NTRI
  REAL, INTENT(IN), DIMENSION(NPTS) :: XARR, YARR, ZARR
  INTEGER, INTENT(IN), DIMENSION(3, NTRI) :: I2ARR

  REAL xMin, xMax, yMin, yMax
  INTEGER i
  CHARACTER*20 cReal

! =====================================================================================
  CALL LIMEXC(XARR, NPTS, xMin, xMax)
  CALL LIMEXC(YARR, NPTS, yMin, yMax)
  CALL GROUP(2, 1)
  CALL EQSCAL(xMin, xMax, yMin, yMax, 0)

! 1st picture - mark points & draw triangles
  CALL AXES7(' ', ' ')
  DO, i = 1, NPTS
    CALL KREAL(ZARR(i), cReal)
    CALL CP7LB(XARR(i), YARR(i), cReal)
  ENDDO
  CALL ZELEMS(XARR, YARR, NPTS, I2ARR, 3, NTRI)	! Draw triangles

  IF(NTRI.GT.0) THEN
    CALL AXES7(' ', ' ')
    CALL ZSHDS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
    CALL CTCURV(3)	! Joint contour points with a straight line
    CALL ZCNTS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
  ENDIF
END SUBROUTINE PlotData


Example sixt05

This page uses frames, but your browser doesn't support them.


Example sixt05

2-16 5. Triangulation with specified doubly-nested perimeters

Picture of Output
! ================================================================================
! Sixt05 - Now define an outer & 2 inner rectangular perimeters
! ================================================================================

SUBROUTINE Sixt05
  use spmodule

  INTEGER, PARAMETER :: NPTS = 12		! # 'Random' points
  REAL, DIMENSION(NPTS) :: xArr, yArr, zArr

  INTEGER, PARAMETER :: MAX_TRIG = NPTS * 2 + 1
  INTEGER, DIMENSION(3, MAX_TRIG) :: iElArr
  INTEGER iHandle, iStatus

  DATA xArr/0.0, 5.0, 5.0, 0.0, &	! Outer rectangle (x)
            1.0, 4.0, 4.0, 1.0, &	! Inner rectangle (x)
            2.0, 3.0, 3.0, 2.0/	! Inner rectangle (x)
  DATA yArr/0.0, 0.0, 5.0, 5.0, &	! Outer rectangle (y)
            1.0, 1.0, 4.0, 4.0, &	! Inner rectangle (y)
            2.0, 2.0, 3.0, 3.0/	! Inner rectangle (y)
  DATA zArr/0.0, 0.0, 0.0, 0.0, &	! Outer rectangle (z)
            2.0, 2.0, 2.0, 2.0, &	! Inner rectangle (z)
            4.0, 4.0, 4.0, 4.0/	! Inner rectangle (z)

  CALL TRINEW(iHandle)
  IF(iHandle .LT. 0) THEN
    RETURN
  ENDIF
  CALL TRIREG(iHandle, xArr, yArr, NPTS, iStatus)    ! Register all points
  CALL TRIFIX(iHandle, 1, 4, .TRUE., iStatus)	! Outer perimeter
  CALL TRIFIX(iHandle, 5, 4, .TRUE., iStatus)	! Inner perimeter
  CALL TRIFIX(iHandle, 9, 4, .TRUE., iStatus)	! Inner Inner perimeter
  CALL TRIANG(iHandle, nTri, iStatus)
  IF(iStatus.EQ.0) THEN
    CALL TRIOFF(iHandle, 1, iStatus)
    CALL TRIGET(iHandle, 1, nTri, iElArr, iStatus)
  ELSE
    nTri = 0
  ENDIF
  CALL TRIDEL(iHandle, iStatus)

! =====================================================================================
  CALL PlotData(xArr, yArr, zArr, NPTS, iElArr, nTri)
END SUBROUTINE Sixt05

! ================================================================================
! PlotData
! ================================================================================

SUBROUTINE PlotData(XARR, YARR, ZARR, NPTS, I2ARR, NTRI)
  use spmodule

  INTEGER,INTENT(IN) :: NPTS, NTRI
  REAL, INTENT(IN), DIMENSION(NPTS) :: XARR, YARR, ZARR
  INTEGER, INTENT(IN), DIMENSION(3, NTRI) :: I2ARR

  REAL xMin, xMax, yMin, yMax
  INTEGER i
  CHARACTER*20 cReal

! =====================================================================================
  CALL LIMEXC(XARR, NPTS, xMin, xMax)
  CALL LIMEXC(YARR, NPTS, yMin, yMax)
  CALL GROUP(2, 1)
  CALL EQSCAL(xMin, xMax, yMin, yMax, 0)

! 1st picture - mark points & draw triangles
  CALL AXES7(' ', ' ')
  DO, i = 1, NPTS
    CALL KREAL(ZARR(i), cReal)
    CALL CP7LB(XARR(i), YARR(i), cReal)
  ENDDO
  CALL ZELEMS(XARR, YARR, NPTS, I2ARR, 3, NTRI)	! Draw triangles

  IF(NTRI.GT.0) THEN
    CALL AXES7(' ', ' ')
    CALL ZSHDS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
    CALL CTCURV(3)	! Joint contour points with a straight line
    CALL ZCNTS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
  ENDIF
END SUBROUTINE PlotData


Example sixt06

This page uses frames, but your browser doesn't support them.


Example sixt06

2-16 6. Triangulation with specified intersecting perimeters

Picture of Output
! ================================================================================
! Sixt06 - draw intersecting boundaries - Intersection point in 1 boundary
! ================================================================================

SUBROUTINE Sixt06
  use spmodule

  INTEGER, PARAMETER :: NPTS = 14		! # 'Random' points
  REAL, DIMENSION(NPTS) :: xArr, yArr, zArr

  INTEGER, PARAMETER :: MAX_TRIG = NPTS * 2 + 1
  INTEGER, DIMENSION(3, MAX_TRIG) :: iElArr
  INTEGER iHandle, iStatus

  DATA xArr/0.0, 3.0, &
    0.0, 1.0, 2.0, 2.0, 2.0, 1.0, 0.0, 0.0, &
    1.0, 3.0, 3.0, 1.0/
  DATA yArr/0.0, 3.0, &
    1.0, 1.0, 1.0, 2.0, 3.0, 3.0, 3.0, 2.0, &
    0.0, 0.0, 2.0, 2.0/
  DATA zArr/2.9, 2.2, &
    2.6, 3.0, 2.4, 2.0, 3.1, 4.0, 3.2, 1.9, &
    1.8, 3.1, 2.9, 2.3/

  CALL TRINEW(iHandle)
  IF(iHandle .LT. 0) THEN
    RETURN
  ENDIF
  CALL TRIREG(iHandle, xArr, yArr, NPTS, iStatus)    ! Register all points
  CALL TRIFIX(iHandle, 3, 8, .TRUE., iStatus)	! 1st area perimeter
  CALL TRIFIX(iHandle, 11, 4, .TRUE., iStatus)	! Intersecting area
  CALL TRIANG(iHandle, nTri, iStatus)
  IF(iStatus.EQ.0) THEN
    CALL TRIOFF(iHandle, 1, iStatus)
    CALL TRIGET(iHandle, 1, nTri, iElArr, iStatus)
  ELSE
    nTri = 0
  ENDIF
  CALL TRIDEL(iHandle, iStatus)

! =====================================================================================
  CALL PlotData(xArr, yArr, zArr, NPTS, iElArr, nTri)
  CALL THCKMG('Lines', 2.0)
  CALL CVTYPE(3)
  CALL BRKNCV(xArr(3), yArr(3), 8, -1);
  CALL BRKNCV(xArr(11), yArr(11), 4, 1);
END SUBROUTINE Sixt06

! ================================================================================
! PlotData
! ================================================================================

SUBROUTINE PlotData(XARR, YARR, ZARR, NPTS, I2ARR, NTRI)
  use spmodule

  INTEGER,INTENT(IN) :: NPTS, NTRI
  REAL, INTENT(IN), DIMENSION(NPTS) :: XARR, YARR, ZARR
  INTEGER, INTENT(IN), DIMENSION(3, NTRI) :: I2ARR

  REAL xMin, xMax, yMin, yMax
  INTEGER i
  CHARACTER*20 cReal

! =====================================================================================
  CALL LIMEXC(XARR, NPTS, xMin, xMax)
  CALL LIMEXC(YARR, NPTS, yMin, yMax)
  CALL GROUP(2, 1)
  CALL EQSCAL(xMin, xMax, yMin, yMax, 0)

! 1st picture - mark points & draw triangles
  CALL AXES7(' ', ' ')
  DO, i = 1, NPTS
    CALL KREAL(ZARR(i), cReal)
    CALL CP7LB(XARR(i), YARR(i), cReal)
  ENDDO
  CALL ZELEMS(XARR, YARR, NPTS, I2ARR, 3, NTRI)	! Draw triangles

  IF(NTRI.GT.0) THEN
    CALL AXES7(' ', ' ')
    CALL ZSHDS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
    CALL CTCURV(3)	! Joint contour points with a straight line
    CALL ZCNTS(XARR, YARR, ZARR, NPTS, I2ARR, 3, NTRI)
  ENDIF
END SUBROUTINE PlotData


Summary

Subroutine Summary

This appendix summarizes the SIMPLEPLOT subroutines described in this manual. Please refer to subroutine specifications for full details of subroutine arguments. These subroutines represent only a subset of the complete SIMPLEPLOT library which is made up of seven separate sections:
  • 1. The basic package for conventional graph plotting.
  • 2. Additional subroutines for three-dimensional plotting.
  • 4. Additional facilities for presentation graphics.
  • 5. Volumes -- for plotting three-dimensional REAL arrays.
  • 6. Maps -- for representing data based on geographical coordinate systems.
  • 7. ViSualization -- for perspective drawing of functions of two, three and four variables.
  • + Extra facilities which are available with a SIMPLEPLOT library that has at least Sections 1, 2 and 4.

    Summary 1. | Starting a new picture and/or page
    Summary 2. | 2-D coordinate system and scales
    Summary 3. | 2-D data manipulation
    Summary 4. | Plotting data sets
    Summary 5. | Bar charts, histograms and pie charts
    Summary 6. | Point-by-point plotting
    Summary 7. | Annotation labelling at user coordinates
    Summary 8. | Axes
    Summary 9. | Time and date based data
    Summary 10. | Titles, keys and captions
    Summary 11. | Drawing characteristics for 2-D graph plotting
    Summary 12. | General plotting characteristics
    Summary 13. | Text and symbol attributes
    Summary 14. | Layout
    Summary 15. | Pen/bundle control
    Summary 16. | Shading control
    Summary 17. | Inquiry subroutines
    Summary 18. | Conversion subroutines
    Summary 19. | Device and job control
    Summary 20. | Interactive programming
    Summary 21. | Metafile subroutines
    Summary 22. | Plotting three-dimensional data
    Summary 23. | Perspective surfaces
    Summary 24. | Ungridded 3-D data manipulation
    Summary 25. | Surface pictures
    Summary 26. | Contour maps and cross sections
    Summary 27. | Waterfall charts
    Summary 28. | Additional 3-D facilities
    Summary 29. | Mapping subroutines


Example supp18

Supplement 18. Drawing parametric functions

Picture of Output
  SUBROUTINE Parametric
  use spmodule

  REAL Radius
  COMMON/BUSSCOMMON1/ Radius
  REAL A, B
  COMMON/BUSSCOMMON2/ A, B
!  EXTERNAL CircleFun
!  EXTERNAL EllipticalFun

  REAL, PARAMETER :: M_PI = 3.14159

  CALL BeginPage('Drawing Parametric Functions')
  CALL GROUP(2, 2)
  CALL EQSCAL(-10.0, 10.0, -10.0, 10.0, 0)   ! Isotropic Cartesian

  Radius = 7.0     ! Radius of circle
  A = 8.5          ! Major & Minor axes of ellipse
  B = 6.0
! -------- Picture 1: Draw complete circle. --------------------------------
  CALL AXES7('X', 'Y')
  CALL DRAWPR(CircleFun, -M_PI, M_PI)
  CALL TITLE7('Top', 'Centre', 'Circular function')
! -------- Picture 2: Draw complete ellipse --------------------------------
  CALL AXES7('X', 'Y')
  CALL SHDEPR(EllipticalFun, -M_PI, M_PI, 8)
  CALL TITLE7('Top', 'Centre', 'Elliptical function')
! -------- Picture 3: Draw arc of a circle. --------------------------------
  CALL AXES7('X', 'Y')
  CALL SHDEPR(CircleFun, 1.0/3.0*M_PI, 5.0/3.0*M_PI, 9)
  CALL TITLE7('Top', 'Centre', 'Circular arc')
! -------- Picture 4: Draw arc of an ellipse. ------------------------------
  CALL AXES7('X', 'Y')
  CALL BRKNPR(EllipticalFun, -1.0/3.0*M_PI, 4.0/3.0*M_PI, -1)
  CALL TITLE7('Top', 'Centre', 'Elliptical arc')

CONTAINS

SUBROUTINE CircleFun(T, X, Y)
  REAL, INTENT(IN) :: T
  REAL, INTENT(OUT) :: X, Y

  REAL Radius
  COMMON/BUSSCOMMON1/ Radius

  X = Radius * COS(T)
  Y = Radius * SIN(T)
END SUBROUTINE CircleFun

SUBROUTINE EllipticalFun(T, X, Y)
  REAL, INTENT(IN) :: T
  REAL, INTENT(OUT) :: X, Y

  REAL A, B
  COMMON/BUSSCOMMON2/ A, B

  X = A * COS(T)
  Y = B * SIN(T)
END SUBROUTINE EllipticalFun

  END SUBROUTINE Parametric


TOPFRAME.HTM

This page uses frames, but your browser doesn't support them.


Top Frame

Simpleplot 2-16 Fortran Reference Manual