home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
maths
/
pgplot_1
/
HelpPGPLOT
< prev
next >
Wrap
Text File
|
1997-06-17
|
190KB
|
4,843 lines
%GRAREA
define a clipping window
SUBROUTINE GRAREA (IDENT,X0,Y0,XSIZE,YSIZE)
GRPCKG: Define a rectangular window in the current plotting area. All
graphics (except characters written with GRCHAR) will be blanked
outside this window. The default window is the full plotting area
defined by default or by GRSETS.
Arguments:
IDENT (input, integer): the plot identifier, returned by GROPEN.
X0, Y0 (input, real): the lower left corner of the window, in absolute
device coordinates.
XSIZE, YSIZE (input, real): width and height of the window in absolute
coordinates; if either is negative, the window will be reset to
the full plotting area.
%GRBPIC
begin picture
SUBROUTINE GRBPIC
GRPCKG (internal routine). Send a "begin picture" command to the
device driver, and send commands to set deferred attributes (color,
line width, etc.)
%GRCHAR
draw a string of characters
SUBROUTINE GRCHAR (IDENT,CENTER,ORIENT,ABSXY,X0,Y0,STRING)
GRPCKG: Draw a string of characters. The plot is not windowed
in the current subarea, but in the full plotting area.
Arguments:
IDENT (input, integer): plot identifier, as returned by GROPEN.
CENTER (input, logical): if .TRUE., the first character of the string
is centered at (X0,Y0); otherwise the bottom left corner of the
first character is placed at (X0,Y0).
ORIENT (input, real): the angle in degrees that the string is to make
with the horizontal, increasing anticlockwise.
ABSXY (input, logical): if .TRUE., (X0,Y0) are absolute device
coordinates; otherwise they are world coordinates (the scaling
transformation is applied).
X0, Y0 (input, real): position of first character (see CENTER).
STRING (input, character): the string of ASCII characters; control
characters 0-20 have special representations; all other
non-graphic characters are plotted as blank spaces.
(1-Feb-1983)
%GRCHR0
support routine for GRCHAR and GRMARK
SUBROUTINE GRCHR0 (WINDOW,CENTER,ORIENT,ABSXY,X0,Y0,STRING)
GRPCKG (internal routine): Support routine for GRCHAR and GRMARK.
Draw a string of characters.
Arguments:
WINDOW (input, logical): if .TRUE., the plot is windowed in the
current window.
CENTER (input, logical): if .TRUE., the first character of the string
is centered at (X0,Y0); otherwise the bottom left corner of the
first character is placed at (X0,Y0).
ORIENT (input, real): the angle in degrees that the string is to make
with the horizontal, increasing anticlockwise.
ABSXY (input, logical): if .TRUE., (X0,Y0) are absolute device
coordinates; otherwise they are world coordinates (the scaling
transformation is applied).
X0, Y0 (input, real): position of first character (see CENTER).
STRING (input, character): the string of ASCII characters; control
characters 0-20 have special representations; all other
non-graphic characters are plotted as blank spaces.
(1-Mar-1983)
%GRCHSZ
inquire default character attributes
SUBROUTINE GRCHSZ (IDENT,XSIZE,YSIZE,XSPACE,YSPACE)
GRPCKG: Obtain the default character attributes.
Arguments:
IDENT (input, integer): the plot identifier, returned by GROPEN.
XSIZE, YSIZE (output, real): the default character size
(absolute device units).
XSPACE, YSPACE (output, real): the default character spacing
(absolute units); XSPACE is the distance between the lower left
corners of adjacent characters in a plotted string; YSPACE
is the corresponding vertical spacing.
%GRCLIP
clip a point against clipping rectangle
SUBROUTINE GRCLIP (X,Y,XMIN,XMAX,YMIN,YMAX,C)
REAL X,Y
REAL XMIN,XMAX,YMIN,YMAX
INTEGER C
GRPCKG (internal routine): support routine for the clipping algorithm;
called from GRLIN0 only. C is a 4 bit code indicating the relationship
between point (X,Y) and the window boundaries; 0 implies the point is
within the window.
Arguments:
%GRCLOS
close graphics device
SUBROUTINE GRCLOS
GRPCKG: Close the open plot on the current device. Any pending output
is sent to the device, the device is released for other users or the
disk file is closed, and no further plotting is allowed on the device
without a new call to GROPEN.
Arguments: none.
%GRCLPL
clip line against clipping rectangle
SUBROUTINE GRCLPL (X0,Y0,X1,Y1,VIS)
GRPCKG (internal routine): Change the end-points of the line (X0,Y0)
(X1,Y1) to clip the line at the window boundary. The algorithm is
that of Cohen and Sutherland (ref: Newman & Sproull).
Arguments:
X0, Y0 (input/output, real): device coordinates of starting point
of line.
X1, Y1 (input/output, real): device coordinates of end point of line.
VIS (output, logical): .TRUE. if line lies wholly or partially
within the clipping rectangle; .FALSE. if it lies entirely
outside the rectangle.
%GRCTOI
convert character string to integer
INTEGER FUNCTION GRCTOI (S, I)
CHARACTER*(*) S
INTEGER I
GRCTOI: attempt to read an integer from a character string, and return
the result. No attempt is made to avoid integer overflow. A valid
integer is any sequence of decimal digits.
Returns:
GRCTOI : the value of the integer; if the first character
read is not a decimal digit, the value returned
is zero.
Arguments:
S (input) : character string to be parsed.
I (in/out) : on input, I is the index of the first character
in S to be examined; on output, either it points
to the next character after a valid integer, or
it is equal to LEN(S)+1.
%GRCURS
read cursor position
INTEGER FUNCTION GRCURS (IDENT,IX,IY,IXREF,IYREF,MODE,POSN,CH)
INTEGER IDENT, IX, IY, IXREF, IYREF, MODE, POSN
CHARACTER*(*) CH
GRPCKG: Read the cursor position and a character typed by the user.
The position is returned in absolute device coordinates (pixels).
GRCURS positions the cursor at the position specified, and
allows the user to move the cursor using the joystick or
arrow keys or whatever is available on the device. When he has
positioned the cursor, the user types a single character on his
keyboard; GRCURS then returns this character and the new cursor
position.
"Rubber band" feedback of cursor movement can be requested (although
it may not be supported on some devices). If MODE=1, a line from
the anchor point to the current cursor position is displayed as
the cursor is moved. If MODE=2, a rectangle with vertical and
horizontal sides and one vertex at the anchor point and the opposite
vertex at the current cursor position is displayed as the cursor is
moved.
Returns:
GRCURS (integer): 1 if the call was successful; 0 if the device
has no cursor or some other error occurs.
Arguments:
IDENT (integer, input): GRPCKG plot identifier (from GROPEN).
IX (integer, in/out): the device x-coordinate of the cursor.
IY (integer, in/out): the device y-coordinate of the cursor.
IXREF (integer, input): x-coordinate of anchor point.
IYREF (integer, input): y-coordinate of anchor point.
MODE (integer, input): type of rubber-band feedback.
CH (char, output): the character typed by the user; if the device
has no cursor or if some other error occurs, the value CHAR(0)
[ASCII NUL character] is returned.
%GRDAT2
character set definition (block data)
BLOCK DATA GRDAT2
GRPCKG (internal routine): Block data for to define the character set.
Arguments: none.
(1-Feb-1983)
%GRDOT0
draw a dot
SUBROUTINE GRDOT0 (X,Y)
GRPCKG (internal routine): Draw a single dot (pixel) at a specified
location.
Arguments:
X, Y (real, input): absolute device coordinates of the dot (these
are rounded to the nearest integer by GRDOT0).
%GRDOT1
draw dots
SUBROUTINE GRDOT1(POINTS, X, Y)
INTEGER POINTS
REAL X(POINTS), Y(POINTS)
GRPCKG (internal routine): Draw a set of dots.
Arguments:
POINTS (input, integer): the number of coordinate pairs.
X, Y (input, real arrays, dimensioned POINTS or greater): the
X and Y world coordinates of the points.
%GRDTYP
decode graphics device type string
INTEGER FUNCTION GRDTYP (TEXT)
GRPCKG (internal routine): determine graphics device type code from
type name. It compares the argument with the table of known device
types in common.
Argument:
TEXT (input, character): device type name, eg 'PRINTRONIX'; the name
may be abbreviated to uniqueness.
Returns:
GRDTYP (integer): the device type code, in the range 1 to
GRTMAX, zero if the type name is not recognised, or -1
if the type name is ambiguous.
%GREPIC
end picture
SUBROUTINE GREPIC
GRPCKG: End the current picture.
Arguments: none.
%GRESC
escape routine
SUBROUTINE GRESC (TEXT)
GRPCKG: "Escape" routine. The specified text is sent directly to the
selected graphics device, with no interpretation by GRPCKG. This
routine must be used with care; e.g., the programmer needs to know
the device type of the currently selected device, and the instructions
that that device can accept.
Arguments: none.
TEXT (input, character*(*)): text to be sent to the device.
15-May-1985 - new routine [TJP].
26-May-1987 - add GREXEC support [TJP].
19-Dec-1988 - start new page if necessary [TJP].
4-Feb-1997 - RBUF should be an array, not a scalar [TJP].
%GRETXT
erase text from graphics screen
SUBROUTINE GRETXT
GRPCKG: Erase the text screen. Some graphics devices have
two superimposed view surfaces, of which one is used for graphics and
the other for alphanumeric text. This routine erases the text
view surface without affecting the graphics view surface. It does
nothing if there is no text view surface associated with the device.
Arguments: none.
%GRFA
fill area (polygon)
SUBROUTINE GRFA (N,PX,PY)
INTEGER N
REAL PX(*), PY(*)
GRPCKG: FILL AREA: fill a polygon with solid color. The polygon
is defined by the (x,y) world coordinates of its N vertices. If
this is not a function supported by the device, shading is
accomplished by drawing horizontal lines spaced by 1 pixel. By
selecting color index 0, the interior of the polygon can be erased
on devices which permit it. The polygon need not be convex, but if
it is re-entrant (i.e., edges intersect other than at the vertices),
it may not be obvious which regions are "inside" the polygon. The
following rule is applied: for a given point, create a straight line
starting at the point and going to infinity. If the number of
intersections between the straight line and the polygon is odd, the
point is within the polygon; otherwise it is outside. If the
straight line passes a polygon vertex tangentially, the
intersection count is not affected. The only attribute which applies
to FILL AREA is color index: line-width and line-style are ignored.
There is a limitation on the complexity of the polygon: GFA will
fail if any horizontal line intersects more than 32 edges of the
polygon.
Arguments:
N (input, integer): the number of vertices of the polygon (at least
3).
PX, PY (input, real arrays, dimension at least N): world coordinates
of the N vertices of the polygon.
%GRFAO
format character string containing integers
SUBROUTINE GRFAO (FORMAT, L, STR, V1, V2, V3, V4)
CHARACTER*(*) FORMAT
INTEGER L
CHARACTER*(*) STR
INTEGER V1, V2, V3, V4
The input string FORMAT is copied to the output string STR with
the first occurrence of '#' replaced by the value of V1, the second
by the value of V2, etc. The length of the resulting string is
returned in L.
%GRGFIL
find data file
SUBROUTINE GRGFIL(TYPE, NAME)
CHARACTER*(*) TYPE, NAME
This routine encsapsulates the algorithm for finding the PGPLOT
run-time data files.
1. The binary font file: try the following in order:
file specified by PGPLOT_FONT
file "grfont.dat" in directory specified by PGPLOT_DIR
(with or without '/' appended)
file "grfont.dat" in directory /usr/local/pgplot/
2. The color-name database: try the following in order:
file specified by PGPLOT_RGB
file "rgb.txt" in directory specified by PGPLOT_DIR
(with or without '/' appended)
file "rgb.txt" in directory /usr/local/pgplot/
Arguments:
TYPE (input) : either 'FONT' or 'RGB' to request the corresponding
file.
NAME (output) : receives the file name.
%GRGRAY
gray-scale map of a 2D data array
SUBROUTINE GRGRAY (A, IDIM, JDIM, I1, I2, J1, J2,
1 FG, BG, PA, MININD, MAXIND, MODE)
INTEGER IDIM, JDIM, I1, I2, J1, J2, MININD, MAXIND, MODE
REAL A(IDIM,JDIM)
REAL FG, BG
REAL PA(6)
This is a device-dependent support routine for PGGRAY.
Draw gray-scale map of an array in current window. Array
values between FG and BG are shaded in gray levels determined
by linear interpolation. FG may be either less than or greater
than BG. Array values outside the range FG to BG are
shaded black or white as appropriate.
GRGRAY uses GRIMG0 on devices with enough color indices available.
Note that it changes the color table to gray-scale.
Otherwise in does a random dither with GRIMG3.
Arguments:
A (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
FG (input) : the array value which is to appear in
foreground color.
BG (input) : the array value which is to appear in
background color.
PA (input) : transformation matrix between array grid and
device coordinates (see GRCONT).
MODE (input) : transfer function.
%GRGTC0
obtain character digitization
SUBROUTINE GRGTC0 (CHAR,CENTER,POINTS,X,Y,MORE)
GRPCKG (internal routine): obtain character digitization.
(10-Feb-1983)
%GRIMG0
color image of a 2D data array
SUBROUTINE GRIMG0 (A, IDIM, JDIM, I1, I2, J1, J2,
1 A1, A2, PA, MININD, MAXIND, MODE)
INTEGER IDIM, JDIM, I1, I2, J1, J2, MININD, MAXIND, MODE
REAL A(IDIM,JDIM), A1, A2, PA(6)
This is a support routine for PGIMAG.
Arguments:
A (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
A1 (input) : the array value which is to appear in color
index MININD.
A2 (input) : the array value which is to appear in color
index MAXIND.
PA (input) : transformation matrix between array grid and
device coordinates.
MININD (input) : minimum color index to use.
MAXIND (input) : maximum color index to use.
MODE (input) : =0 for linear, =1 for logarithmic, =2 for
square-root mapping of array values to color
indices.
%GRIMG1
image of a 2D data array (image-primitive devices)
SUBROUTINE GRIMG1 (A, IDIM, JDIM, I1, I2, J1, J2,
1 A1, A2, PA, MININD, MAXIND, MODE)
INTEGER IDIM, JDIM, I1, I2, J1, J2, MININD, MAXIND, MODE
REAL A(IDIM,JDIM), A1, A2, PA(6)
(This routine is called by GRIMG0.)
%GRIMG2
image of a 2D data array (pixel-primitive devices)
SUBROUTINE GRIMG2 (A, IDIM, JDIM, I1, I2, J1, J2,
1 A1, A2, PA, MININD, MAXIND, MODE)
INTEGER IDIM, JDIM, I1, I2, J1, J2, MININD, MAXIND, MODE
REAL A(IDIM,JDIM)
REAL A1, A2
REAL PA(6)
(This routine is called by GRIMG0.)
%GRIMG3
gray-scale map of a 2D data array, using dither
SUBROUTINE GRIMG3 (A, IDIM, JDIM, I1, I2, J1, J2,
1 BLACK, WHITE, PA, MODE)
INTEGER IDIM, JDIM, I1, I2, J1, J2, MODE
REAL A(IDIM,JDIM)
REAL BLACK, WHITE
REAL PA(6)
%GRINIT
initialize GRPCKG
SUBROUTINE GRINIT
Initialize GRPCKG and read font file. Called by GROPEN, but may be
called explicitly if needed.
%GRINQLI
*obsolete routine*
SUBROUTINE GRINQLI (INTEN)
GRPCKG: obtain the line intensity of the current graphics device.
Obsolete routine.
Argument:
INTEN (integer, output): always returns 1.
%GRINQPEN
*obsolete routine*
SUBROUTINE GRINQPEN (IP)
GRPCKG: obtain the pen number of the current graphics device.
Obsolete routine.
Argument:
IP (integer, output): always receives 1.
%GRITOC
convert integer to character string
INTEGER FUNCTION GRITOC(INT, STR)
INTEGER INT
CHARACTER*(*) STR
Convert integer INT into (decimal) character string in STR.
%GRLDEV
list supported device types
SUBROUTINE GRLDEV
Support routine for PGLDEV.
Arguments: none
%GRLEN
inquire plotted length of character string
SUBROUTINE GRLEN (STRING, D)
GRPCKG: length of text string (absolute units)
%GRLIN0
draw a line
SUBROUTINE GRLIN0 (XP,YP)
GRPCKG (internal routine): draw a line from the current position to a
specified position, which becomes the new current position. This
routine takes care of clipping at the viewport boundary, dashed and
thick lines.
Arguments:
XP, YP (input, real): absolute device coordinates of the end-point of
the line.
%GRLIN1
draw a dashed line
SUBROUTINE GRLIN1 (X0,Y0,X1,Y1,RESET)
GRPCKG : dashed line. Generate a visible dashed line between points
(X0,Y0) and (X1,Y1) according to the dash pattern stored in common.
If RESET = .TRUE., the pattern will start from the beginning.
Otherwise, it will continue from its last position.
DASHED LINE PATTERN ARRAY CONTAINING LENGTHS OF
MARKS AND SPACES IN UNIT CUBE: GRPATN(*)
OFFSET IN CURRENT PATTERN SEGMENT: GRPOFF
CURRENT PATTERN SEGMENT NUMBER: GRIPAT
NUMBER OF PATTERN SEGMENTS: 8
%GRLIN2
draw a normal line
SUBROUTINE GRLIN2 (X0,Y0,X1,Y1)
GRPCKG : plot a visible line segment in absolute coords from
(X0,Y0) to (X1,Y1). The endpoints of the line segment are rounded
to the nearest integer and passed to the appropriate device-specific
routine. It is assumed that the entire line-segment lies within the
view surface, and that the physical device coordinates are
non-negative.
%GRLIN3
draw a thick line (multiple strokes)
SUBROUTINE GRLIN3 (X0,Y0,X1,Y1)
GRPCKG: draw a heavy line from (X0,Y0) to (X1,Y1) by making multiple
strokes. In order to simulate a thick pen, the line drawn has
circular, rather than square, end points. If this is not done,
thick letters and other figures have an abnormal and unpleasant
appearance.
Vocabulary:
LINEWT: the number of strokes required to draw the line; if
this is odd, one stroke will lie along the requested vector.
The nominal line thickness is (LINEWT-1)*0.005 in.
RSQURD: the square of the semi-line thickness.
(DX,DY): the vector length of the line.
(VX,VY): a vector of length 1 pixel in the direction of the line.
(VY,-VX): a vector of length 1 pixel perpendicular to (VX,VY).
OFF: the offset parallel to (VY,-VX) of the K'th stroke.
(VXK,VYK): the vector increment of the K'th stroke to allow for the
semi-circular terminal on the line.
(PXK,PYK): the vector offset of the K'th stroke perpendicular to the
line vector.
%GRLINA
draw a line (absolute, world coordinates)
SUBROUTINE GRLINA (X,Y)
GRPCKG: draw line from current position to a specified position.
Arguments:
X, Y (real, input): world coordinates of the end-point of the line.
%GRLINR
draw a line (relative, world coordinates)
SUBROUTINE GRLINR (DX,DY)
GRPCKG: draw a line from the current position by a specified
relative displacement.
Arguments:
DX, DY (real, input): the displacement in world coordinates: the pen
position is incremented by DX in x and DY in y.
%GRMARK
mark points with specified symbol
SUBROUTINE GRMARK (IDENT,CENTER,SYMBOL,ABSXY,POINTS,X,Y)
GRPCKG: mark a sequence of points with a specified symbol. The
plot is windowed in the current subarea.
Arguments:
IDENT (integer, input): plot identifier from GROPEN.
CENTER (input, logical): if .TRUE. the symbol is centered on the point,
otherwise the bottom left corner is placed at the point.
SYMBOL (byte or integer, input): code number of symbol in range 0-127
(ASCII character or special symbol); if SYMBOL is outside this
range, nothing is plotted.
ABSXY (logical, input): if .TRUE. (X,Y) are absolute (device)
coordinates; otherwise they are world coordinates and the
scaling transformation is applied.
POINTS (integer, input): the number of points; if POINTS is less than
or equal to 0, nothing is plotted.
X,Y (real arrays, dimension at least POINTS, input): the coordinate
pairs; if POINTS=1, these may be scalars instead of arrays.
(9-Mar-1983)
%GRMKER
draw graph markers
SUBROUTINE GRMKER (SYMBOL,ABSXY,N,X,Y)
GRPCKG: Draw a graph marker at a set of points in the current
window. Line attributes (color, intensity, and thickness)
apply to markers, but line-style is ignored. After the call to
GRMKER, the current pen position will be the center of the last
marker plotted.
Arguments:
SYMBOL (input, integer): the marker number to be drawn. Numbers
0-31 are special marker symbols; numbers 32-127 are the
corresponding ASCII characters (in the current font). If the
number is >127, it is taken to be a Hershey symbol number.
If -ve, a regular polygon is drawn.
ABSXY (input, logical): if .TRUE., the input corrdinates (X,Y) are
taken to be absolute device coordinates; if .FALSE., they are
taken to be world coordinates.
N (input, integer): the number of points to be plotted.
X, Y (input, real arrays, dimensioned at least N): the (X,Y)
coordinates of the points to be plotted.
%GRMOVA
move pen (absolute, world coordinates)
SUBROUTINE GRMOVA (X,Y)
GRPCKG: move the pen to a specified location.
Arguments:
X, Y (real, input): world coordinates of the new pen position.
%GRMOVR
move pen (relative, world coordinates)
SUBROUTINE GRMOVR (DX,DY)
GRPCKG: move the pen through a specified displacement.
Arguments:
DX, DY (real, input): the displacement in world coordinates: the pen
position is incremented by DX in x and DY in y.
%GRMSG
issue message to user
SUBROUTINE GRMSG (TEXT)
CHARACTER*(*) TEXT
Display a message on standard output.
Argument:
TEXT (input): text of message to be printed (the string
may not be blank).
%GROPEN
open device for graphics
INTEGER FUNCTION GROPEN (TYPE,DUMMY,FILE,IDENT)
INTEGER TYPE, DUMMY, IDENT
CHARACTER*(*) FILE
GRPCKG: assign a device and prepare for plotting. GROPEN must be
called before all other calls to GRPCKG routines.
Returns:
GROPEN (output, integer): 1 => success, any other value
indicates a failure (usually the value returned will
be a VMS error code). In the event of an error, a
message will be sent to the standard error unit.
Arguments:
TYPE (input, integer): default device type (integer code).
DUMMY (input, integer): not used at present.
FILE (input, character): plot specifier, of form 'device/type'.
IDENT (output, integer): plot identifier to be used in later
calls to GRPCKG.
1-Jun-1984 - [TJP].
2-Jul-1984 - change to call GRSLCT [TJP].
13-Jul-1984 - add device initialization [TJP].
23-Jul-1984 - add /APPEND qualifier.
19-Oct-1984 - add VV device [TJP].
26-Dec-1984 - obtain default file name from common [TJP].
29-Jan-1985 - add HP2648 device [KS/TJP].
5-Aug-1986 - add GREXEC support [AFT].
12-Oct-1986 - fix bug causing GREXEC to erase screen [AFT].
3-Jun-1987 - remove declaration of exit handler [TJP].
15-Dec-1988 - standardize [TJP].
25-Jun-1989 - remove code that removes spaces from the device name
[TJP].
26-Nov-1990 - [TJP].
5-Jan-1993 - [TJP].
1-Sep-1994 - store device capabilities in common for later use [TJP].
17-Apr-1995 - zero-length string fix [TJP].
6-Jun-1995 - explicitly initialize GRSTAT [TJP].
29-Apr-1996 - moved initialization into GRINIT [TJP].
%GRPAGE
end picture
SUBROUTINE GRPAGE
GRPCKG: Advance the plotting area to a new page. For video devices,
this amounts to erasing the screen; for hardcopy devices, the plot
buffer is written to the output file followed by a form-feed to
advance the paper to the start of the next page.
Arguments: none.
%GRPARS
parse device specification string
INTEGER FUNCTION GRPARS (SPEC,DEV,TYPE,APPEND)
CHARACTER*(*) SPEC, DEV
INTEGER TYPE
LOGICAL APPEND
GRPCKG: decode a device-specification; called by GROPEN.
Returns:
GRPARS (output): 1 if the device-specification is
acceptable; any other value indicates an error.
Arguments:
SPEC (input): the device specification.
DEV (output): device name or file spec.
TYPE (output): device type (integer code); 0 if no device
type is specified.
APPEND (output): .TRUE. if /APPEND specified, .FALSE. otherwise.
%GRPIXL
solid-fill multiple rectangular areas
SUBROUTINE GRPIXL (IA, IDIM, JDIM, I1, I2, J1, J2,
1 X1, X2, Y1, Y2)
INTEGER IDIM, JDIM, I1, I2, J1, J2
INTEGER IA(IDIM,JDIM)
REAL X1, X2, Y1, Y2
Determine the size of each rectangular element. If it is equal
to the device pen width and the device supports pixel primitives,
use pixel primitives. Otherwise, if the size is smaller than the
device pen width emulate pixel output by plotting points. If the
size is larger than the device pen width, emulate by outputting
solid-filled rectangles.
Arguments:
IA (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
X1, Y1 (input) : world coordinates of one corner of the output
region
X2, Y2 (input) : world coordinates of the opposite corner of the
output region
%GRPOCL
polygon clip
SUBROUTINE GRPOCL (N,PX,PY, EDGE, VAL, MAXOUT, NOUT, QX, QY)
INTEGER N, NOUT, EDGE, MAXOUT
REAL PX(*), PY(*), QX(*), QY(*)
REAL VAL
Clip a polygon against a rectangle: Sutherland-Hodgman algorithm.
this routine must be called four times to clip against each of the
edges of the rectangle in turn.
Arguments:
N (input, integer): the number of vertices of the polygon (at least
3).
PX, PY (input, real arrays, dimension at least N): world coordinates
of the N vertices of the input polygon.
EDGE (input, integer):
1: clip against left edge, X > XMIN=VAL
2: clip against right edge, X < XMAX=VAL
3: clip against bottom edge, Y > YMIN=VAL
4: clip against top edge, Y < YMIN=VAL
VAL (input, real): coordinate value of current edge.
MAXOUT (input, integer): maximum number of vertices allowed in
output polygon (dimension of QX, QY).
NOUT (output, integer): the number of vertices in the clipped polygon.
QX, QY (output, real arrays, dimension at least MAXOUT): world
coordinates of the NOUT vertices of the output polygon.
%GRPROM
prompt user before clearing screen
SUBROUTINE GRPROM
If the program is running under control of a terminal, display
message and wait for the user to type <CR> before proceeding.
Arguments:
none
%GRPXPO
Emulate pixel operations using points
SUBROUTINE GRPXPO (IA, IDIM, JDIM, I1, I2, J1, J2,
1 X1, X2, Y1, Y2)
INTEGER IDIM, JDIM, I1, I2, J1, J2
INTEGER IA(IDIM,JDIM)
REAL X1, X2, Y1, Y2
Arguments:
IA (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
X1, X2 (input) : the horizontal range of the output region
Y1, Y2 (input) : the vertical range of the output region
%GRPXPS
pixel dump for color or grey PostScript.
SUBROUTINE GRPXPS (IA, IDIM, JDIM, I1, I2, J1, J2,
: XMIN, XMAX, YMIN, YMAX)
INTEGER IDIM, JDIM, I1, I2, J1, J2
INTEGER IA(IDIM,JDIM)
REAL XMIN, XMAX, YMIN, YMAX
This routine is called by GRPIXL.
%GRPXPX
Perform pixel operations using pixel primitive
SUBROUTINE GRPXPX (IA, IDIM, JDIM, I1, I2, J1, J2, X, Y)
INTEGER IDIM, JDIM, I1, I2, J1, J2
INTEGER IA(IDIM,JDIM)
REAL X, Y
Arguments:
IA (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
X, Y (input) : the lower left corner of the output region
(device coordinates)
%GRPXRE
Emulate pixel operations using rectangles
SUBROUTINE GRPXRE (IA, IDIM, JDIM, I1, I2, J1, J2,
1 X1, X2, Y1, Y2)
INTEGER IDIM, JDIM, I1, I2, J1, J2
INTEGER IA(IDIM,JDIM)
REAL X1, X2, Y1, Y2
Arguments:
IA (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
X1, X2 (input) : the horizontal range of the output region
Y1, Y2 (input) : the vertical range of the output region
%GRQCAP
inquire device capabilities
SUBROUTINE GRQCAP (STRING)
CHARACTER*(*) STRING
GRPCKG: obtain the "device capabilities" string from the device
driver for the current device.
Arguments:
STRING (output, CHARACTER*(*)): receives the device capabilities
string.
%GRQCI
inquire current color index
SUBROUTINE GRQCI (C)
GRPCKG: obtain the color index of the current graphics device.
Argument:
C (integer, output): receives the current color index (0-255).
%GRQCOL
inquire color capability
SUBROUTINE GRQCOL (CI1, CI2)
INTEGER CI1, CI2
Query the range of color indices available on the current device.
Argument:
CI1 (output) : the minimum available color index. This will be
either 0 if the device can write in the
background color, or 1 if not.
CI2 (output) : the maximum available color index. This will be
1 if the device has no color capability, or a
larger number (e.g., 3, 7, 15, 255).
%GRQCR
inquire color representation
SUBROUTINE GRQCR (CI, CR, CG, CB)
INTEGER CI
REAL CR, CG, CB
Return the color representation (red, green, blue intensities)
currently associated with the specified color index. This may be
different from that requested on some devices.
Arguments:
CI (integer, input): color index.
CR, CG, CB (real, output): red, green, and blue intensities,
in range 0.0 to 1.0.
%GRQDEV
inquire current device
SUBROUTINE GRQDEV (DEVICE, L)
CHARACTER*(*) DEVICE
INTEGER L
Obtain the name of the current graphics device or file.
Argument:
DEVICE (output): receives the device name of the
currently active device.
L (output): number of characters in DEVICE, excluding trailing
blanks.
%GRQDT
inquire current device and type
SUBROUTINE GRQDT (DEVICE)
GRPCKG: obtain the name and type of the current graphics device.
Argument:
DEVICE (output, character): receives the device name and type of the
currently active device in the form 'device/type'; this is a
valid string for input to GROPEN.
%GRQFNT
inquire current font
SUBROUTINE GRQFNT (IF)
GRPCKG: obtain the font number of the current graphics device.
Argument:
IF (integer, output): receives the current font number (1-3).
%GRQLS
inquire current line-style
SUBROUTINE GRQLS (ISTYLE)
INTEGER ISTYLE
GRPCKG: obtain the line-style of the current graphics device.
Argument:
ISTYLE (output): receives the current line-style code.
%GRQLW
inquire current line width
SUBROUTINE GRQLW (IWIDTH)
INTEGER IWIDTH
GRPCKG: obtain the line-width of the current graphics device.
Argument:
IWIDTH (output): receives the current line-width.
%GRQPOS
return current pen position (absolute, world coordinates)
SUBROUTINE GRQPOS(X,Y)
GRQPOS: returns the current pen position in absolute, world
coordinates.
Arguments:
X, Y (real, output): world coordinates of the pen position.
%GRQTXT
get text bounding box
SUBROUTINE GRQTXT (ORIENT,X0,Y0,STRING, XBOX, YBOX)
GRPCKG: get the bounding box of a string drawn by GRTEXT.
%GRQTYP
inquire current device type
SUBROUTINE GRQTYP (TYPE,INTER)
CHARACTER*(*) TYPE
LOGICAL INTER
GRPCKG: obtain the device type of the currently selected graphics
device, and determine whether or not it is an interactive device.
Arguments:
TYPE (output, CHARACTER*(*)): receives the device type, as a
character string, eg 'PRINTRONIX', 'TRILOG', 'VERSATEC',
'TEK4010', 'TEK4014', 'GRINNELL', or 'VT125'. The character
string should have a length of at least 8 to ensure that the
type is unique.
INTER (output, LOGICAL): receives the value .TRUE. if the device is
interactive, .FALSE. otherwise.
%GRQUIT
report a fatal error and abort execution
SUBROUTINE GRQUIT (TEXT)
CHARACTER*(*) TEXT
Report a fatal error (via GRWARN) and exit program.
This routine should be called in the event of an unrecoverable
PGPLOT error.
Argument:
TEXT (input): text of message to be sent to GRWARN.
%GRREC0
fill a rectangle (device coordinates)
SUBROUTINE GRREC0 (X0,Y0,X1,Y1)
REAL X0, Y0, X1, Y1
GRPCKG: Fill a rectangle with solid color. The rectangle
is defined by the (x,y) device coordinates of its lower left and
upper right corners; the edges are parallel to the coordinate axes.
X0 is guaranteed to be <= X1 and Y0 <= Y1. The rectangle possible
extends beyond the clipping boundaries
Arguments:
X0, Y0 (input, real): device coordinates of one corner of the
rectangle.
X1, Y1 (input, real): device coordinates of the opposite corner of
the rectangle.
%GRRECT
fill a rectangle
SUBROUTINE GRRECT (X0,Y0,X1,Y1)
REAL X0, Y0, X1, Y1
GRPCKG: Fill a rectangle with solid color. The rectangle
is defined by the (x,y) world coordinates of its lower left and upper
right corners; the edges are parallel to the coordinate axes.
Arguments:
X0, Y0 (input, real): world coordinates of one corner of the
rectangle.
X1, Y1 (input, real): world coordinates of the opposite corner of the
rectangle.
%GRSCI
set color index
SUBROUTINE GRSCI (IC)
GRPCKG: Set the color index for subsequent plotting. Calls to GRSCI
are ignored for monochrome devices. The default color index is 1,
usually white on a black background for video displays or black on a
white background for printer plots. The color index is an integer in
the range 0 to a device-dependent maximum. Color index 0 corresponds
to the background color; lines may be "erased" by overwriting them
with color index 0.
Color indices 0-7 are predefined as follows: 0 = black (background
color), 1 = white (default), 2 = red, 3 = green, 4 = blue, 5 = cyan
(blue + green), 6 = magenta (red + blue), 7 = yellow (red + green).
The assignment of colors to color indices can be changed with
subroutine GRSCR (set color representation).
Argument:
IC (integer, input): the color index to be used for subsequent
plotting on the current device (in range 0-255). If the
index exceeds the device-dependent maximum, the result is
device-dependent.
%GRSCR
set color representation
SUBROUTINE GRSCR (CI, CR, CG, CB)
INTEGER CI
REAL CR, CG, CB
GRPCKG: SET COLOUR REPRESENTATION -- define the colour to be
associated with a colour index. Ignored for devices which do not
support variable colour or intensity. On monochrome output
devices (e.g. VT125 terminals with monochrome monitors), the
monochrome intensity is computed from the specified Red, Green, Blue
intensities as 0.30*R + 0.59*G + 0.11*B, as in US color television
systems, NTSC encoding. Note that most devices do not have an
infinite range of colours or monochrome intensities available;
the nearest available colour is used.
Arguments:
CI (integer, input): colour index. If the colour index is outside the
range available on the device, the call is ignored. Colour
index 0 applies to the background colour.
CR, CG, CB (real, input): red, green, and blue intensities,
in range 0.0 to 1.0.
%GRSETC
set character size
SUBROUTINE GRSETC (IDENT,XSIZE)
GRPCKG : change the character size (user-callable routine).
Input: IDENT : plot identifier
XSIZE : the new character width. The character height
and spacing will be scaled by the same factor.
If XSIZE is negative or zero, the character size
will be set to the default size.
%GRSETLI
*obsolete routine*
SUBROUTINE GRSETLI (IN)
GRPCKG: Set the line intensity for subsequent plotting on the current
device. *** OBSOLETE ROUTINE *** Intensity is now set with GRSCI
and GRSCR. For compatibility, GRSETLI now sets color zero if its
argument is 0, and resets the previous color if its argument is
non-zero.
Argument:
IN (integer, input): the intensity to be used for subsequent
plotting on the current device (in range 0-3).
%GRSETPEN
*obsolete routine*
SUBROUTINE GRSETPEN
GRPCKG: Set the pen number for subsequent plotting. Obsolete
routine: ignored.
%GRSETS
change size of view surface
SUBROUTINE GRSETS (IDENT,XSIZE,YSIZE)
GRPCKG : change size of plotting area. The requested dimensions
will be reduced to the absolute maximum of the plot device if
necessary.
Arguments:
IDENT (input, integer): plot identifier from GROPEN.
XSIZE (input, real): new x dimension of plot area (absolute
units); if less than zero, the default dimension
will be used.
YSIZE (input, real): new y dimension of plot area (absolute
units); if less than zero, the default dimension
will be used.
%GRSFNT
set text font
SUBROUTINE GRSFNT (IF)
INTEGER IF
GRPCKG: Set the font for subsequent text plotting.
The default font is 1 ("Normal" font); others available are 2
("Roman"), 3 ("Italic"), and 4 ("Script").
Argument:
IF (input): the font number to be used for subsequent
text plotting on the current device (in range 1-4).
%GRSIZE
inquire device size and resolution
SUBROUTINE GRSIZE (IDENT,XSZDEF,YSZDEF,XSZMAX,YSZMAX,
1 XPERIN,YPERIN)
GRPCKG : obtain device parameters (user-callable routine).
%GRSKPB
skip blanks in character string
SUBROUTINE GRSKPB (S, I)
CHARACTER*(*) S
INTEGER I
GRSKPB: increment I so that it points to the next non-blank
character in string S. 'Blank' characters are space and tab (ASCII
character value 9).
Arguments:
S (input) : character string to be parsed.
I (in/out) : on input, I is the index of the first character
in S to be examined; on output, either it points
to the next non-blank character, or it is equal
to LEN(S)+1 (if all the rest of the string is
blank).
%GRSLCT
select active output device
SUBROUTINE GRSLCT (IDENT)
GRPCKG: Check that IDENT is a valid plot identifier, and select the
corresponding plot as the current plot. All subsequent plotting will
be directed to this device until the assignment is changed by another
call to GRSLCT.
Argument:
IDENT (input, integer): the identifier of the plot to be selected, as
returned by GROPEN.
%GRSLS
set line style
SUBROUTINE GRSLS (IS)
INTEGER IS
GRPCKG: Set the line style for subsequent plotting on the current
device. The different line styles are generated in hardware on
some devices and by GRPCKG software for the other devices. Five
different line styles are available, with the following codes:
1 (full line), 2 (dashed), 3 (dot-dash-dot-dash), 4 (dotted),
5 (dash-dot-dot-dot). The default is 1 (normal full line). Line
style is ignored when drawing characters, which are always drawn with
a full line.
Argument:
IS (input, integer): the line-style code for subsequent plotting on
the current device (in range 1-5).
%GRSLW
set line width
SUBROUTINE GRSLW (IW)
INTEGER IW
GRPCKG: Set the line width for subsequent plotting on the current
device. If the hardware does not support thick lines, they are
simulated by tracing each line with multiple strokes offset in the
direction perpendicular to the line. The line width is specified by
the number of strokes to be used, which must be in the range 1-201.
The actual line width obtained depends on the device resolution.
If the hardware does support thick lines, the width of the line
is approximately 0.005 inches times the value of argument IW.
Argument:
IW (integer, input): the number of strokes to be used for subsequent
plotting on the current device (in range 1-201).
%GRSYDS
decode character string into list of symbol numbers
SUBROUTINE GRSYDS (SYMBOL, NSYMBS, TEXT, FONT)
INTEGER SYMBOL(*), NSYMBS, FONT
CHARACTER*(*) TEXT
Given a character string, this routine returns a list of symbol
numbers to be used to plot it. It is responsible for interpreting
all escape sequences. Negative `symbol numbers' are inserted in the
list to represent pen movement. The following escape sequences are
defined (the letter following the \ may be either upper or lower
case):
\u : up one level (returns -1)
\d : down one level (returns -2)
\b : backspace (returns -3)
\A : (upper case only) Angstrom symbol, roman font
\x : multiplication sign
\. : centered dot
\\ : \, returns the code for backslash
\gx : greek letter corresponding to roman letter x
\fn : switch to Normal font
\fr : switch to Roman font
\fi : switch to Italic font
\fs : switch to Script font
\mn or \mnn : graph marker number n or nn (1 or 2 digits)
\(nnn) : Hershey symbol number nnn (any number of digits)
Arguments:
SYMBOL (output) : receives the list of symbol numers.
NSYMBS (output) : receives the actual number of symbols specified
by the string; it is assumed that the dimension of
SYMBOL is big enough (not less than LEN(TEXT)).
TEXT (input) : the text string to be decoded.
FONT (input) : the font number (1..4) to be used for decoding the
string (this can be overridden by an escape
sequence within the string).
%GRSYMK
convert character number into symbol number
SUBROUTINE GRSYMK (CODE, FONT, SYMBOL)
INTEGER CODE, FONT, SYMBOL
This routine returns the Hershey symbol number (SYMBOL) corresponding
to ASCII code CODE in font FONT.
Characters 0-31 are the same in all fonts, and are the standard
graph markers. Characters 32-127 are standard representations of
the ASCII codes. Characters 128-255 are reserved for the upper
half of the ISO Latin-1 character set. Characters 256-303 are
used for the greek alphabet.
Arguments:
CODE (input) : the extended ASCII code number.
FONT (input) : the font to be used 31 (range 1-4).
SYMBOL (output) : the number of the symbol to be plotted.
%GRTERM
flush buffer to output device
SUBROUTINE GRTERM
GRPCKG: flush the buffer associated with the current plot. GRTERM
should be called only when it is necessary to make sure that all the
graphics created up to this point in the program are visible on the
device, e.g., before beginning a dialog with the user. GRTERM has no
effect on hardcopy devices.
Arguments: none.
%GRTEXT
draw text
SUBROUTINE GRTEXT (CENTER,ORIENT,ABSXY,X0,Y0,STRING)
GRPCKG: Write a text string using the high-quality character set.
The text is NOT windowed in the current viewport, but may extend over
the whole view surface. Line attributes (color, intensity thickness)
apply to text, but line-style is ignored. The current pen position
after a call to GRTEXT is undefined.
Arguments:
STRING (input, character): the character string to be plotted. This
may include standard escape-sequences to represent non-ASCII
characters and special commands. The number of characters in
STRING (i.e., LEN(STRING)) should not exceed 256.
%GRTOUP
convert character string to upper case
SUBROUTINE GRTOUP (DST, SRC)
CHARACTER*(*) DST, SRC
GRPCKG (internal routine): convert character string to upper case.
Arguments:
DST (output) : output string (upper case).
SRC (input) : input string to be converted.
%GRTRAN
define scaling transformation
SUBROUTINE GRTRAN (IDENT,XORG,YORG,XSCALE,YSCALE)
GRPCKG (internal routine): Define scaling transformation.
Arguments:
IDENT (input, integer): plot identifier, as returned by GROPEN.
XORG, YORG, XSCALE, YSCALE (input, real): parameters of the scaling
transformation. This is defined by:
XABS = XORG + XWORLD * XSCALE,
YABS = YORG + YWORLD * YSCALE,
where (XABS, YABS) are the absolute device coordinates
corresponding to world coordinates (XWORLD, YWORLD).
%GRTRN0
define scaling transformation
SUBROUTINE GRTRN0 (XORG,YORG,XSCALE,YSCALE)
GRPCKG (internal routine): Define scaling transformation for current
device (equivalent to GRTRAN without device selection).
Arguments:
XORG, YORG, XSCALE, YSCALE (input, real): parameters of the scaling
transformation. This is defined by:
XABS = XORG + XWORLD * XSCALE,
YABS = YORG + YWORLD * YSCALE,
where (XABS, YABS) are the absolute device coordinates
corresponding to world coordinates (XWORLD, YWORLD).
%GRTXY0
convert world coordinates to device coordinates
SUBROUTINE GRTXY0 (ABSXY,X,Y,XT,YT)
GRPCKG (internal routine): Convert scaled position to absolute
position.
Arguments:
ABSXY (input, logical): if FALSE, convert world coordinates to
absolute device coordinates; if TRUE, return the input
coordinates unchanged.
X, Y (input, real): input coordinates (absolute or world, depending
on setting of ABSXY).
XT, YT (output, real): output absolute device coordinates.
%GRVCT0
draw line segments or dots
SUBROUTINE GRVCT0 (MODE,ABSXY,POINTS,X,Y)
GRPCKG (internal routine): Draw a line or a set of dots. This
is the same as GRVECT, but without device selection. It can be used to
draw a single line-segment, a continuous series of line segments, or
one or more single dots (pixels).
Arguments:
MODE (input, integer): if MODE=1, a series of line segments is drawn,
starting at the current position, moving to X(1),Y(1), ... and
ending at X(POINTS),Y(POINTS).
If MODE=2, the first vector is blanked, so the line starts at
X(1),Y(1).
If MODE=3, a single dot is placed at each coordinate pair, with
no connecting lines.
ABSXY (input, logical): if TRUE, the coordinates are absolute device
coordinates; if FALSE, they are world coordinates and the
scaling transformation is applied.
POINTS (input, integer): the number of coordinate pairs.
X, Y (input, real arrays, dimensioned POINTS or greater): the
X and Y coordinates of the points.
%GRVECT
draw line segments or dots
SUBROUTINE GRVECT (IDENT,MODE,ABSXY,POINTS,X,Y)
GRPCKG: Draw a line or a set of dots. This routine can be used to
draw a single line-segment, a continuous series of line segments, or
one or more single dots (pixels).
Arguments:
IDENT (input, integer): the plot identifier, as returned by GROPEN.
MODE (input, integer): if MODE=1, a series of line segments is drawn,
starting at the current position, moving to X(1),Y(1), ... and
ending at X(POINTS),Y(POINTS).
If MODE=2, the first vector is blanked, so the line starts at
X(1),Y(1).
If MODE=3, a single dot is placed at each coordinate pair, with
no connecting lines.
ABSXY (input, logical): if TRUE, the coordinates are absolute device
coordinates; if FALSE, they are world coordinates and the
scaling transformation is applied.
POINTS (input, integer): the number of coordinate pairs.
X, Y (input, real arrays, dimensioned POINTS or greater): the
X and Y coordinates of the points.
%GRWARN
issue warning message to user
SUBROUTINE GRWARN (TEXT)
CHARACTER*(*) TEXT
Report a warning message on standard output, with prefix "%PGPLOT, ".
Argument:
TEXT (input): text of message to be printed (the string
may not be blank).
%GRXHLS
convert RGB color to HLS color
SUBROUTINE GRXHLS (R,G,B,H,L,S)
GRPCKG: Convert a color specified in the RGB color model to one in
the HLS model. This is a support routine: no graphics I/O occurs.
The inverse transformation is accomplished with routine GRXRGB.
Reference: SIGGRAPH Status Report of the Graphic Standards Planning
Committee, Computer Graphics, Vol.13, No.3, Association for
Computing Machinery, New York, NY, 1979.
Arguments:
R,G,B (real, input): red, green, blue color coordinates, each in the
range 0.0 to 1.0. Input outside this range causes HLS = (0,1,0)
[white] to be returned.
H,L,S (real, output): hue (0 to 360), lightness (0 to 1.0), and
saturation (0 to 1.0).
%GRXRGB
convert HLS color to RGB color
SUBROUTINE GRXRGB (H,L,S,R,G,B)
GRPCKG: Convert a color specified in the HLS color model to one in
the RGB model. This is a support routine: no graphics I/O occurs.
The inverse transformation is accomplished with routine GRXHLS.
Reference: SIGGRAPH Status Report of the Graphic Standards Planning
Committee, Computer Graphics, Vol.13, No.3, Association for
Computing Machinery, New York, NY, 1979.
Arguments:
H,L,S (real, input): hue (0 to 360), lightness (0 to 1.0), and
saturation (0 to 1.0).
R,G,B (real, output): red, green, blue color coordinates, each in the
range 0.0 to 1.0.
%PGADVANCE
non-standard alias for PGPAGE
SUBROUTINE PGADVANCE
See description of PGPAGE.
%PGARRO
draw an arrow
SUBROUTINE PGARRO (X1, Y1, X2, Y2)
REAL X1, Y1, X2, Y2
Draw an arrow from the point with world-coordinates (X1,Y1) to
(X2,Y2). The size of the arrowhead at (X2,Y2) is determined by
the current character size set by routine PGSCH. The default size
is 1/40th of the smaller of the width or height of the view surface.
The appearance of the arrowhead (shape and solid or open) is
controlled by routine PGSAH.
Arguments:
X1, Y1 (input) : world coordinates of the tail of the arrow.
X2, Y2 (input) : world coordinates of the head of the arrow.
%PGASK
control new page prompting
SUBROUTINE PGASK (FLAG)
LOGICAL FLAG
Change the ``prompt state'' of PGPLOT. If the prompt state is
ON, PGPAGE will type ``Type RETURN for next page:'' and will wait
for the user to type a carriage-return before starting a new page.
The initial prompt state (after the device has been opened) is ON
for interactive devices. Prompt state is always OFF for
non-interactive devices.
Arguments:
FLAG (input) : if .TRUE., and if the device is an interactive
device, the prompt state will be set to ON. If
.FALSE., the prompt state will be set to OFF.
%PGAXIS
draw an axis
SUBROUTINE PGAXIS (OPT, X1, Y1, X2, Y2, V1, V2, STEP, NSUB,
: DMAJL, DMAJR, FMIN, DISP, ORIENT)
CHARACTER*(*) OPT
REAL X1, Y1, X2, Y2, V1, V2, STEP, DMAJL, DMAJR, FMIN, DISP
REAL ORIENT
INTEGER NSUB
Draw a labelled graph axis from world-coordinate position (X1,Y1) to
(X2,Y2).
Normally, this routine draws a standard LINEAR axis with equal
subdivisions. The quantity described by the axis runs from V1 to V2;
this may be, but need not be, the same as X or Y.
If the 'L' option is specified, the routine draws a LOGARITHMIC axis.
In this case, the quantity described by the axis runs from 10**V1 to
10**V2. A logarithmic axis always has major, labeled, tick marks
spaced by one or more decades. If the major tick marks are spaced
by one decade (as specified by the STEP argument), then minor
tick marks are placed at 2, 3, .., 9 times each power of 10;
otherwise minor tick marks are spaced by one decade. If the axis
spans less than two decades, numeric labels are placed at 1, 2, and
5 times each power of ten.
If the axis spans less than one decade, or if it spans many decades,
it is preferable to use a linear axis labeled with the logarithm of
the quantity of interest.
Arguments:
OPT (input) : a string containing single-letter codes for
various options. The options currently
recognized are:
L : draw a logarithmic axis
N : write numeric labels
1 : force decimal labelling, instead of automatic
choice (see PGNUMB).
2 : force exponential labelling, instead of
automatic.
X1, Y1 (input) : world coordinates of one endpoint of the axis.
X2, Y2 (input) : world coordinates of the other endpoint of the axis.
V1 (input) : axis value at first endpoint.
V2 (input) : axis value at second endpoint.
STEP (input) : major tick marks are drawn at axis value 0.0 plus
or minus integer multiples of STEP. If STEP=0.0,
a value is chosen automatically.
NSUB (input) : minor tick marks are drawn to divide the major
divisions into NSUB equal subdivisions (ignored if
STEP=0.0). If NSUB <= 1, no minor tick marks are
drawn. NSUB is ignored for a logarithmic axis.
DMAJL (input) : length of major tick marks drawn to left of axis
(as seen looking from first endpoint to second), in
units of the character height.
DMAJR (input) : length of major tick marks drawn to right of axis,
in units of the character height.
FMIN (input) : length of minor tick marks, as fraction of major.
DISP (input) : displacement of baseline of tick labels to
right of axis, in units of the character height.
ORIENT (input) : orientation of label text, in degrees; angle between
baseline of text and direction of axis (0-360°).
%PGBAND
read cursor position, with anchor
INTEGER FUNCTION PGBAND (MODE, POSN, XREF, YREF, X, Y, CH)
INTEGER MODE, POSN
REAL XREF, YREF, X, Y
CHARACTER*(*) CH
Read the cursor position and a character typed by the user.
The position is returned in world coordinates. PGBAND positions
the cursor at the position specified (if POSN=1), allows the user to
move the cursor using the mouse or arrow keys or whatever is available
on the device. When he has positioned the cursor, the user types a
single character on the keyboard; PGBAND then returns this
character and the new cursor position (in world coordinates).
Some interactive devices offer a selection of cursor types,
implemented as thin lines that move with the cursor, but without
erasing underlying graphics. Of these types, some extend between
a stationary anchor-point at XREF,YREF, and the position of the
cursor, while others simply follow the cursor without changing shape
or size. The cursor type is specified with one of the following MODE
values. Cursor types that are not supported by a given device, are
treated as MODE=0.
-- If MODE=0, the anchor point is ignored and the routine behaves
like PGCURS.
-- If MODE=1, a straight line is drawn joining the anchor point
and the cursor position.
-- If MODE=2, a hollow rectangle is extended as the cursor is moved,
with one vertex at the anchor point and the opposite vertex at the
current cursor position; the edges of the rectangle are horizontal
and vertical.
-- If MODE=3, two horizontal lines are extended across the width of
the display, one drawn through the anchor point and the other
through the moving cursor position. This could be used to select
a Y-axis range when one end of the range is known.
-- If MODE=4, two vertical lines are extended over the height of
the display, one drawn through the anchor point and the other
through the moving cursor position. This could be used to select an
X-axis range when one end of the range is known.
-- If MODE=5, a horizontal line is extended through the cursor
position over the width of the display. This could be used to select
an X-axis value such as the start of an X-axis range. The anchor point
is ignored.
-- If MODE=6, a vertical line is extended through the cursor
position over the height of the display. This could be used to select
a Y-axis value such as the start of a Y-axis range. The anchor point
is ignored.
-- If MODE=7, a cross-hair, centered on the cursor, is extended over
the width and height of the display. The anchor point is ignored.
Returns:
PGBAND : 1 if the call was successful; 0 if the device
has no cursor or some other error occurs.
Arguments:
MODE (input) : display mode (0, 1, ..7: see above).
POSN (input) : if POSN=1, PGBAND attempts to place the cursor
at point (X,Y); if POSN=0, it leaves the cursor
at its current position. (On some devices this
request may be ignored.)
XREF (input) : the world x-coordinate of the anchor point.
YREF (input) : the world y-coordinate of the anchor point.
X (in/out) : the world x-coordinate of the cursor.
Y (in/out) : the world y-coordinate of the cursor.
CH (output) : the character typed by the user; if the device has
no cursor or if some other error occurs, the value
CHAR(0) [ASCII NUL character] is returned.
Note: The cursor coordinates (X,Y) may be changed by PGBAND even if
the device has no cursor or if the user does not move the cursor.
Under these circumstances, the position returned in (X,Y) is that of
the pixel nearest to the requested position.
%PGBBUF
begin batch of output (buffer)
SUBROUTINE PGBBUF
Begin saving graphical output commands in an internal buffer; the
commands are held until a matching PGEBUF call (or until the buffer
is emptied by PGUPDT). This can greatly improve the efficiency of
PGPLOT. PGBBUF increments an internal counter, while PGEBUF
decrements this counter and flushes the buffer to the output
device when the counter drops to zero. PGBBUF and PGEBUF calls
should always be paired.
Arguments: none
%PGBEG
open a graphics device
INTEGER FUNCTION PGBEG (UNIT, FILE, NXSUB, NYSUB)
INTEGER UNIT
CHARACTER*(*) FILE
INTEGER NXSUB, NYSUB
Note: new programs should use PGOPEN rather than PGBEG. PGOPEN
is retained for compatibility with existing programs. Unlike PGOPEN,
PGBEG closes any graphics devices that are already open, so it
cannot be used to open devices to be used in parallel.
PGBEG opens a graphical device or file and prepares it for
subsequent plotting. A device must be opened with PGBEG or PGOPEN
before any other calls to PGPLOT subroutines for the device.
If any device is already open for PGPLOT output, it is closed before
the new device is opened.
Returns:
PGBEG : a status return value. A value of 1 indicates
successful completion, any other value indicates
an error. In the event of error a message is
written on the standard error unit.
To test the return value, call
PGBEG as a function, eg IER=PGBEG(...); note
that PGBEG must be declared INTEGER in the
calling program. Some Fortran compilers allow
you to use CALL PGBEG(...) and discard the
return value, but this is not standard Fortran.
Arguments:
UNIT (input) : this argument is ignored by PGBEG (use zero).
FILE (input) : the "device specification" for the plot device.
(For explanation, see description of PGOPEN.)
NXSUB (input) : the number of subdivisions of the view surface in
X (>0 or <0).
NYSUB (input) : the number of subdivisions of the view surface in
Y (>0).
PGPLOT puts NXSUB x NYSUB graphs on each plot
page or screen; when the view surface is sub-
divided in this way, PGPAGE moves to the next
panel, not the next physical page. If
NXSUB > 0, PGPLOT uses the panels in row
order; if <0, PGPLOT uses them in column order.
%PGBEGIN
non-standard alias for PGBEG
INTEGER FUNCTION PGBEGIN (UNIT, FILE, NXSUB, NYSUB)
INTEGER UNIT
CHARACTER*(*) FILE
INTEGER NXSUB, NYSUB
See description of PGBEG.
%PGBIN
histogram of binned data
SUBROUTINE PGBIN (NBIN, X, DATA, CENTER)
INTEGER NBIN
REAL X(*), DATA(*)
LOGICAL CENTER
Plot a histogram of NBIN values with X(1..NBIN) values along
the ordinate, and DATA(1...NBIN) along the abscissa. Bin width is
spacing between X values.
Arguments:
NBIN (input) : number of values.
X (input) : abscissae of bins.
DATA (input) : data values of bins.
CENTER (input) : if .TRUE., the X values denote the center of the
bin; if .FALSE., the X values denote the lower
edge (in X) of the bin.
%PGBOX
draw labeled frame around viewport
SUBROUTINE PGBOX (XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB)
CHARACTER*(*) XOPT, YOPT
REAL XTICK, YTICK
INTEGER NXSUB, NYSUB
Annotate the viewport with frame, axes, numeric labels, etc.
PGBOX is called by on the user's behalf by PGENV, but may also be
called explicitly.
Arguments:
XOPT (input) : string of options for X (horizontal) axis of
plot. Options are single letters, and may be in
any order (see below).
XTICK (input) : world coordinate interval between major tick marks
on X axis. If XTICK=0.0, the interval is chosen by
PGBOX, so that there will be at least 3 major tick
marks along the axis.
NXSUB (input) : the number of subintervals to divide the major
coordinate interval into. If XTICK=0.0 or NXSUB=0,
the number is chosen by PGBOX.
YOPT (input) : string of options for Y (vertical) axis of plot.
Coding is the same as for XOPT.
YTICK (input) : like XTICK for the Y axis.
NYSUB (input) : like NXSUB for the Y axis.
Options (for parameters XOPT and YOPT):
A : draw Axis (X axis is horizontal line Y=0, Y axis is vertical
line X=0).
B : draw bottom (X) or left (Y) edge of frame.
C : draw top (X) or right (Y) edge of frame.
G : draw Grid of vertical (X) or horizontal (Y) lines.
I : Invert the tick marks; ie draw them outside the viewport
instead of inside.
L : label axis Logarithmically (see below).
N : write Numeric labels in the conventional location below the
viewport (X) or to the left of the viewport (Y).
P : extend ("Project") major tick marks outside the box (ignored if
option I is specified).
M : write numeric labels in the unconventional location above the
viewport (X) or to the right of the viewport (Y).
T : draw major Tick marks at the major coordinate interval.
S : draw minor tick marks (Subticks).
V : orient numeric labels Vertically. This is only applicable to Y.
The default is to write Y-labels parallel to the axis.
1 : force decimal labelling, instead of automatic choice (see PGNUMB).
2 : force exponential labelling, instead of automatic.
To get a complete frame, specify BC in both XOPT and YOPT.
Tick marks, if requested, are drawn on the axes or frame
or both, depending which are requested. If none of ABC is specified,
tick marks will not be drawn. When PGENV calls PGBOX, it sets both
XOPT and YOPT according to the value of its parameter AXIS:
-1: 'BC', 0: 'BCNST', 1: 'ABCNST', 2: 'ABCGNST'.
For a logarithmic axis, the major tick interval is always 1.0. The
numeric label is 10**(x) where x is the world coordinate at the
tick mark. If subticks are requested, 8 subticks are drawn between
each major tick at equal logarithmic intervals.
To label an axis with time (days, hours, minutes, seconds) or
angle (degrees, arcmin, arcsec), use routine PGTBOX.
%PGCIRC
draw a circle, using fill-area attributes
SUBROUTINE PGCIRC (XCENT, YCENT, RADIUS)
REAL XCENT, YCENT, RADIUS
Draw a circle. The action of this routine depends
on the setting of the Fill-Area Style attribute. If Fill-Area Style
is SOLID (the default), the interior of the circle is solid-filled
using the current Color Index. If Fill-Area Style is HOLLOW, the
outline of the circle is drawn using the current line attributes
(color index, line-style, and line-width).
Arguments:
XCENT (input) : world x-coordinate of the center of the circle.
YCENT (input) : world y-coordinate of the center of the circle.
RADIUS (input) : radius of circle (world coordinates).
%PGCLOS
close the selected graphics device
SUBROUTINE PGCLOS
Close the currently selected graphics device. After the device has
been closed, either another open device must be selected with PGSLCT
or another device must be opened with PGOPEN before any further
plotting can be done. If the call to PGCLOS is omitted, some or all
of the plot may be lost.
[This routine was added to PGPLOT in Version 5.1.0. Older programs
use PGEND instead.]
Arguments: none
%PGCONB
contour map of a 2D data array, with blanking
SUBROUTINE PGCONB (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR,
1 BLANK)
INTEGER IDIM, JDIM, I1, I2, J1, J2, NC
REAL A(IDIM,JDIM), C(*), TR(6), BLANK
Draw a contour map of an array. This routine is the same as PGCONS,
except that array elements that have the "magic value" defined by
argument BLANK are ignored, making gaps in the contour map. The
routine may be useful for data measured on most but not all of the
points of a grid.
Arguments:
A (input) : data array.
IDIM (input) : first dimension of A.
JDIM (input) : second dimension of A.
I1,I2 (input) : range of first index to be contoured (inclusive).
J1,J2 (input) : range of second index to be contoured (inclusive).
C (input) : array of contour levels (in the same units as the
data in array A); dimension at least NC.
NC (input) : number of contour levels (less than or equal to
dimension of C). The absolute value of this
argument is used (for compatibility with PGCONT,
where the sign of NC is significant).
TR (input) : array defining a transformation between the I,J
grid of the array and the world coordinates. The
world coordinates of the array point A(I,J) are
given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero - unless the
coordinate transformation involves a rotation
or shear.
BLANK (input) : elements of array A that are exactly equal to
this value are ignored (blanked).
%PGCONF
fill between two contours
SUBROUTINE PGCONF (A, IDIM, JDIM, I1, I2, J1, J2, C1, C2, TR)
INTEGER IDIM, JDIM, I1, I2, J1, J2
REAL A(IDIM,JDIM), C1, C2, TR(6)
Shade the region between two contour levels of a function defined on
the nodes of a rectangular grid. The routine uses the current fill
attributes, hatching style (if appropriate), and color index.
If you want to both shade between contours and draw the contour
lines, call this routine first (once for each pair of levels) and
then CALL PGCONT (or PGCONS) to draw the contour lines on top of the
shading.
Note 1: This routine is not very efficient: it generates a polygon
fill command for each cell of the mesh that intersects the desired
area, rather than consolidating adjacent cells into a single polygon.
Note 2: If both contours intersect all four edges of a particular
mesh cell, the program behaves badly and may consider some parts
of the cell to lie in more than one contour range.
Note 3: If a contour crosses all four edges of a cell, this
routine may not generate the same contours as PGCONT or PGCONS
(these two routines may not agree either). Such cases are always
ambiguous and the routines use different approaches to resolving
the ambiguity.
Arguments:
A (input) : data array.
IDIM (input) : first dimension of A.
JDIM (input) : second dimension of A.
I1,I2 (input) : range of first index to be contoured (inclusive).
J1,J2 (input) : range of second index to be contoured (inclusive).
C1, C2 (input) : contour levels; note that C1 must be less than C2.
TR (input) : array defining a transformation between the I,J
grid of the array and the world coordinates. The
world coordinates of the array point A(I,J) are
given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero - unless the
coordinate transformation involves a rotation
or shear.
%PGCONL
label contour map of a 2D data array
SUBROUTINE PGCONL (A, IDIM, JDIM, I1, I2, J1, J2, C, TR,
1 LABEL, INTVAL, MININT)
INTEGER IDIM, JDIM, I1, J1, I2, J2, INTVAL, MININT
REAL A(IDIM,JDIM), C, TR(6)
CHARACTER*(*) LABEL
Label a contour map drawn with routine PGCONT. Routine PGCONT should
be called first to draw the contour lines, then this routine should be
called to add the labels. Labels are written at intervals along the
contour lines, centered on the contour lines with lettering aligned
in the up-hill direction. Labels are opaque, so a part of the under-
lying contour line is obscured by the label. Labels use the current
attributes (character height, line width, color index, character
font).
The first 9 arguments are the same as those supplied to PGCONT, and
should normally be identical to those used with PGCONT. Note that
only one contour level can be specified; tolabel more contours, call
PGCONL for each level.
The Label is supplied as a character string in argument LABEL.
The spacing of labels along the contour is specified by parameters
INTVAL and MININT. The routine follows the contour through the
array, counting the number of cells that the contour crosses. The
first label will be written in the MININT'th cell, and additional
labels will be written every INTVAL cells thereafter. A contour
that crosses less than MININT cells will not be labelled. Some
experimentation may be needed to get satisfactory results; a good
place to start is INTVAL=20, MININT=10.
Arguments:
A (input) : data array.
IDIM (input) : first dimension of A.
JDIM (input) : second dimension of A.
I1, I2 (input) : range of first index to be contoured (inclusive).
J1, J2 (input) : range of second index to be contoured (inclusive).
C (input) : the level of the contour to be labelled (one of the
values given to PGCONT).
TR (input) : array defining a transformation between the I,J
grid of the array and the world coordinates.
The world coordinates of the array point A(I,J)
are given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero - unless the
coordinate transformation involves a rotation or
shear.
LABEL (input) : character strings to be used to label the specified
contour. Leading and trailing blank spaces are
ignored.
INTVAL (input) : spacing along the contour between labels, in
grid cells.
MININT (input) : contours that cross less than MININT cells
will not be labelled.
%PGCONS
contour map of a 2D data array (fast algorithm)
SUBROUTINE PGCONS (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR)
INTEGER IDIM, JDIM, I1, I2, J1, J2, NC
REAL A(IDIM,JDIM), C(*), TR(6)
Draw a contour map of an array. The map is truncated if
necessary at the boundaries of the viewport. Each contour line is
drawn with the current line attributes (color index, style, and
width). This routine, unlike PGCONT, does not draw each contour as a
continuous line, but draws the straight line segments composing each
contour in a random order. It is thus not suitable for use on pen
plotters, and it usually gives unsatisfactory results with dashed or
dotted lines. It is, however, faster than PGCONT, especially if
several contour levels are drawn with one call of PGCONS.
Arguments:
A (input) : data array.
IDIM (input) : first dimension of A.
JDIM (input) : second dimension of A.
I1,I2 (input) : range of first index to be contoured (inclusive).
J1,J2 (input) : range of second index to be contoured (inclusive).
C (input) : array of contour levels (in the same units as the
data in array A); dimension at least NC.
NC (input) : number of contour levels (less than or equal to
dimension of C). The absolute value of this
argument is used (for compatibility with PGCONT,
where the sign of NC is significant).
TR (input) : array defining a transformation between the I,J
grid of the array and the world coordinates. The
world coordinates of the array point A(I,J) are
given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero - unless the
coordinate transformation involves a rotation
or shear.
%PGCONT
contour map of a 2D data array (contour-following)
SUBROUTINE PGCONT (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR)
INTEGER IDIM, JDIM, I1, J1, I2, J2, NC
REAL A(IDIM,JDIM), C(*), TR(6)
Draw a contour map of an array. The map is truncated if
necessary at the boundaries of the viewport. Each contour line
is drawn with the current line attributes (color index, style, and
width); except that if argument NC is positive (see below), the line
style is set by PGCONT to 1 (solid) for positive contours or 2
(dashed) for negative contours.
Arguments:
A (input) : data array.
IDIM (input) : first dimension of A.
JDIM (input) : second dimension of A.
I1, I2 (input) : range of first index to be contoured (inclusive).
J1, J2 (input) : range of second index to be contoured (inclusive).
C (input) : array of NC contour levels; dimension at least NC.
NC (input) : +/- number of contour levels (less than or equal
to dimension of C). If NC is positive, it is the
number of contour levels, and the line-style is
chosen automatically as described above. If NC is
negative, it is minus the number of contour
levels, and the current setting of line-style is
used for all the contours.
TR (input) : array defining a transformation between the I,J
grid of the array and the world coordinates.
The world coordinates of the array point A(I,J)
are given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero - unless the
coordinate transformation involves a rotation or
shear.
%PGCONX
contour map of a 2D data array (non rectangular)
SUBROUTINE PGCONX (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, PLOT)
INTEGER IDIM, JDIM, I1, J1, I2, J2, NC
REAL A(IDIM,JDIM), C(*)
EXTERNAL PLOT
Draw a contour map of an array using a user-supplied plotting
routine. This routine should be used instead of PGCONT when the
data are defined on a non-rectangular grid. PGCONT permits only
a linear transformation between the (I,J) grid of the array
and the world coordinate system (x,y), but PGCONX permits any
transformation to be used, the transformation being defined by a
user-supplied subroutine. The nature of the contouring algorithm,
however, dictates that the transformation should maintain the
rectangular topology of the grid, although grid-points may be
allowed to coalesce. As an example of a deformed rectangular
grid, consider data given on the polar grid theta=0.1n(pi/2),
for n=0,1,...,10, and r=0.25m, for m=0,1,..,4. This grid
contains 55 points, of which 11 are coincident at the origin.
The input array for PGCONX should be dimensioned (11,5), and
data values should be provided for all 55 elements. PGCONX can
also be used for special applications in which the height of the
contour affects its appearance, e.g., stereoscopic views.
The map is truncated if necessary at the boundaries of the viewport.
Each contour line is drawn with the current line attributes (color
index, style, and width); except that if argument NC is positive
(see below), the line style is set by PGCONX to 1 (solid) for
positive contours or 2 (dashed) for negative contours. Attributes
for the contour lines can also be set in the user-supplied
subroutine, if desired.
Arguments:
A (input) : data array.
IDIM (input) : first dimension of A.
JDIM (input) : second dimension of A.
I1, I2 (input) : range of first index to be contoured (inclusive).
J1, J2 (input) : range of second index to be contoured (inclusive).
C (input) : array of NC contour levels; dimension at least NC.
NC (input) : +/- number of contour levels (less than or equal
to dimension of C). If NC is positive, it is the
number of contour levels, and the line-style is
chosen automatically as described above. If NC is
negative, it is minus the number of contour
levels, and the current setting of line-style is
used for all the contours.
PLOT (input) : the address (name) of a subroutine supplied by
the user, which will be called by PGCONX to do
the actual plotting. This must be declared
EXTERNAL in the program unit calling PGCONX.
The subroutine PLOT will be called with four arguments:
CALL PLOT(VISBLE,X,Y,Z)
where X,Y (input) are real variables corresponding to
I,J indices of the array A. If VISBLE (input, integer) is 1,
PLOT should draw a visible line from the current pen
position to the world coordinate point corresponding to (X,Y);
if it is 0, it should move the pen to (X,Y). Z is the value
of the current contour level, and may be used by PLOT if desired.
Example:
SUBROUTINE PLOT (VISBLE,X,Y,Z)
REAL X, Y, Z, XWORLD, YWORLD
INTEGER VISBLE
XWORLD = X*COS(Y) ! this is the user-defined
YWORLD = X*SIN(Y) ! transformation
IF (VISBLE.EQ.0) THEN
CALL PGMOVE (XWORLD, YWORLD)
ELSE
CALL PGDRAW (XWORLD, YWORLD)
END IF
END
%PGCTAB
install the color table to be used by PGIMAG
SUBROUTINE PGCTAB(L, R, G, B, NC, CONTRA, BRIGHT)
INTEGER NC
REAL L(NC), R(NC), G(NC), B(NC), CONTRA, BRIGHT
Use the given color table to change the color representations of
all color indexes marked for use by PGIMAG. To change which
color indexes are thus marked, call PGSCIR before calling PGCTAB
or PGIMAG. On devices that can change the color representations
of previously plotted graphics, PGCTAB will also change the colors
of existing graphics that were plotted with the marked color
indexes. This feature can then be combined with PGBAND to
interactively manipulate the displayed colors of data previously
plotted with PGIMAG.
Limitations:
1. Some devices do not propagate color representation changes
to previously drawn graphics.
2. Some devices ignore requests to change color representations.
3. The appearance of specific color representations on grey-scale
devices is device-dependent.
Notes:
To reverse the sense of a color table, change the chosen contrast
and brightness to -CONTRA and 1-BRIGHT.
In the following, the term 'color table' refers to the input
L,R,G,B arrays, whereas 'color ramp' refers to the resulting
ramp of colors that would be seen with PGWEDG.
Arguments:
L (input) : An array of NC normalized ramp-intensity levels
corresponding to the RGB primary color intensities
in R(),G(),B(). Colors on the ramp are linearly
interpolated from neighbouring levels.
Levels must be sorted in increasing order.
0.0 places a color at the beginning of the ramp.
1.0 places a color at the end of the ramp.
Colors outside these limits are legal, but will
not be visible if CONTRA=1.0 and BRIGHT=0.5.
R (input) : An array of NC normalized red intensities.
G (input) : An array of NC normalized green intensities.
B (input) : An array of NC normalized blue intensities.
NC (input) : The number of color table entries.
CONTRA (input) : The contrast of the color ramp (normally 1.0).
Negative values reverse the direction of the ramp.
BRIGHT (input) : The brightness of the color ramp. This is normally
0.5, but can sensibly hold any value between 0.0
and 1.0. Values at or beyond the latter two
extremes, saturate the color ramp with the colors
of the respective end of the color table.
%PGCURS
read cursor position
INTEGER FUNCTION PGCURS (X, Y, CH)
REAL X, Y
CHARACTER*(*) CH
Read the cursor position and a character typed by the user.
The position is returned in world coordinates. PGCURS positions
the cursor at the position specified, allows the user to move the
cursor using the joystick or arrow keys or whatever is available on
the device. When he has positioned the cursor, the user types a
single character on the keyboard; PGCURS then returns this
character and the new cursor position (in world coordinates).
Returns:
PGCURS : 1 if the call was successful; 0 if the device
has no cursor or some other error occurs.
Arguments:
X (in/out) : the world x-coordinate of the cursor.
Y (in/out) : the world y-coordinate of the cursor.
CH (output) : the character typed by the user; if the device has
no cursor or if some other error occurs, the value
CHAR(0) [ASCII NUL character] is returned.
Note: The cursor coordinates (X,Y) may be changed by PGCURS even if
the device has no cursor or if the user does not move the cursor.
Under these circumstances, the position returned in (X,Y) is that of
the pixel nearest to the requested position.
%PGCURSE
non-standard alias for PGCURS
INTEGER FUNCTION PGCURSE (X, Y, CH)
REAL X, Y
CHARACTER*1 CH
See description of PGCURS.
%PGDRAW
draw a line from the current pen position to a point
SUBROUTINE PGDRAW (X, Y)
REAL X, Y
Draw a line from the current pen position to the point
with world-coordinates (X,Y). The line is clipped at the edge of the
current window. The new pen position is (X,Y) in world coordinates.
Arguments:
X (input) : world x-coordinate of the end point of the line.
Y (input) : world y-coordinate of the end point of the line.
%PGEBUF
end batch of output (buffer)
SUBROUTINE PGEBUF
A call to PGEBUF marks the end of a batch of graphical output begun
with the last call of PGBBUF. PGBBUF and PGEBUF calls should always
be paired. Each call to PGBBUF increments a counter, while each call
to PGEBUF decrements the counter. When the counter reaches 0, the
batch of output is written on the output device.
Arguments: none
%PGEND
close all open graphics devices
SUBROUTINE PGEND
Close and release any open graphics devices. All devices must be
closed by calling either PGCLOS (for each device) or PGEND before
the program terminates. If a device is not closed properly, some
or all of the graphical output may be lost.
Arguments: none
%PGENV
set window and viewport and draw labeled frame
SUBROUTINE PGENV (XMIN, XMAX, YMIN, YMAX, JUST, AXIS)
REAL XMIN, XMAX, YMIN, YMAX
INTEGER JUST, AXIS
Set PGPLOT "Plotter Environment". PGENV establishes the scaling
for subsequent calls to PGPT, PGLINE, etc. The plotter is
advanced to a new page or panel, clearing the screen if necessary.
If the "prompt state" is ON (see PGASK), confirmation
is requested from the user before clearing the screen.
If requested, a box, axes, labels, etc. are drawn according to
the setting of argument AXIS.
Arguments:
XMIN (input) : the world x-coordinate at the bottom left corner
of the viewport.
XMAX (input) : the world x-coordinate at the top right corner
of the viewport (note XMAX may be less than XMIN).
YMIN (input) : the world y-coordinate at the bottom left corner
of the viewport.
YMAX (input) : the world y-coordinate at the top right corner
of the viewport (note YMAX may be less than YMIN).
JUST (input) : if JUST=1, the scales of the x and y axes (in
world coordinates per inch) will be equal,
otherwise they will be scaled independently.
AXIS (input) : controls the plotting of axes, tick marks, etc:
AXIS = -2 : draw no box, axes or labels;
AXIS = -1 : draw box only;
AXIS = 0 : draw box and label it with coordinates;
AXIS = 1 : same as AXIS=0, but also draw the
coordinate axes (X=0, Y=0);
AXIS = 2 : same as AXIS=1, but also draw grid lines
at major increments of the coordinates;
AXIS = 10 : draw box and label X-axis logarithmically;
AXIS = 20 : draw box and label Y-axis logarithmically;
AXIS = 30 : draw box and label both axes logarithmically.
For other axis options, use routine PGBOX. PGENV can be persuaded to
call PGBOX with additional axis options by defining an environment
parameter PGPLOT_ENVOPT containing the required option codes.
Examples:
PGPLOT_ENVOPT=P ! draw Projecting tick marks
PGPLOT_ENVOPT=I ! Invert the tick marks
PGPLOT_ENVOPT=IV ! Invert tick marks and label y Vertically
%PGERAS
erase all graphics from current page
SUBROUTINE PGERAS
Erase all graphics from the current page (or current panel, if
the view surface has been divided into panels with PGSUBP).
Arguments: none
%PGERR1
horizontal or vertical error bar
SUBROUTINE PGERR1 (DIR, X, Y, E, T)
INTEGER DIR
REAL X, Y, E
REAL T
Plot a single error bar in the direction specified by DIR.
This routine draws an error bar only; to mark the data point at
the start of the error bar, an additional call to PGPT is required.
To plot many error bars, use PGERRB.
Arguments:
DIR (input) : direction to plot the error bar relative to
the data point.
One-sided error bar:
DIR is 1 for +X (X to X+E);
2 for +Y (Y to Y+E);
3 for -X (X to X-E);
4 for -Y (Y to Y-E).
Two-sided error bar:
DIR is 5 for +/-X (X-E to X+E);
6 for +/-Y (Y-E to Y+E).
X (input) : world x-coordinate of the data.
Y (input) : world y-coordinate of the data.
E (input) : value of error bar distance to be added to the
data position in world coordinates.
T (input) : length of terminals to be drawn at the ends
of the error bar, as a multiple of the default
length; if T = 0.0, no terminals will be drawn.
%PGERRB
horizontal or vertical error bar
SUBROUTINE PGERRB (DIR, N, X, Y, E, T)
INTEGER DIR, N
REAL X(*), Y(*), E(*)
REAL T
Plot error bars in the direction specified by DIR.
This routine draws an error bar only; to mark the data point at
the start of the error bar, an additional call to PGPT is required.
Arguments:
DIR (input) : direction to plot the error bar relative to
the data point.
One-sided error bar:
DIR is 1 for +X (X to X+E);
2 for +Y (Y to Y+E);
3 for -X (X to X-E);
4 for -Y (Y to Y-E).
Two-sided error bar:
DIR is 5 for +/-X (X-E to X+E);
6 for +/-Y (Y-E to Y+E).
N (input) : number of error bars to plot.
X (input) : world x-coordinates of the data.
Y (input) : world y-coordinates of the data.
E (input) : value of error bar distance to be added to the
data position in world coordinates.
T (input) : length of terminals to be drawn at the ends
of the error bar, as a multiple of the default
length; if T = 0.0, no terminals will be drawn.
Note: the dimension of arrays X, Y, and E must be greater
than or equal to N. If N is 1, X, Y, and E may be scalar
variables, or expressions.
%PGERRX
horizontal error bar
SUBROUTINE PGERRX (N, X1, X2, Y, T)
INTEGER N
REAL X1(*), X2(*), Y(*)
REAL T
Plot horizontal error bars.
This routine draws an error bar only; to mark the data point in
the middle of the error bar, an additional call to PGPT or
PGERRY is required.
Arguments:
N (input) : number of error bars to plot.
X1 (input) : world x-coordinates of lower end of the
error bars.
X2 (input) : world x-coordinates of upper end of the
error bars.
Y (input) : world y-coordinates of the data.
T (input) : length of terminals to be drawn at the ends
of the error bar, as a multiple of the default
length; if T = 0.0, no terminals will be drawn.
Note: the dimension of arrays X1, X2, and Y must be greater
than or equal to N. If N is 1, X1, X2, and Y may be scalar
variables, or expressions, eg:
CALL PGERRX(1,X-SIGMA,X+SIGMA,Y)
%PGERRY
vertical error bar
SUBROUTINE PGERRY (N, X, Y1, Y2, T)
INTEGER N
REAL X(*), Y1(*), Y2(*)
REAL T
Plot vertical error bars.
This routine draws an error bar only; to mark the data point in
the middle of the error bar, an additional call to PGPT or
PGERRX is required.
Arguments:
N (input) : number of error bars to plot.
X (input) : world x-coordinates of the data.
Y1 (input) : world y-coordinates of top end of the
error bars.
Y2 (input) : world y-coordinates of bottom end of the
error bars.
T (input) : length of terminals to be drawn at the ends
of the error bar, as a multiple of the default
length; if T = 0.0, no terminals will be drawn.
Note: the dimension of arrays X, Y1, and Y2 must be greater
than or equal to N. If N is 1, X, Y1, and Y2 may be scalar
variables or expressions, eg:
CALL PGERRY(1,X,Y+SIGMA,Y-SIGMA)
%PGETXT
erase text from graphics display
SUBROUTINE PGETXT
Some graphics terminals display text (the normal interactive dialog)
on the same screen as graphics. This routine erases the text from the
view surface without affecting the graphics. It does nothing on
devices which do not display text on the graphics screen, and on
devices which do not have this capability.
Arguments:
None
%PGFUNT
function defined by X = F(T), Y = G(T)
SUBROUTINE PGFUNT (FX, FY, N, TMIN, TMAX, PGFLAG)
REAL FX, FY
EXTERNAL FX, FY
INTEGER N
REAL TMIN, TMAX
INTEGER PGFLAG
Draw a curve defined by parametric equations X = FX(T), Y = FY(T).
Arguments:
FX (external real function): supplied by the user, evaluates
X-coordinate.
FY (external real function): supplied by the user, evaluates
Y-coordinate.
N (input) : the number of points required to define the
curve. The functions FX and FY will each be
called N+1 times.
TMIN (input) : the minimum value for the parameter T.
TMAX (input) : the maximum value for the parameter T.
PGFLAG (input) : if PGFLAG = 1, the curve is plotted in the
current window and viewport; if PGFLAG = 0,
PGENV is called automatically by PGFUNT to
start a new plot with automatic scaling.
Note: The functions FX and FY must be declared EXTERNAL in the
Fortran program unit that calls PGFUNT.
%PGFUNX
function defined by Y = F(X)
SUBROUTINE PGFUNX (FY, N, XMIN, XMAX, PGFLAG)
REAL FY
EXTERNAL FY
INTEGER N
REAL XMIN, XMAX
INTEGER PGFLAG
Draw a curve defined by the equation Y = FY(X), where FY is a
user-supplied subroutine.
Arguments:
FY (external real function): supplied by the user, evaluates
Y value at a given X-coordinate.
N (input) : the number of points required to define the
curve. The function FY will be called N+1 times.
If PGFLAG=0 and N is greater than 1000, 1000
will be used instead. If N is less than 1,
nothing will be drawn.
XMIN (input) : the minimum value of X.
XMAX (input) : the maximum value of X.
PGFLAG (input) : if PGFLAG = 1, the curve is plotted in the
current window and viewport; if PGFLAG = 0,
PGENV is called automatically by PGFUNX to
start a new plot with X limits (XMIN, XMAX)
and automatic scaling in Y.
Note: The function FY must be declared EXTERNAL in the Fortran
program unit that calls PGFUNX. It has one argument, the
x-coordinate at which the y value is required, e.g.
REAL FUNCTION FY(X)
REAL X
FY = .....
END
%PGFUNY
function defined by X = F(Y)
SUBROUTINE PGFUNY (FX, N, YMIN, YMAX, PGFLAG)
REAL FX
EXTERNAL FX
INTEGER N
REAL YMIN, YMAX
INTEGER PGFLAG
Draw a curve defined by the equation X = FX(Y), where FY is a
user-supplied subroutine.
Arguments:
FX (external real function): supplied by the user, evaluates
X value at a given Y-coordinate.
N (input) : the number of points required to define the
curve. The function FX will be called N+1 times.
If PGFLAG=0 and N is greater than 1000, 1000
will be used instead. If N is less than 1,
nothing will be drawn.
YMIN (input) : the minimum value of Y.
YMAX (input) : the maximum value of Y.
PGFLAG (input) : if PGFLAG = 1, the curve is plotted in the
current window and viewport; if PGFLAG = 0,
PGENV is called automatically by PGFUNY to
start a new plot with Y limits (YMIN, YMAX)
and automatic scaling in X.
Note: The function FX must be declared EXTERNAL in the Fortran
program unit that calls PGFUNY. It has one argument, the
y-coordinate at which the x value is required, e.g.
REAL FUNCTION FX(Y)
REAL Y
FX = .....
END
%PGGRAY
gray-scale map of a 2D data array
SUBROUTINE PGGRAY (A, IDIM, JDIM, I1, I2, J1, J2,
1 FG, BG, TR)
INTEGER IDIM, JDIM, I1, I2, J1, J2
REAL A(IDIM,JDIM), FG, BG, TR(6)
Draw gray-scale map of an array in current window. The subsection
of the array A defined by indices (I1:I2, J1:J2) is mapped onto
the view surface world-coordinate system by the transformation
matrix TR. The resulting quadrilateral region is clipped at the edge
of the window and shaded with the shade at each point determined
by the corresponding array value. The shade is a number in the
range 0 to 1 obtained by linear interpolation between the background
level (BG) and the foreground level (FG), i.e.,
shade = [A(i,j) - BG] / [FG - BG]
The background level BG can be either less than or greater than the
foreground level FG. Points in the array that are outside the range
BG to FG are assigned shade 0 or 1 as appropriate.
PGGRAY uses two different algorithms, depending how many color
indices are available in the color index range specified for images.
(This range is set with routine PGSCIR, and the current or default
range can be queried by calling routine PGQCIR).
If 16 or more color indices are available, PGGRAY first assigns
color representations to these color indices to give a linear ramp
between the background color (color index 0) and the foreground color
(color index 1), and then calls PGIMAG to draw the image using these
color indices. In this mode, the shaded region is "opaque": every
pixel is assigned a color.
If less than 16 color indices are available, PGGRAY uses only
color index 1, and uses a "dithering" algorithm to fill in pixels,
with the shade (computed as above) determining the faction of pixels
that are filled. In this mode the shaded region is "transparent" and
allows previously-drawn graphics to show through.
The transformation matrix TR is used to calculate the world
coordinates of the center of the "cell" that represents each
array element. The world coordinates of the center of the cell
corresponding to array element A(I,J) are given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero -- unless the coordinate
transformation involves a rotation or shear. The corners of the
quadrilateral region that is shaded by PGGRAY are given by
applying this transformation to (I1-0.5,J1-0.5), (I2+0.5, J2+0.5).
Arguments:
A (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
FG (input) : the array value which is to appear with the
foreground color (corresponding to color index 1).
BG (input) : the array value which is to appear with the
background color (corresponding to color index 0).
TR (input) : transformation matrix between array grid and
world coordinates.
%PGHI2D
cross-sections through a 2D data array
SUBROUTINE PGHI2D (DATA, NXV, NYV, IX1, IX2, IY1, IY2, X, IOFF,
1 BIAS, CENTER, YLIMS)
INTEGER NXV, NYV, IX1, IX2, IY1, IY2
REAL DATA(NXV,NYV)
REAL X(IX2-IX1+1), YLIMS(IX2-IX1+1)
INTEGER IOFF
REAL BIAS
LOGICAL CENTER
Plot a series of cross-sections through a 2D data array.
Each cross-section is plotted as a hidden line histogram. The plot
can be slanted to give a pseudo-3D effect - if this is done, the
call to PGENV may have to be changed to allow for the increased X
range that will be needed.
Arguments:
DATA (input) : the data array to be plotted.
NXV (input) : the first dimension of DATA.
NYV (input) : the second dimension of DATA.
IX1 (input)
IX2 (input)
IY1 (input)
IY2 (input) : PGHI2D plots a subset of the input array DATA.
This subset is delimited in the first (x)
dimension by IX1 and IX2 and the 2nd (y) by IY1
and IY2, inclusively. Note: IY2 < IY1 is
permitted, resulting in a plot with the
cross-sections plotted in reverse Y order.
However, IX2 must be => IX1.
X (input) : the abscissae of the bins to be plotted. That is,
X(1) should be the X value for DATA(IX1,IY1), and
X should have (IX2-IX1+1) elements. The program
has to assume that the X value for DATA(x,y) is
the same for all y.
IOFF (input) : an offset in array elements applied to successive
cross-sections to produce a slanted effect. A
plot with IOFF > 0 slants to the right, one with
IOFF < 0 slants left.
BIAS (input) : a bias value applied to each successive cross-
section in order to raise it above the previous
cross-section. This is in the same units as the
data.
CENTER (input) : if .true., the X values denote the center of the
bins; if .false. the X values denote the lower
edges (in X) of the bins.
YLIMS (input) : workspace. Should be an array of at least
(IX2-IX1+1) elements.
%PGHIST
histogram of unbinned data
SUBROUTINE PGHIST(N, DATA, DATMIN, DATMAX, NBIN, PGFLAG)
INTEGER N
REAL DATA(*)
REAL DATMIN, DATMAX
INTEGER NBIN, PGFLAG
Draw a histogram of N values of a variable in array
DATA(1...N) in the range DATMIN to DATMAX using NBIN bins. Note
that array elements which fall exactly on the boundary between
two bins will be counted in the higher bin rather than the
lower one; and array elements whose value is less than DATMIN or
greater than or equal to DATMAX will not be counted at all.
Arguments:
N (input) : the number of data values.
DATA (input) : the data values. Note: the dimension of array
DATA must be greater than or equal to N. The
first N elements of the array are used.
DATMIN (input) : the minimum data value for the histogram.
DATMAX (input) : the maximum data value for the histogram.
NBIN (input) : the number of bins to use: the range DATMIN to
DATMAX is divided into NBIN equal bins and
the number of DATA values in each bin is
determined by PGHIST. NBIN may not exceed 200.
PGFLAG (input) : if PGFLAG = 1, the histogram is plotted in the
current window and viewport; if PGFLAG = 0,
PGENV is called automatically by PGHIST to start
a new plot (the x-limits of the window will be
DATMIN and DATMAX; the y-limits will be chosen
automatically.
IF PGFLAG = 2,3 the histogram will be in the same
window and viewport but with a filled area style.
If pgflag=4,5 as for pgflag = 0,1, but simple
line drawn as for PGBIN
%PGIDEN
write username, date, and time at bottom of plot
SUBROUTINE PGIDEN
Write username, date, and time at bottom of plot.
Arguments: none.
%PGIMAG
color image from a 2D data array
SUBROUTINE PGIMAG (A, IDIM, JDIM, I1, I2, J1, J2,
1 A1, A2, TR)
INTEGER IDIM, JDIM, I1, I2, J1, J2
REAL A(IDIM,JDIM), A1, A2, TR(6)
Draw a color image of an array in current window. The subsection
of the array A defined by indices (I1:I2, J1:J2) is mapped onto
the view surface world-coordinate system by the transformation
matrix TR. The resulting quadrilateral region is clipped at the edge
of the window. Each element of the array is represented in the image
by a small quadrilateral, which is filled with a color specified by
the corresponding array value.
The subroutine uses color indices in the range C1 to C2, which can
be specified by calling PGSCIR before PGIMAG. The default values
for C1 and C2 are device-dependent; these values can be determined by
calling PGQCIR. Note that color representations should be assigned to
color indices C1 to C2 by calling PGSCR before calling PGIMAG. On some
devices (but not all), the color representation can be changed after
the call to PGIMAG by calling PGSCR again.
Array values in the range A1 to A2 are mapped on to the range of
color indices C1 to C2, with array values <= A1 being given color
index C1 and values >= A2 being given color index C2. The mapping
function for intermediate array values can be specified by
calling routine PGSITF before PGIMAG; the default is linear.
On devices which have no available color indices (C1 > C2),
PGIMAG will return without doing anything. On devices with only
one color index (C1=C2), all array values map to the same color
which is rather uninteresting. An image is always "opaque",
i.e., it obscures all graphical elements previously drawn in
the region.
The transformation matrix TR is used to calculate the world
coordinates of the center of the "cell" that represents each
array element. The world coordinates of the center of the cell
corresponding to array element A(I,J) are given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero -- unless the coordinate
transformation involves a rotation or shear. The corners of the
quadrilateral region that is shaded by PGIMAG are given by
applying this transformation to (I1-0.5,J1-0.5), (I2+0.5, J2+0.5).
Arguments:
A (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
A1 (input) : the array value which is to appear with shade C1.
A2 (input) : the array value which is to appear with shade C2.
TR (input) : transformation matrix between array grid and
world coordinates.
%PGLAB
write labels for x-axis, y-axis, and top of plot
SUBROUTINE PGLAB (XLBL, YLBL, TOPLBL)
CHARACTER*(*) XLBL, YLBL, TOPLBL
Write labels outside the viewport. This routine is a simple
interface to PGMTXT, which should be used if PGLAB is inadequate.
Arguments:
XLBL (input) : a label for the x-axis (centered below the
viewport).
YLBL (input) : a label for the y-axis (centered to the left
of the viewport, drawn vertically).
TOPLBL (input) : a label for the entire plot (centered above the
viewport).
%PGLABEL
non-standard alias for PGLAB
SUBROUTINE PGLABEL (XLBL, YLBL, TOPLBL)
CHARACTER*(*) XLBL, YLBL, TOPLBL
See description of PGLAB.
%PGLCUR
draw a line using the cursor
SUBROUTINE PGLCUR (MAXPT, NPT, X, Y)
INTEGER MAXPT, NPT
REAL X(*), Y(*)
Interactive routine for user to enter a polyline by use of
the cursor. Routine allows user to Add and Delete vertices;
vertices are joined by straight-line segments.
Arguments:
MAXPT (input) : maximum number of points that may be accepted.
NPT (in/out) : number of points entered; should be zero on
first call.
X (in/out) : array of x-coordinates (dimension at least MAXPT).
Y (in/out) : array of y-coordinates (dimension at least MAXPT).
Notes:
(1) On return from the program, cursor points are returned in
the order they were entered. Routine may be (re-)called with points
already defined in X,Y (# in NPT), and they will be plotted
first, before editing.
(2) User commands: the user types single-character commands
after positioning the cursor: the following are accepted:
A (Add) - add point at current cursor location.
D (Delete) - delete last-entered point.
X (eXit) - leave subroutine.
%PGLDEV
list available device types on standard output
SUBROUTINE PGLDEV
Writes (to standard output) a list of all device types available in
the current PGPLOT installation.
Arguments: none.
%PGLEN
find length of a string in a variety of units
SUBROUTINE PGLEN (UNITS, STRING, XL, YL)
REAL XL, YL
INTEGER UNITS
CHARACTER*(*) STRING
Work out length of a string in x and y directions
Input
UNITS : 0 => answer in normalized device coordinates
1 => answer in inches
2 => answer in mm
3 => answer in absolute device coordinates (dots)
4 => answer in world coordinates
5 => answer as a fraction of the current viewport size
STRING : String of interest
Output
XL : Length of string in x direction
YL : Length of string in y direction
%PGLINE
draw a polyline (curve defined by line-segments)
SUBROUTINE PGLINE (N, XPTS, YPTS)
INTEGER N
REAL XPTS(*), YPTS(*)
Primitive routine to draw a Polyline. A polyline is one or more
connected straight-line segments. The polyline is drawn using
the current setting of attributes color-index, line-style, and
line-width. The polyline is clipped at the edge of the window.
Arguments:
N (input) : number of points defining the line; the line
consists of (N-1) straight-line segments.
N should be greater than 1 (if it is 1 or less,
nothing will be drawn).
XPTS (input) : world x-coordinates of the points.
YPTS (input) : world y-coordinates of the points.
The dimension of arrays X and Y must be greater than or equal to N.
The "pen position" is changed to (X(N),Y(N)) in world coordinates
(if N > 1).
%PGMOVE
move pen (change current pen position)
SUBROUTINE PGMOVE (X, Y)
REAL X, Y
Primitive routine to move the "pen" to the point with world
coordinates (X,Y). No line is drawn.
Arguments:
X (input) : world x-coordinate of the new pen position.
Y (input) : world y-coordinate of the new pen position.
%PGMTEXT
non-standard alias for PGMTXT
SUBROUTINE PGMTEXT (SIDE, DISP, COORD, FJUST, TEXT)
CHARACTER*(*) SIDE, TEXT
REAL DISP, COORD, FJUST
See description of PGMTXT.
%PGMTXT
write text at position relative to viewport
SUBROUTINE PGMTXT (SIDE, DISP, COORD, FJUST, TEXT)
CHARACTER*(*) SIDE, TEXT
REAL DISP, COORD, FJUST
Write text at a position specified relative to the viewport (outside
or inside). This routine is useful for annotating graphs. It is used
by routine PGLAB. The text is written using the current values of
attributes color-index, line-width, character-height, and
character-font.
Arguments:
SIDE (input) : must include one of the characters 'B', 'L', 'T',
or 'R' signifying the Bottom, Left, Top, or Right
margin of the viewport. If it includes 'LV' or
'RV', the string is written perpendicular to the
frame rather than parallel to it.
DISP (input) : the displacement of the character string from the
specified edge of the viewport, measured outwards
from the viewport in units of the character
height. Use a negative value to write inside the
viewport, a positive value to write outside.
COORD (input) : the location of the character string along the
specified edge of the viewport, as a fraction of
the length of the edge.
FJUST (input) : controls justification of the string parallel to
the specified edge of the viewport. If
FJUST = 0.0, the left-hand end of the string will
be placed at COORD; if JUST = 0.5, the center of
the string will be placed at COORD; if JUST = 1.0,
the right-hand end of the string will be placed at
at COORD. Other values between 0 and 1 give inter-
mediate placing, but they are not very useful.
TEXT (input) : the text string to be plotted. Trailing spaces are
ignored when justifying the string, but leading
spaces are significant.
%PGNCUR
mark a set of points using the cursor
SUBROUTINE PGNCUR (MAXPT, NPT, X, Y, SYMBOL)
INTEGER MAXPT, NPT
REAL X(*), Y(*)
INTEGER SYMBOL
Interactive routine for user to enter data points by use of
the cursor. Routine allows user to Add and Delete points. The
points are returned in order of increasing x-coordinate, not in the
order they were entered.
Arguments:
MAXPT (input) : maximum number of points that may be accepted.
NPT (in/out) : number of points entered; should be zero on
first call.
X (in/out) : array of x-coordinates.
Y (in/out) : array of y-coordinates.
SYMBOL (input) : code number of symbol to use for marking
entered points (see PGPT).
Note (1): The dimension of arrays X and Y must be greater than or
equal to MAXPT.
Note (2): On return from the program, cursor points are returned in
increasing order of X. Routine may be (re-)called with points
already defined in X,Y (number in NPT), and they will be plotted
first, before editing.
Note (3): User commands: the user types single-character commands
after positioning the cursor: the following are accepted:
A (Add) - add point at current cursor location.
D (Delete) - delete nearest point to cursor.
X (eXit) - leave subroutine.
%PGNCURSE
non-standard alias for PGNCUR
SUBROUTINE PGNCURSE (MAXPT, NPT, X, Y, SYMBOL)
INTEGER MAXPT, NPT
REAL X(*), Y(*)
INTEGER SYMBOL
See description of PGNCUR.
%PGNUMB
convert a number into a plottable character string
SUBROUTINE PGNUMB (MM, PP, FORM, STRING, NC)
INTEGER MM, PP, FORM
CHARACTER*(*) STRING
INTEGER NC
This routine converts a number into a decimal character
representation. To avoid problems of floating-point roundoff, the
number must be provided as an integer (MM) multiplied by a power of 10
(10**PP). The output string retains only significant digits of MM,
and will be in either integer format (123), decimal format (0.0123),
or exponential format (1.23x10**5). Standard escape sequences \u, \d
raise the exponent and \x is used for the multiplication sign.
This routine is used by PGBOX to create numeric labels for a plot.
Formatting rules:
(a) Decimal notation (FORM=1):
- Trailing zeros to the right of the decimal sign are
omitted
- The decimal sign is omitted if there are no digits
to the right of it
- When the decimal sign is placed before the first digit
of the number, a zero is placed before the decimal sign
- The decimal sign is a period (.)
- No spaces are placed between digits (ie digits are not
grouped in threes as they should be)
- A leading minus (-) is added if the number is negative
(b) Exponential notation (FORM=2):
- The exponent is adjusted to put just one (non-zero)
digit before the decimal sign
- The mantissa is formatted as in (a), unless its value is
1 in which case it and the multiplication sign are omitted
- If the power of 10 is not zero and the mantissa is not
zero, an exponent of the form \x10\u[-]nnn is appended,
where \x is a multiplication sign (cross), \u is an escape
sequence to raise the exponent, and as many digits nnn
are used as needed
(c) Automatic choice (FORM=0):
Decimal notation is used if the absolute value of the
number is less than 10000 or greater than or equal to
0.01. Otherwise exponential notation is used.
Arguments:
MM (input)
PP (input) : the value to be formatted is MM*10**PP.
FORM (input) : controls how the number is formatted:
FORM = 0 -- use either decimal or exponential
FORM = 1 -- use decimal notation
FORM = 2 -- use exponential notation
STRING (output) : the formatted character string, left justified.
If the length of STRING is insufficient, a single
asterisk is returned, and NC=1.
NC (output) : the number of characters used in STRING:
the string to be printed is STRING(1:NC).
%PGOLIN
mark a set of points using the cursor
SUBROUTINE PGOLIN (MAXPT, NPT, X, Y, SYMBOL)
INTEGER MAXPT, NPT
REAL X(*), Y(*)
INTEGER SYMBOL
Interactive routine for user to enter data points by use of
the cursor. Routine allows user to Add and Delete points. The
points are returned in the order that they were entered (unlike
PGNCUR).
Arguments:
MAXPT (input) : maximum number of points that may be accepted.
NPT (in/out) : number of points entered; should be zero on
first call.
X (in/out) : array of x-coordinates.
Y (in/out) : array of y-coordinates.
SYMBOL (input) : code number of symbol to use for marking
entered points (see PGPT).
Note (1): The dimension of arrays X and Y must be greater than or
equal to MAXPT.
Note (2): On return from the program, cursor points are returned in
the order they were entered. Routine may be (re-)called with points
already defined in X,Y (number in NPT), and they will be plotted
first, before editing.
Note (3): User commands: the user types single-character commands
after positioning the cursor: the following are accepted:
A (Add) - add point at current cursor location.
D (Delete) - delete the last point entered.
X (eXit) - leave subroutine.
%PGOPEN
open a graphics device
INTEGER FUNCTION PGOPEN (DEVICE)
CHARACTER*(*) DEVICE
Open a graphics device for PGPLOT output. If the device is
opened successfully, it becomes the selected device to which
graphics output is directed until another device is selected
with PGSLCT or the device is closed with PGCLOS.
The value returned by PGOPEN should be tested to ensure that
the device was opened successfully, e.g.,
ISTAT = PGOPEN('plot.ps/PS')
IF (ISTAT .LE. 0 ) STOP
Note that PGOPEN must be declared INTEGER in the calling program.
The DEVICE argument is a character constant or variable; its value
should be one of the following:
(1) A complete device specification of the form 'device/type' or
'file/type', where 'type' is one of the allowed PGPLOT device
types (installation-dependent) and 'device' or 'file' is the
name of a graphics device or disk file appropriate for this type.
The 'device' or 'file' may contain '/' characters; the final
'/' delimits the 'type'. If necessary to avoid ambiguity,
the 'device' part of the string may be enclosed in double
quotation marks.
(2) A device specification of the form '/type', where 'type' is one
of the allowed PGPLOT device types. PGPLOT supplies a default
file or device name appropriate for this device type.
(3) A device specification with '/type' omitted; in this case
the type is taken from the environment variable PGPLOT_TYPE,
if defined (e.g., setenv PGPLOT_TYPE PS). Because of possible
confusion with '/' in file-names, omitting the device type
in this way is not recommended.
(4) A blank string (' '); in this case, PGOPEN will use the value
of environment variable PGPLOT_DEV as the device specification,
or '/NULL' if the environment variable is undefined.
(5) A single question mark, with optional trailing spaces ('?'); in
this case, PGPLOT will prompt the user to supply the device
specification, with a prompt string of the form
'Graphics device/type (? to see list, default XXX):'
where 'XXX' is the default (value of environment variable
PGPLOT_DEV).
(6) A non-blank string in which the first character is a question
mark (e.g., '?Device: '); in this case, PGPLOT will prompt the
user to supply the device specification, using the supplied
string as the prompt (without the leading question mark but
including any trailing spaces).
In cases (5) and (6), the device specification is read from the
standard input. The user should respond to the prompt with a device
specification of the form (1), (2), or (3). If the user types a
question-mark in response to the prompt, a list of available device
types is displayed and the prompt is re-issued. If the user supplies
an invalid device specification, the prompt is re-issued. If the user
responds with an end-of-file character, e.g., ctrl-D in UNIX, program
execution is aborted; this avoids the possibility of an infinite
prompting loop. A programmer should avoid use of PGPLOT-prompting
if this behavior is not desirable.
The device type is case-insensitive (e.g., '/ps' and '/PS' are
equivalent). The device or file name may be case-sensitive in some
operating systems.
Examples of valid DEVICE arguments:
(1) 'plot.ps/ps', 'dir/plot.ps/ps', '"dir/plot.ps"/ps',
'user:[tjp.plots]plot.ps/PS'
(2) '/ps' (PGPLOT interprets this as 'pgplot.ps/ps')
(3) 'plot.ps' (if PGPLOT_TYPE is defined as 'ps', PGPLOT
interprets this as 'plot.ps/ps')
(4) ' ' (if PGPLOT_DEV is defined)
(5) '? '
(6) '?Device specification for PGPLOT: '
[This routine was added to PGPLOT in Version 5.1.0. Older programs
use PGBEG instead.]
Returns:
PGOPEN : returns either a positive value, the
identifier of the graphics device for use with
PGSLCT, or a 0 or negative value indicating an
error. In the event of error a message is
written on the standard error unit.
Arguments:
DEVICE (input) : the 'device specification' for the plot device
(see above).
%PGPAGE
advance to new page
SUBROUTINE PGPAGE
Advance plotter to a new page or panel, clearing the screen if
necessary. If the "prompt state" is ON (see PGASK), confirmation is
requested from the user before clearing the screen. If the view
surface has been subdivided into panels with PGBEG or PGSUBP, then
PGPAGE advances to the next panel, and if the current panel is the
last on the page, PGPAGE clears the screen or starts a new sheet of
paper. PGPAGE does not change the PGPLOT window or the viewport
(in normalized device coordinates); but note that if the size of the
view-surface is changed externally (e.g., by a workstation window
manager) the size of the viewport is changed in proportion.
Arguments: none
%PGPANL
switch to a different panel on the view surface
SUBROUTINE PGPANL(IX, IY)
INTEGER IX, IY
Start plotting in a different panel. If the view surface has been
divided into panels by PGBEG or PGSUBP, this routine can be used to
move to a different panel. Note that PGPLOT does not remember what
viewport and window were in use in each panel; these should be reset
if necessary after calling PGPANL. Nor does PGPLOT clear the panel:
call PGERAS after calling PGPANL to do this.
Arguments:
IX (input) : the horizontal index of the panel (in the range
1 <= IX <= number of panels in horizontal
direction).
IY (input) : the vertical index of the panel (in the range
1 <= IY <= number of panels in horizontal
direction).
%PGPAP
change the size of the view surface
SUBROUTINE PGPAP (WIDTH, ASPECT)
REAL WIDTH, ASPECT
This routine changes the size of the view surface ("paper size") to a
specified width and aspect ratio (height/width), in so far as this is
possible on the specific device. It is always possible to obtain a
view surface smaller than the default size; on some devices (e.g.,
printers that print on roll or fan-feed paper) it is possible to
obtain a view surface larger than the default.
This routine should be called either immediately after PGBEG or
immediately before PGPAGE. The new size applies to all subsequent
images until the next call to PGPAP.
Arguments:
WIDTH (input) : the requested width of the view surface in inches;
if WIDTH=0.0, PGPAP will obtain the largest view
surface available consistent with argument ASPECT.
(1 inch = 25.4 mm.)
ASPECT (input) : the aspect ratio (height/width) of the view
surface; e.g., ASPECT=1.0 gives a square view
surface, ASPECT=0.618 gives a horizontal
rectangle, ASPECT=1.618 gives a vertical rectangle.
%PGPAPER
non-standard alias for PGPAP
SUBROUTINE PGPAPER (WIDTH, ASPECT)
REAL WIDTH, ASPECT
See description of PGPAP.
%PGPIXL
draw pixels
SUBROUTINE PGPIXL (IA, IDIM, JDIM, I1, I2, J1, J2,
1 X1, X2, Y1, Y2)
INTEGER IDIM, JDIM, I1, I2, J1, J2
INTEGER IA(IDIM,JDIM)
REAL X1, X2, Y1, Y2
Draw lots of solid-filled (tiny) rectangles aligned with the
coordinate axes. Best performance is achieved when output is
directed to a pixel-oriented device and the rectangles coincide
with the pixels on the device. In other cases, pixel output is
emulated.
The subsection of the array IA defined by indices (I1:I2, J1:J2)
is mapped onto world-coordinate rectangle defined by X1, X2, Y1
and Y2. This rectangle is divided into (I2 - I1 + 1) * (J2 - J1 + 1)
small rectangles. Each of these small rectangles is solid-filled
with the color index specified by the corresponding element of
IA.
On most devices, the output region is "opaque", i.e., it obscures
all graphical elements previously drawn in the region. But on
devices that do not have erase capability, the background shade
is "transparent" and allows previously-drawn graphics to show
through.
Arguments:
IA (input) : the array to be plotted.
IDIM (input) : the first dimension of array A.
JDIM (input) : the second dimension of array A.
I1, I2 (input) : the inclusive range of the first index
(I) to be plotted.
J1, J2 (input) : the inclusive range of the second
index (J) to be plotted.
X1, Y1 (input) : world coordinates of one corner of the output
region
X2, Y2 (input) : world coordinates of the opposite corner of the
output region
%PGPNTS
draw several graph markers, not all the same
SUBROUTINE PGPNTS (N, X, Y, SYMBOL, NS)
INTEGER N, NS
REAL X(*), Y(*)
INTEGER SYMBOL(*)
Draw Graph Markers. Unlike PGPT, this routine can draw a different
symbol at each point. The markers are drawn using the current values
of attributes color-index, line-width, and character-height
(character-font applies if the symbol number is >31). If the point
to be marked lies outside the window, no marker is drawn. The "pen
position" is changed to (XPTS(N),YPTS(N)) in world coordinates
(if N > 0).
Arguments:
N (input) : number of points to mark.
X (input) : world x-coordinate of the points.
Y (input) : world y-coordinate of the points.
SYMBOL (input) : code number of the symbol to be plotted at each
point (see PGPT).
NS (input) : number of values in the SYMBOL array. If NS <= N,
then the first NS points are drawn using the value
of SYMBOL(I) at (X(I), Y(I)) and SYMBOL(1) for all
the values of (X(I), Y(I)) where I > NS.
Note: the dimension of arrays X and Y must be greater than or equal
to N and the dimension of the array SYMBOL must be greater than or
equal to NS. If N is 1, X and Y may be scalars (constants or
variables). If NS is 1, then SYMBOL may be a scalar. If N is
less than 1, nothing is drawn.
%PGPOINT
non-standard alias for PGPT
SUBROUTINE PGPOINT (N, XPTS, YPTS, SYMBOL)
INTEGER N
REAL XPTS(*), YPTS(*)
INTEGER SYMBOL
See description of PGPT.
%PGPOLY
draw a polygon, using fill-area attributes
SUBROUTINE PGPOLY (N, XPTS, YPTS)
INTEGER N
REAL XPTS(*), YPTS(*)
Fill-area primitive routine: shade the interior of a closed
polygon in the current window. The action of this routine depends
on the setting of the Fill-Area Style attribute (see PGSFS).
The polygon is clipped at the edge of the
window. The pen position is changed to (XPTS(1),YPTS(1)) in world
coordinates (if N > 1). If the polygon is not convex, a point is
assumed to lie inside the polygon if a straight line drawn to
infinity intersects and odd number of the polygon's edges.
Arguments:
N (input) : number of points defining the polygon; the
line consists of N straight-line segments,
joining points 1 to 2, 2 to 3,... N-1 to N, N to 1.
N should be greater than 2 (if it is 2 or less,
nothing will be drawn).
XPTS (input) : world x-coordinates of the vertices.
YPTS (input) : world y-coordinates of the vertices.
Note: the dimension of arrays XPTS and YPTS must be
greater than or equal to N.
%PGPT
draw several graph markers
SUBROUTINE PGPT (N, XPTS, YPTS, SYMBOL)
INTEGER N
REAL XPTS(*), YPTS(*)
INTEGER SYMBOL
Primitive routine to draw Graph Markers (polymarker). The markers
are drawn using the current values of attributes color-index,
line-width, and character-height (character-font applies if the symbol
number is >31). If the point to be marked lies outside the window,
no marker is drawn. The "pen position" is changed to
(XPTS(N),YPTS(N)) in world coordinates (if N > 0).
Arguments:
N (input) : number of points to mark.
XPTS (input) : world x-coordinates of the points.
YPTS (input) : world y-coordinates of the points.
SYMBOL (input) : code number of the symbol to be drawn at each
point:
-1, -2 : a single dot (diameter = current
line width).
-3..-31 : a regular polygon with ABS(SYMBOL)
edges (style set by current fill style).
0..31 : standard marker symbols.
32..127 : ASCII characters (in current font).
e.g. to use letter F as a marker, let
SYMBOL = ICHAR('F').
> 127 : a Hershey symbol number.
Note: the dimension of arrays X and Y must be greater than or equal
to N. If N is 1, X and Y may be scalars (constants or variables). If
N is less than 1, nothing is drawn.
%PGPT1
draw one graph marker
SUBROUTINE PGPT1 (XPT, YPT, SYMBOL)
REAL XPT, YPT
INTEGER SYMBOL
Primitive routine to draw a single Graph Marker at a specified point.
The marker is drawn using the current values of attributes
color-index, line-width, and character-height (character-font applies
if the symbol number is >31). If the point to be marked lies outside
the window, no marker is drawn. The "pen position" is changed to
(XPT,YPT) in world coordinates.
To draw several markers with coordinates specified by X and Y
arrays, use routine PGPT.
Arguments:
XPT (input) : world x-coordinate of the point.
YPT (input) : world y-coordinate of the point.
SYMBOL (input) : code number of the symbol to be drawn:
-1, -2 : a single dot (diameter = current
line width).
-3..-31 : a regular polygon with ABS(SYMBOL)
edges (style set by current fill style).
0..31 : standard marker symbols.
32..127 : ASCII characters (in current font).
e.g. to use letter F as a marker, let
SYMBOL = ICHAR('F').
> 127 : a Hershey symbol number.
%PGPTEXT
non-standard alias for PGPTXT
SUBROUTINE PGPTEXT (X, Y, ANGLE, FJUST, TEXT)
REAL X, Y, ANGLE, FJUST
CHARACTER*(*) TEXT
See description of PGPTXT.
%PGPTXT
write text at arbitrary position and angle
SUBROUTINE PGPTXT (X, Y, ANGLE, FJUST, TEXT)
REAL X, Y, ANGLE, FJUST
CHARACTER*(*) TEXT
Primitive routine for drawing text. The text may be drawn at any
angle with the horizontal, and may be centered or left- or right-
justified at a specified position. Routine PGTEXT provides a
simple interface to PGPTXT for horizontal strings. Text is drawn
using the current values of attributes color-index, line-width,
character-height, and character-font. Text is NOT subject to
clipping at the edge of the window.
Arguments:
X (input) : world x-coordinate.
Y (input) : world y-coordinate. The string is drawn with the
baseline of all the characters passing through
point (X,Y); the positioning of the string along
this line is controlled by argument FJUST.
ANGLE (input) : angle, in degrees, that the baseline is to make
with the horizontal, increasing counter-clockwise
(0.0 is horizontal).
FJUST (input) : controls horizontal justification of the string.
If FJUST = 0.0, the string will be left-justified
at the point (X,Y); if FJUST = 0.5, it will be
centered, and if FJUST = 1.0, it will be right
justified. [Other values of FJUST give other
justifications.]
TEXT (input) : the character string to be plotted.
%PGQAH
inquire arrow-head style
SUBROUTINE PGQAH (FS, ANGLE, BARB)
INTEGER FS
REAL ANGLE, BARB
Query the style to be used for arrowheads drawn with routine PGARRO.
Argument:
FS (output) : FS = 1 => filled; FS = 2 => outline.
ANGLE (output) : the acute angle of the arrow point, in degrees.
BARB (output) : the fraction of the triangular arrow-head that
is cut away from the back.
%PGQCF
inquire character font
SUBROUTINE PGQCF (FONT)
INTEGER FONT
Query the current Character Font (set by routine PGSCF).
Argument:
FONT (output) : the current font number (in range 1-4).
%PGQCH
inquire character height
SUBROUTINE PGQCH (SIZE)
REAL SIZE
Query the Character Size attribute (set by routine PGSCH).
Argument:
SIZE (output) : current character size (dimensionless multiple of
the default size).
%PGQCI
inquire color index
SUBROUTINE PGQCI (CI)
INTEGER CI
Query the Color Index attribute (set by routine PGSCI).
Argument:
CI (output) : the current color index (in range 0-max). This is
the color index actually in use, and may differ
from the color index last requested by PGSCI if
that index is not available on the output device.
%PGQCIR
inquire color index range
SUBROUTINE PGQCIR(ICILO, ICIHI)
INTEGER ICILO, ICIHI
Query the color index range to be used for producing images with
PGGRAY or PGIMAG, as set by routine PGSCIR or by device default.
Arguments:
ICILO (output) : the lowest color index to use for images
ICIHI (output) : the highest color index to use for images
%PGQCLP
inquire clipping status
SUBROUTINE PGQCLP(STATE)
INTEGER STATE
Query the current clipping status (set by routine PGSCLP).
Argument:
STATE (output) : receives the clipping status (0 => disabled,
1 => enabled).
%PGQCOL
inquire color capability
SUBROUTINE PGQCOL (CI1, CI2)
INTEGER CI1, CI2
Query the range of color indices available on the current device.
Argument:
CI1 (output) : the minimum available color index. This will be
either 0 if the device can write in the
background color, or 1 if not.
CI2 (output) : the maximum available color index. This will be
1 if the device has no color capability, or a
larger number (e.g., 3, 7, 15, 255).
%PGQCR
-- inquire color representation
SUBROUTINE PGQCR (CI, CR, CG, CB)
INTEGER CI
REAL CR, CG, CB
Query the RGB colors associated with a color index.
Arguments:
CI (input) : color index
CR (output) : red, green and blue intensities
CG (output) in the range 0.0 to 1.0
CB (output)
%PGQCS
-- inquire character height in a variety of units
SUBROUTINE PGQCS(UNITS, XCH, YCH)
INTEGER UNITS
REAL XCH, YCH
Return the current PGPLOT character height in a variety of units.
This routine provides facilities that are not available via PGQCH.
Use PGQCS if the character height is required in units other than
those used in PGSCH.
The PGPLOT "character height" is a dimension that scales with the
size of the view surface and with the scale-factor specified with
routine PGSCH. The default value is 1/40th of the height or width
of the view surface (whichever is less); this value is then
multiplied by the scale-factor supplied with PGSCH. Note that it
is a nominal height only; the actual character size depends on the
font and is usually somewhat smaller.
Arguments:
UNITS (input) : Used to specify the units of the output value:
UNITS = 0 : normalized device coordinates
UNITS = 1 : inches
UNITS = 2 : millimeters
UNITS = 3 : pixels
UNITS = 4 : world coordinates
Other values give an error message, and are
treated as 0.
XCH (output) : The character height for text written with a
vertical baseline.
YCH (output) : The character height for text written with
a horizontal baseline (the usual case).
The character height is returned in both XCH and YCH.
If UNITS=1 or UNITS=2, XCH and YCH both receive the same value.
If UNITS=3, XCH receives the height in horizontal pixel units, and YCH
receives the height in vertical pixel units; on devices for which the
pixels are not square, XCH and YCH will be different.
If UNITS=4, XCH receives the height in horizontal world coordinates
(as used for the x-axis), and YCH receives the height in vertical
world coordinates (as used for the y-axis). Unless special care has
been taken to achive equal world-coordinate scales on both axes, the
values of XCH and YCH will be different.
If UNITS=0, XCH receives the character height as a fraction of the
horizontal dimension of the view surface, and YCH receives the
character height as a fraction of the vertical dimension of the view
surface.
%PGQDT
inquire name of nth available device type
SUBROUTINE PGQDT(N, TYPE, TLEN, DESCR, DLEN, INTER)
INTEGER N
CHARACTER*(*) TYPE, DESCR
INTEGER TLEN, DLEN, INTER
Return the name of the Nth available device type as a character
string. The number of available types can be determined by calling
PGQNDT. If the value of N supplied is outside the range from 1 to
the number of available types, the routine returns DLEN=TLEN=0.
Arguments:
N (input) : the number of the device type (1..maximum).
TYPE (output) : receives the character device-type code of the
Nth device type. The argument supplied should be
large enough for at least 8 characters. The first
character in the string is a '/' character.
TLEN (output) : receives the number of characters in TYPE,
excluding trailing blanks.
DESCR (output) : receives a description of the device type. The
argument supplied should be large enough for at
least 64 characters.
DLEN (output) : receives the number of characters in DESCR,
excluding trailing blanks.
INTER (output) : receives 1 if the device type is an interactive
one, 0 otherwise.
%PGQFS
inquire fill-area style
SUBROUTINE PGQFS (FS)
INTEGER FS
Query the current Fill-Area Style attribute (set by routine
PGSFS).
Argument:
FS (output) : the current fill-area style:
FS = 1 => solid (default)
FS = 2 => outline
FS = 3 => hatched
FS = 4 => cross-hatched
%PGQHS
inquire hatching style
SUBROUTINE PGQHS (ANGLE, SEPN, PHASE)
REAL ANGLE, SEPN, PHASE
Query the style to be used hatching (fill area with fill-style 3).
Arguments:
ANGLE (output) : the angle the hatch lines make with the
horizontal, in degrees, increasing
counterclockwise (this is an angle on the
view surface, not in world-coordinate space).
SEPN (output) : the spacing of the hatch lines. The unit spacing
is 1 percent of the smaller of the height or
width of the view surface.
PHASE (output) : a real number between 0 and 1; the hatch lines
are displaced by this fraction of SEPN from a
fixed reference. Adjacent regions hatched with the
same PHASE have contiguous hatch lines.
%PGQID
inquire current device identifier
SUBROUTINE PGQID (ID)
INTEGER ID
This subroutine returns the identifier of the currently
selected device, or 0 if no device is selected. The identifier is
assigned when PGOPEN is called to open the device, and may be used
as an argument to PGSLCT. Each open device has a different
identifier.
[This routine was added to PGPLOT in Version 5.1.0.]
Argument:
ID (output) : the identifier of the current device, or 0 if
no device is currently selected.
%PGQINF
inquire PGPLOT general information
SUBROUTINE PGQINF (ITEM, VALUE, LENGTH)
CHARACTER*(*) ITEM, VALUE
INTEGER LENGTH
This routine can be used to obtain miscellaneous information about
the PGPLOT environment. Input is a character string defining the
information required, and output is a character string containing the
requested information.
The following item codes are accepted (note that the strings must
match exactly, except for case, but only the first 8 characters are
significant). For items marked *, PGPLOT must be in the OPEN state
for the inquiry to succeed. If the inquiry is unsuccessful, either
because the item code is not recognized or because the information
is not available, a question mark ('?') is returned.
'VERSION' - version of PGPLOT software in use.
'STATE' - status of PGPLOT ('OPEN' if a graphics device
is open for output, 'CLOSED' otherwise).
'USER' - the username associated with the calling program.
'NOW' - current date and time (e.g., '17-FEB-1986 10:04').
'DEVICE' * - current PGPLOT device or file.
'FILE' * - current PGPLOT device or file.
'TYPE' * - device-type of the current PGPLOT device.
'DEV/TYPE' * - current PGPLOT device and type, in a form which
is acceptable as an argument for PGBEG.
'HARDCOPY' * - is the current device a hardcopy device? ('YES' or
'NO').
'TERMINAL' * - is the current device the user's interactive
terminal? ('YES' or 'NO').
'CURSOR' * - does the current device have a graphics cursor?
('YES' or 'NO').
'SCROLL' * - does current device have rectangle-scroll
capability ('YES' or 'NO'); see PGSCRL.
Arguments:
ITEM (input) : character string defining the information to
be returned; see above for a list of possible
values.
VALUE (output) : returns a character-string containing the
requested information, truncated to the length
of the supplied string or padded on the right with
spaces if necessary.
LENGTH (output): the number of characters returned in VALUE
(excluding trailing blanks).
%PGQITF
inquire image transfer function
SUBROUTINE PGQITF (ITF)
INTEGER ITF
Return the Image Transfer Function as set by default or by a previous
call to PGSITF. The Image Transfer Function is used by routines
PGIMAG, PGGRAY, and PGWEDG.
Argument:
ITF (output) : type of transfer function (see PGSITF)
%PGQLS
inquire line style
SUBROUTINE PGQLS (LS)
INTEGER LS
Query the current Line Style attribute (set by routine PGSLS).
Argument:
LS (output) : the current line-style attribute (in range 1-5).
%PGQLW
inquire line width
SUBROUTINE PGQLW (LW)
INTEGER LW
Query the current Line-Width attribute (set by routine PGSLW).
Argument:
LW (output) : the line-width (in range 1-201).
%PGQNDT
inquire number of available device types
SUBROUTINE PGQNDT(N)
INTEGER N
Return the number of available device types. This routine is
usually used in conjunction with PGQDT to get a list of the
available device types.
Arguments:
N (output) : the number of available device types.
%PGQPOS
inquire current pen position
SUBROUTINE PGQPOS (X, Y)
REAL X, Y
Query the current "pen" position in world C coordinates (X,Y).
Arguments:
X (output) : world x-coordinate of the pen position.
Y (output) : world y-coordinate of the pen position.
%PGQTBG
inquire text background color index
SUBROUTINE PGQTBG (TBCI)
INTEGER TBCI
Query the current Text Background Color Index (set by routine
PGSTBG).
Argument:
TBCI (output) : receives the current text background color index.
%PGQTXT
find bounding box of text string
SUBROUTINE PGQTXT (X, Y, ANGLE, FJUST, TEXT, XBOX, YBOX)
REAL X, Y, ANGLE, FJUST
CHARACTER*(*) TEXT
REAL XBOX(4), YBOX(4)
This routine returns a bounding box for a text string. Instead
of drawing the string as routine PGPTXT does, it returns in XBOX
and YBOX the coordinates of the corners of a rectangle parallel
to the string baseline that just encloses the string. The four
corners are in the order: lower left, upper left, upper right,
lower right (where left and right refer to the first and last
characters in the string).
If the string is blank or contains no drawable characters, all
four elements of XBOX and YBOX are assigned the starting point
of the string, (X,Y).
Arguments:
X, Y, ANGLE, FJUST, TEXT (input) : these arguments are the same as
the corrresponding arguments in PGPTXT.
XBOX, YBOX (output) : arrays of dimension 4; on output, they
contain the world coordinates of the bounding
box in (XBOX(1), YBOX(1)), ..., (XBOX(4), YBOX(4)).
%PGQVP
inquire viewport size and position
SUBROUTINE PGQVP (UNITS, X1, X2, Y1, Y2)
INTEGER UNITS
REAL X1, X2, Y1, Y2
Inquiry routine to determine the current viewport setting.
The values returned may be normalized device coordinates, inches, mm,
or pixels, depending on the value of the input parameter CFLAG.
Arguments:
UNITS (input) : used to specify the units of the output parameters:
UNITS = 0 : normalized device coordinates
UNITS = 1 : inches
UNITS = 2 : millimeters
UNITS = 3 : pixels
Other values give an error message, and are
treated as 0.
X1 (output) : the x-coordinate of the bottom left corner of the
viewport.
X2 (output) : the x-coordinate of the top right corner of the
viewport.
Y1 (output) : the y-coordinate of the bottom left corner of the
viewport.
Y2 (output) : the y-coordinate of the top right corner of the
viewport.
%PGQVSZ
inquire size of view surface
SUBROUTINE PGQVSZ (UNITS, X1, X2, Y1, Y2)
INTEGER UNITS
REAL X1, X2, Y1, Y2
This routine returns the dimensions of the view surface (the maximum
plottable area) of the currently selected graphics device, in
a variety of units. The size of the view surface is device-dependent
and is established when the graphics device is opened. On some
devices, it can be changed by calling PGPAP before starting a new
page with PGPAGE. On some devices, the size can be changed (e.g.,
by a workstation window manager) outside PGPLOT, and PGPLOT detects
the change when PGPAGE is used. Call this routine after PGPAGE to
find the current size.
Note 1: the width and the height of the view surface in normalized
device coordinates are both always equal to 1.0.
Note 2: when the device is divided into panels (see PGSUBP), the
view surface is a single panel.
Arguments:
UNITS (input) : 0,1,2,3 for output in normalized device coords,
inches, mm, or device units (pixels)
X1 (output) : always returns 0.0
X2 (output) : width of view surface
Y1 (output) : always returns 0.0
Y2 (output) : height of view surface
%PGQWIN
inquire window boundary coordinates
SUBROUTINE PGQWIN (X1, X2, Y1, Y2)
REAL X1, X2, Y1, Y2
Inquiry routine to determine the current window setting.
The values returned are world coordinates.
Arguments:
X1 (output) : the x-coordinate of the bottom left corner
of the window.
X2 (output) : the x-coordinate of the top right corner
of the window.
Y1 (output) : the y-coordinate of the bottom left corner
of the window.
Y2 (output) : the y-coordinate of the top right corner
of the window.
%PGRECT
draw a rectangle, using fill-area attributes
SUBROUTINE PGRECT (X1, X2, Y1, Y2)
REAL X1, X2, Y1, Y2
This routine can be used instead of PGPOLY for the special case of
drawing a rectangle aligned with the coordinate axes; only two
vertices need be specified instead of four. On most devices, it is
faster to use PGRECT than PGPOLY for drawing rectangles. The
rectangle has vertices at (X1,Y1), (X1,Y2), (X2,Y2), and (X2,Y1).
Arguments:
X1, X2 (input) : the horizontal range of the rectangle.
Y1, Y2 (input) : the vertical range of the rectangle.
%PGRND
find the smallest `round' number greater than x
REAL FUNCTION PGRND (X, NSUB)
REAL X
INTEGER NSUB
Routine to find the smallest "round" number larger than x, a
"round" number being 1, 2 or 5 times a power of 10. If X is negative,
PGRND(X) = -PGRND(ABS(X)). eg PGRND(8.7) = 10.0,
PGRND(-0.4) = -0.5. If X is zero, the value returned is zero.
This routine is used by PGBOX for choosing tick intervals.
Returns:
PGRND : the "round" number.
Arguments:
X (input) : the number to be rounded.
NSUB (output) : a suitable number of subdivisions for
subdividing the "nice" number: 2 or 5.
%PGRNGE
choose axis limits
SUBROUTINE PGRNGE (X1, X2, XLO, XHI)
REAL X1, X2, XLO, XHI
Choose plotting limits XLO and XHI which encompass the data
range X1 to X2.
Arguments:
X1, X2 (input) : the data range (X1<X2), ie, the min and max values
to be plotted.
XLO, XHI (output) : suitable values to use as the extremes of a graph
axis (XLO <= X1, XHI >= X2).
%PGSAH
set arrow-head style
SUBROUTINE PGSAH (FS, ANGLE, BARB)
INTEGER FS
REAL ANGLE, BARB
Set the style to be used for arrowheads drawn with routine PGARRO.
Argument:
FS (input) : FS = 1 => filled; FS = 2 => outline.
Other values are treated as 2. Default 1.
ANGLE (input) : the acute angle of the arrow point, in degrees;
angles in the range 20.0 to 90.0 give reasonable
results. Default 45.0.
BARB (input) : the fraction of the triangular arrow-head that
is cut away from the back. 0.0 gives a triangular
wedge arrow-head; 1.0 gives an open >. Values 0.3
to 0.7 give reasonable results. Default 0.3.
%PGSAVE
save PGPLOT attributes
SUBROUTINE PGSAVE
This routine saves the current PGPLOT attributes in a private storage
area. They can be restored by calling PGUNSA (unsave). Attributes
saved are: character font, character height, color index, fill-area
style, line style, line width, pen position, arrow-head style,
hatching style, and clipping state. Color representation is not saved.
Calls to PGSAVE and PGUNSA should always be paired. Up to 20 copies
of the attributes may be saved. PGUNSA always retrieves the last-saved
values (last-in first-out stack).
Note that when multiple devices are in use, PGUNSA retrieves the
values saved by the last PGSAVE call, even if they were for a
different device.
Arguments: none
%PGUNSA
restore PGPLOT attributes
ENTRY PGUNSA
This routine restores the PGPLOT attributes saved in the last call to
PGSAVE. Usage: CALL PGUNSA (no arguments). See PGSAVE.
Arguments: none
%PGSCF
set character font
SUBROUTINE PGSCF (FONT)
INTEGER FONT
Set the Character Font for subsequent text plotting. Four different
fonts are available:
1: (default) a simple single-stroke font ("normal" font)
2: roman font
3: italic font
4: script font
This call determines which font is in effect at the beginning of
each text string. The font can be changed (temporarily) within a text
string by using the escape sequences \fn, \fr, \fi, and \fs for fonts
1, 2, 3, and 4, respectively.
Argument:
FONT (input) : the font number to be used for subsequent text
plotting (in range 1-4).
%PGSCH
set character height
SUBROUTINE PGSCH (SIZE)
REAL SIZE
Set the character size attribute. The size affects all text and graph
markers drawn later in the program. The default character size is
1.0, corresponding to a character height about 1/40 the height of
the view surface. Changing the character size also scales the length
of tick marks drawn by PGBOX and terminals drawn by PGERRX and PGERRY.
Argument:
SIZE (input) : new character size (dimensionless multiple of
the default size).
%PGSCI
set color index
SUBROUTINE PGSCI (CI)
INTEGER CI
Set the Color Index for subsequent plotting, if the output device
permits this. The default color index is 1, usually white on a black
background for video displays or black on a white background for
printer plots. The color index is an integer in the range 0 to a
device-dependent maximum. Color index 0 corresponds to the background
color; lines may be "erased" by overwriting them with color index 0
(if the device permits this).
If the requested color index is not available on the selected device,
color index 1 will be substituted.
The assignment of colors to color indices can be changed with
subroutine PGSCR (set color representation). Color indices 0-15
have predefined color representations (see the PGPLOT manual), but
these may be changed with PGSCR. Color indices above 15 have no
predefined representations: if these indices are used, PGSCR must
be called to define the representation.
Argument:
CI (input) : the color index to be used for subsequent plotting
on the current device (in range 0-max). If the
index exceeds the device-dependent maximum, the
default color index (1) is used.
%PGSCIR
set color index range
SUBROUTINE PGSCIR(ICILO, ICIHI)
INTEGER ICILO, ICIHI
Set the color index range to be used for producing images with
PGGRAY or PGIMAG. If the range is not all within the range supported
by the device, a smaller range will be used. The number of
different colors available for images is ICIHI-ICILO+1.
Arguments:
ICILO (input) : the lowest color index to use for images
ICIHI (input) : the highest color index to use for images
%PGSCLP
enable or disable clipping at edge of viewport
SUBROUTINE PGSCLP(STATE)
INTEGER STATE
Normally all PGPLOT primitives except text are ``clipped'' at the
edge of the viewport: parts of the primitives that lie outside
the viewport are not drawn. If clipping is disabled by calling this
routine, primitives are visible wherever they lie on the view
surface. The default (clipping enabled) is appropriate for almost
all applications.
Argument:
STATE (input) : 0 to disable clipping, or 1 to enable clipping.
25-Feb-1997 [TJP] - new routine.
%PGSCR
set color representation
SUBROUTINE PGSCR (CI, CR, CG, CB)
INTEGER CI
REAL CR, CG, CB
Set color representation: i.e., define the color to be
associated with a color index. Ignored for devices which do not
support variable color or intensity. Color indices 0-15
have predefined color representations (see the PGPLOT manual), but
these may be changed with PGSCR. Color indices 16-maximum have no
predefined representations: if these indices are used, PGSCR must
be called to define the representation. On monochrome output
devices (e.g. VT125 terminals with monochrome monitors), the
monochrome intensity is computed from the specified Red, Green, Blue
intensities as 0.30*R + 0.59*G + 0.11*B, as in US color television
systems, NTSC encoding. Note that most devices do not have an
infinite range of colors or monochrome intensities available;
the nearest available color is used. Examples: for black,
set CR=CG=CB=0.0; for white, set CR=CG=CB=1.0; for medium gray,
set CR=CG=CB=0.5; for medium yellow, set CR=CG=0.5, CB=0.0.
Argument:
CI (input) : the color index to be defined, in the range 0-max.
If the color index greater than the device
maximum is specified, the call is ignored. Color
index 0 applies to the background color.
CR (input) : red, green, and blue intensities,
CG (input) in range 0.0 to 1.0.
CB (input)
%PGSCRL
scroll window
SUBROUTINE PGSCRL (DX, DY)
REAL DX, DY
This routine moves the window in world-coordinate space while
leaving the viewport unchanged. On devices that have the
capability, the pixels within the viewport are scrolled
horizontally, vertically or both in such a way that graphics
previously drawn in the window are shifted so that their world
coordinates are unchanged.
If the old window coordinate range was (X1, X2, Y1, Y2), the new
coordinate range will be approximately (X1+DX, X2+DX, Y1+DY, Y2+DY).
The size and scale of the window are unchanged.
Thee window can only be shifted by a whole number of pixels
(device coordinates). If DX and DY do not correspond to integral
numbers of pixels, the shift will be slightly different from that
requested. The new window-coordinate range, and hence the exact
amount of the shift, can be determined by calling PGQWIN after this
routine.
Pixels that are moved out of the viewport by this operation are
lost completely; they cannot be recovered by scrolling back.
Pixels that are ``scrolled into'' the viewport are filled with
the background color (color index 0).
If the absolute value of DX is bigger than the width of the window,
or the aboslute value of DY is bigger than the height of the window,
the effect will be the same as zeroing all the pixels in the
viewport.
Not all devices have the capability to support this routine.
It is only available on some interactive devices that have discrete
pixels. To determine whether the current device has scroll capability,
call PGQINF.
Arguments:
DX (input) : distance (in world coordinates) to shift the
window horizontally (positive shifts window to the
right and scrolls to the left).
DY (input) : distance (in world coordinates) to shift the
window vertically (positive shifts window up and
scrolls down).
%PGSCRN
set color representation by name
SUBROUTINE PGSCRN(CI, NAME, IER)
INTEGER CI
CHARACTER*(*) NAME
INTEGER IER
Set color representation: i.e., define the color to be
associated with a color index. Ignored for devices which do not
support variable color or intensity. This is an alternative to
routine PGSCR. The color representation is defined by name instead
of (R,G,B) components.
Color names are defined in an external file which is read the first
time that PGSCRN is called. The name of the external file is
found as follows:
1. if environment variable (logical name) PGPLOT_RGB is defined,
its value is used as the file name;
2. otherwise, if environment variable PGPLOT_DIR is defined, a
file "rgb.txt" in the directory named by this environment
variable is used;
3. otherwise, file "rgb.txt" in the current directory is used.
If all of these fail to find a file, an error is reported and
the routine does nothing.
Each line of the file
defines one color, with four blank- or tab-separated fields per
line. The first three fields are the R, G, B components, which
are integers in the range 0 (zero intensity) to 255 (maximum
intensity). The fourth field is the color name. The color name
may include embedded blanks. Example:
255 0 0 red
255 105 180 hot pink
255 255 255 white
0 0 0 black
Arguments:
CI (input) : the color index to be defined, in the range 0-max.
If the color index greater than the device
maximum is specified, the call is ignored. Color
index 0 applies to the background color.
NAME (input) : the name of the color to be associated with
this color index. This name must be in the
external file. The names are not case-sensitive.
If the color is not listed in the file, the
color representation is not changed.
IER (output) : returns 0 if the routine was successful, 1
if an error occurred (either the external file
could not be read, or the requested color was
not defined in the file).
%PGSFS
set fill-area style
SUBROUTINE PGSFS (FS)
INTEGER FS
Set the Fill-Area Style attribute for subsequent area-fill by
PGPOLY, PGRECT, or PGCIRC. Four different styles are available:
solid (fill polygon with solid color of the current color-index),
outline (draw outline of polygon only, using current line attributes),
hatched (shade interior of polygon with parallel lines, using
current line attributes), or cross-hatched. The orientation and
spacing of hatch lines can be specified with routine PGSHS (set
hatch style).
Argument:
FS (input) : the fill-area style to be used for subsequent
plotting:
FS = 1 => solid (default)
FS = 2 => outline
FS = 3 => hatched
FS = 4 => cross-hatched
Other values give an error message and are
treated as 2.
%PGSHLS
set color representation using HLS system
SUBROUTINE PGSHLS (CI, CH, CL, CS)
INTEGER CI
REAL CH, CL, CS
Set color representation: i.e., define the color to be
associated with a color index. This routine is equivalent to
PGSCR, but the color is defined in the Hue-Lightness-Saturation
model instead of the Red-Green-Blue model. Hue is represented
by an angle in degrees, with red at 120, green at 240,
and blue at 0 (or 360). Lightness ranges from 0.0 to 1.0, with black
at lightness 0.0 and white at lightness 1.0. Saturation ranges from
0.0 (gray) to 1.0 (pure color). Hue is irrelevant when saturation
is 0.0.
Examples: H L S R G B
black any 0.0 0.0 0.0 0.0 0.0
white any 1.0 0.0 1.0 1.0 1.0
medium gray any 0.5 0.0 0.5 0.5 0.5
red 120 0.5 1.0 1.0 0.0 0.0
yellow 180 0.5 1.0 1.0 1.0 0.0
pink 120 0.7 0.8 0.94 0.46 0.46
Reference: SIGGRAPH Status Report of the Graphic Standards Planning
Committee, Computer Graphics, Vol.13, No.3, Association for
Computing Machinery, New York, NY, 1979. See also: J. D. Foley et al,
``Computer Graphics: Principles and Practice'', second edition,
Addison-Wesley, 1990, section 13.3.5.
Argument:
CI (input) : the color index to be defined, in the range 0-max.
If the color index greater than the device
maximum is specified, the call is ignored. Color
index 0 applies to the background color.
CH (input) : hue, in range 0.0 to 360.0.
CL (input) : lightness, in range 0.0 to 1.0.
CS (input) : saturation, in range 0.0 to 1.0.
%PGSHS
set hatching style
SUBROUTINE PGSHS (ANGLE, SEPN, PHASE)
REAL ANGLE, SEPN, PHASE
Set the style to be used for hatching (fill area with fill-style 3).
The default style is ANGLE=45.0, SEPN=1.0, PHASE=0.0.
Arguments:
ANGLE (input) : the angle the hatch lines make with the
horizontal, in degrees, increasing
counterclockwise (this is an angle on the
view surface, not in world-coordinate space).
SEPN (input) : the spacing of the hatch lines. The unit spacing
is 1 percent of the smaller of the height or
width of the view surface. This should not be
zero.
PHASE (input) : a real number between 0 and 1; the hatch lines
are displaced by this fraction of SEPN from a
fixed reference. Adjacent regions hatched with the
same PHASE have contiguous hatch lines. To hatch
a region with alternating lines of two colors,
fill the area twice, with PHASE=0.0 for one color
and PHASE=0.5 for the other color.
%PGSITF
set image transfer function
SUBROUTINE PGSITF (ITF)
INTEGER ITF
Set the Image Transfer Function for subsequent images drawn by
PGIMAG, PGGRAY, or PGWEDG. The Image Transfer Function is used
to map array values into the available range of color indices
specified with routine PGSCIR or (for PGGRAY on some devices)
into dot density.
Argument:
ITF (input) : type of transfer function:
ITF = 0 : linear
ITF = 1 : logarithmic
ITF = 2 : square-root
%PGSLCT
select an open graphics device
SUBROUTINE PGSLCT(ID)
INTEGER ID
Select one of the open graphics devices and direct subsequent
plotting to it. The argument is the device identifier returned by
PGOPEN when the device was opened. If the supplied argument is not a
valid identifier of an open graphics device, a warning message is
issued and the current selection is unchanged.
[This routine was added to PGPLOT in Version 5.1.0.]
Arguments:
ID (input, integer): identifier of the device to be selected.
%PGSLS
set line style
SUBROUTINE PGSLS (LS)
INTEGER LS
Set the line style attribute for subsequent plotting. This
attribute affects line primitives only; it does not affect graph
markers, text, or area fill.
Five different line styles are available, with the following codes:
1 (full line), 2 (dashed), 3 (dot-dash-dot-dash), 4 (dotted),
5 (dash-dot-dot-dot). The default is 1 (normal full line).
Argument:
LS (input) : the line-style code for subsequent plotting
(in range 1-5).
%PGSLW
set line width
SUBROUTINE PGSLW (LW)
INTEGER LW
Set the line-width attribute. This attribute affects lines, graph
markers, and text. The line width is specified in units of 1/200
(0.005) inch (about 0.13 mm) and must be an integer in the range
1-201. On some devices, thick lines are generated by tracing each
line with multiple strokes offset in the direction perpendicular to
the line.
Argument:
LW (input) : width of line, in units of 0.005 inch (0.13 mm)
in range 1-201.
%PGSTBG
set text background color index
SUBROUTINE PGSTBG (TBCI)
INTEGER TBCI
Set the Text Background Color Index for subsequent text. By default
text does not obscure underlying graphics. If the text background
color index is positive, however, text is opaque: the bounding box
of the text is filled with the color specified by PGSTBG before
drawing the text characters in the current color index set by PGSCI.
Use color index 0 to erase underlying graphics before drawing text.
Argument:
TBCI (input) : the color index to be used for the background
for subsequent text plotting:
TBCI < 0 => transparent (default)
TBCI >= 0 => text will be drawn on an opaque
background with color index TBCI.
%PGSUBP
subdivide view surface into panels
SUBROUTINE PGSUBP (NXSUB, NYSUB)
INTEGER NXSUB, NYSUB
PGPLOT divides the physical surface of the plotting device (screen,
window, or sheet of paper) into NXSUB x NYSUB `panels'. When the
view surface is sub-divided in this way, PGPAGE moves to the next
panel, not the next physical page. The initial subdivision of the
view surface is set in the call to PGBEG. When PGSUBP is called,
it forces the next call to PGPAGE to start a new physical page,
subdivided in the manner indicated. No plotting should be done
between a call of PGSUBP and a call of PGPAGE (or PGENV, which calls
PGPAGE).
If NXSUB > 0, PGPLOT uses the panels in row order; if <0,
PGPLOT uses them in column order, e.g.,
NXSUB=3, NYSUB=2 NXSUB=-3, NYSUB=2
+-----+-----+-----+ +-----+-----+-----+
| 1 | 2 | 3 | | 1 | 3 | 5 |
+-----+-----+-----+ +-----+-----+-----+
| 4 | 5 | 6 | | 2 | 4 | 6 |
+-----+-----+-----+ +-----+-----+-----+
PGPLOT advances from one panels to the next when PGPAGE is called,
clearing the screen or starting a new page when the last panel has
been used. It is also possible to jump from one panel to another
in random order by calling PGPANL.
Arguments:
NXSUB (input) : the number of subdivisions of the view surface in
X (>0 or <0).
NYSUB (input) : the number of subdivisions of the view surface in
Y (>0).
%PGSVP
set viewport (normalized device coordinates)
SUBROUTINE PGSVP (XLEFT, XRIGHT, YBOT, YTOP)
REAL XLEFT, XRIGHT, YBOT, YTOP
Change the size and position of the viewport, specifying
the viewport in normalized device coordinates. Normalized
device coordinates run from 0 to 1 in each dimension. The
viewport is the rectangle on the view surface "through"
which one views the graph. All the PG routines which plot lines
etc. plot them within the viewport, and lines are truncated at
the edge of the viewport (except for axes, labels etc drawn with
PGBOX or PGLAB). The region of world space (the coordinate
space of the graph) which is visible through the viewport is
specified by a call to PGSWIN. It is legal to request a
viewport larger than the view surface; only the part which
appears on the view surface will be plotted.
Arguments:
XLEFT (input) : x-coordinate of left hand edge of viewport, in NDC.
XRIGHT (input) : x-coordinate of right hand edge of viewport,
in NDC.
YBOT (input) : y-coordinate of bottom edge of viewport, in NDC.
YTOP (input) : y-coordinate of top edge of viewport, in NDC.
%PGSWIN
set window
SUBROUTINE PGSWIN (X1, X2, Y1, Y2)
REAL X1, X2, Y1, Y2
Change the window in world coordinate space that is to be mapped on
to the viewport. Usually PGSWIN is called automatically by PGENV,
but it may be called directly by the user.
Arguments:
X1 (input) : the x-coordinate of the bottom left corner
of the viewport.
X2 (input) : the x-coordinate of the top right corner
of the viewport (note X2 may be less than X1).
Y1 (input) : the y-coordinate of the bottom left corner
of the viewport.
Y2 (input) : the y-coordinate of the top right corner
of the viewport (note Y2 may be less than Y1).
%PGTBOX
draw frame and write (DD) HH MM SS.S labelling
SUBROUTINE PGTBOX (XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB)
REAL XTICK, YTICK
INTEGER NXSUB, NYSUB
CHARACTER XOPT*(*), YOPT*(*)
Draw a box and optionally label one or both axes with (DD) HH MM SS
style numeric labels (useful for time or RA - DEC plots). If this
style of labelling is desired, then PGSWIN should have been called
previously with the extrema in SECONDS of time.
In the seconds field, you can have at most 3 places after the decimal
point, so that 1 ms is the smallest time interval you can time label.
Large numbers are coped with by fields of 6 characters long. Thus
you could have times with days or hours as big as 999999. However,
in practice, you might have trouble with labels overwriting themselves
with such large numbers unless you a) use a small time INTERVAL,
b) use a small character size or c) choose your own sparse ticks in
the call to PGTBOX.
PGTBOX will attempt, when choosing its own ticks, not to overwrite
the labels, but this algorithm is not very bright and may fail.
Note that small intervals but large absolute times such as
TMIN = 200000.0 s and TMAX=200000.1 s will cause the algorithm
to fail. This is inherent in PGPLOT's use of single precision
and cannot be avoided. In such cases, you should use relative
times if possible.
PGTBOX's labelling philosophy is that the left-most or bottom tick of
the axis contains a full label. Thereafter, only changing fields are
labelled. Negative fields are given a '-' label, positive fields
have none. Axes that have the DD (or HH if the day field is not
used) field on each major tick carry the sign on each field. If the
axis crosses zero, the zero tick will carry a full label and sign.
This labelling style can cause a little confusion with some special
cases, but as long as you know its philosophy, the truth can be divined.
Consider an axis with TMIN=20s, TMAX=-20s. The labels will look like
+----------+----------+----------+----------+
0h0m20s 10s -0h0m0s 10s 20s
Knowing that the left field always has a full label and that
positive fields are unsigned, informs that time is decreasing
from left to right, not vice versa. This can become very
unclear if you have used the 'F' option, but that is your problem !
Exceptions to this labelling philosophy are when the finest time
increment being displayed is hours (with option 'Y') or days.
Then all fields carry a label. For example,
+----------+----------+----------+----------+
-10h -8h -6h -4h -2h
PGTBOX can be used in place of PGBOX; it calls PGBOX and only invokes
time labelling if requested. Other options are passed intact to PGBOX.
Inputs:
XOPT : X-options for PGTBOX. Same as for PGBOX plus
'Z' for (DD) HH MM SS.S time labelling
'Y' means don't include the day field so that labels
are HH MM SS.S rather than DD HH MM SS.S The hours
will accumulate beyond 24 if necessary in this case.
'X' label the HH field as modulo 24. Thus, a label
such as 25h 10m would come out as 1h 10m
'H' means superscript numbers with d, h, m, & s symbols
'D' means superscript numbers with o, ', & '' symbols
'F' causes the first label (left- or bottom-most) to
be omitted. Useful for sub-panels that abut each other.
Care is needed because first label carries sign as well.
'O' means omit leading zeros in numbers < 10
E.g. 3h 3m 1.2s rather than 03h 03m 01.2s Useful
to help save space on X-axes. The day field does not
use this facility.
YOPT : Y-options for PGTBOX. See above.
XTICK : X-axis major tick increment. 0.0 for default.
YTICK : Y-axis major tick increment. 0.0 for default.
If the 'Z' option is used then XTICK and/or YTICK must
be in seconds.
NXSUB : Number of intervals for minor ticks on X-axis. 0 for default
NYSUB : Number of intervals for minor ticks on Y-axis. 0 for default
The regular XOPT and YOPT axis options for PGBOX are
A : draw Axis (X axis is horizontal line Y=0, Y axis is vertical
line X=0).
B : draw bottom (X) or left (Y) edge of frame.
C : draw top (X) or right (Y) edge of frame.
G : draw Grid of vertical (X) or horizontal (Y) lines.
I : Invert the tick marks; ie draw them outside the viewport
instead of inside.
L : label axis Logarithmically (see below).
N : write Numeric labels in the conventional location below the
viewport (X) or to the left of the viewport (Y).
P : extend ("Project") major tick marks outside the box (ignored if
option I is specified).
M : write numeric labels in the unconventional location above the
viewport (X) or to the right of the viewport (Y).
T : draw major Tick marks at the major coordinate interval.
S : draw minor tick marks (Subticks).
V : orient numeric labels Vertically. This is only applicable to Y.
The default is to write Y-labels parallel to the axis.
1 : force decimal labelling, instead of automatic choice (see PGNUMB).
2 : force exponential labelling, instead of automatic.
The default is to write Y-labels parallel to the axis
****************** EXCEPTIONS *******************
Note that
1) PGBOX option 'L' (log labels) is ignored with option 'Z'
2) The 'O' option will be ignored for the 'V' option as it
makes it impossible to align the labels nicely
3) Option 'Y' is forced with option 'D'
***************************************************************
%PGTEXT
write text (horizontal, left-justified)
SUBROUTINE PGTEXT (X, Y, TEXT)
REAL X, Y
CHARACTER*(*) TEXT
Write text. The bottom left corner of the first character is placed
at the specified position, and the text is written horizontally.
This is a simplified interface to the primitive routine PGPTXT.
For non-horizontal text, use PGPTXT.
Arguments:
X (input) : world x-coordinate of start of string.
Y (input) : world y-coordinate of start of string.
TEXT (input) : the character string to be plotted.
%PGTICK
draw a single tick mark on an axis
SUBROUTINE PGTICK (X1, Y1, X2, Y2, V, TIKL, TIKR, DISP,
: ORIENT, STR)
REAL X1, Y1, X2, Y2, V, TIKL, TIKR, DISP, ORIENT
CHARACTER*(*) STR
Draw and label single tick mark on a graph axis. The tick mark is
a short line perpendicular to the direction of the axis (which is not
drawn by this routine). The optional text label is drawn with its
baseline parallel to the axis and reading in the same direction as
the axis (from point 1 to point 2). Current line and text attributes
are used.
Arguments:
X1, Y1 (input) : world coordinates of one endpoint of the axis.
X2, Y2 (input) : world coordinates of the other endpoint of the axis.
V (input) : draw the tick mark at fraction V (0<=V<=1) along
the line from (X1,Y1) to (X2,Y2).
TIKL (input) : length of tick mark drawn to left of axis
(as seen looking from first endpoint to second), in
units of the character height.
TIKR (input) : length of major tick marks drawn to right of axis,
in units of the character height.
DISP (input) : displacement of label text to
right of axis, in units of the character height.
ORIENT (input) : orientation of label text, in degrees; angle between
baseline of text and direction of axis (0-360°).
STR (input) : text of label (may be blank).
%PGUPDT
update display
SUBROUTINE PGUPDT
Update the graphics display: flush any pending commands to the
output device. This routine empties the buffer created by PGBBUF,
but it does not alter the PGBBUF/PGEBUF counter. The routine should
be called when it is essential that the display be completely up to
date (before interaction with the user, for example) but it is not
known if output is being buffered.
Arguments: none
%PGVECT
vector map of a 2D data array, with blanking
SUBROUTINE PGVECT (A, B, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR,
1 BLANK)
INTEGER IDIM, JDIM, I1, I2, J1, J2, NC
REAL A(IDIM,JDIM), B(IDIM, JDIM), TR(6), BLANK, C
Draw a vector map of two arrays. This routine is similar to
PGCONB in that array elements that have the "magic value" defined by
the argument BLANK are ignored, making gaps in the vector map. The
routine may be useful for data measured on most but not all of the
points of a grid. Vectors are displayed as arrows; the style of the
arrowhead can be set with routine PGSAH, and the the size of the
arrowhead is determined by the current character size, set by PGSCH.
Arguments:
A (input) : horizontal component data array.
B (input) : vertical component data array.
IDIM (input) : first dimension of A and B.
JDIM (input) : second dimension of A and B.
I1,I2 (input) : range of first index to be mapped (inclusive).
J1,J2 (input) : range of second index to be mapped (inclusive).
C (input) : scale factor for vector lengths, if 0.0, C will be
set so that the longest vector is equal to the
smaller of TR(2)+TR(3) and TR(5)+TR(6).
NC (input) : vector positioning code.
<0 vector head positioned on coordinates
>0 vector base positioned on coordinates
=0 vector centered on the coordinates
TR (input) : array defining a transformation between the I,J
grid of the array and the world coordinates. The
world coordinates of the array point A(I,J) are
given by:
X = TR(1) + TR(2)*I + TR(3)*J
Y = TR(4) + TR(5)*I + TR(6)*J
Usually TR(3) and TR(5) are zero - unless the
coordinate transformation involves a rotation
or shear.
BLANK (input) : elements of arrays A or B that are exactly equal to
this value are ignored (blanked).
%PGVPORT
non-standard alias for PGSVP
SUBROUTINE PGVPORT (XLEFT, XRIGHT, YBOT, YTOP)
REAL XLEFT, XRIGHT, YBOT, YTOP
See description of PGSVP.
%PGVSIZ
set viewport (inches)
SUBROUTINE PGVSIZ (XLEFT, XRIGHT, YBOT, YTOP)
REAL XLEFT, XRIGHT, YBOT, YTOP
Change the size and position of the viewport, specifying
the viewport in physical device coordinates (inches). The
viewport is the rectangle on the view surface "through"
which one views the graph. All the PG routines which plot lines
etc. plot them within the viewport, and lines are truncated at
the edge of the viewport (except for axes, labels etc drawn with
PGBOX or PGLAB). The region of world space (the coordinate
space of the graph) which is visible through the viewport is
specified by a call to PGSWIN. It is legal to request a
viewport larger than the view surface; only the part which
appears on the view surface will be plotted.
Arguments:
XLEFT (input) : x-coordinate of left hand edge of viewport, in
inches from left edge of view surface.
XRIGHT (input) : x-coordinate of right hand edge of viewport, in
inches from left edge of view surface.
YBOT (input) : y-coordinate of bottom edge of viewport, in
inches from bottom of view surface.
YTOP (input) : y-coordinate of top edge of viewport, in inches
from bottom of view surface.
%PGVSIZE
non-standard alias for PGVSIZ
SUBROUTINE PGVSIZE (XLEFT, XRIGHT, YBOT, YTOP)
REAL XLEFT, XRIGHT, YBOT, YTOP
See description of PGVSIZ.
%PGVSTAND
non-standard alias for PGVSTD
SUBROUTINE PGVSTAND
See description of PGVSTD.
%PGVSTD
set standard (default) viewport
SUBROUTINE PGVSTD
Define the viewport to be the standard viewport. The standard
viewport is the full area of the view surface (or panel),
less a margin of 4 character heights all round for labelling.
It thus depends on the current character size, set by PGSCH.
Arguments: none.
%PGWEDG
annotate an image plot with a wedge
SUBROUTINE PGWEDG(SIDE, DISP, WIDTH, FG, BG, LABEL)
CHARACTER *(*) SIDE,LABEL
REAL DISP, WIDTH, FG, BG
Plot an annotated grey-scale or color wedge parallel to a given axis
of the the current viewport. This routine is designed to provide a
brightness/color scale for an image drawn with PGIMAG or PGGRAY.
The wedge will be drawn with the transfer function set by PGSITF
and using the color index range set by PGSCIR.
Arguments:
SIDE (input) : The first character must be one of the characters
'B', 'L', 'T', or 'R' signifying the Bottom, Left,
Top, or Right edge of the viewport.
The second character should be 'I' to use PGIMAG
to draw the wedge, or 'G' to use PGGRAY.
DISP (input) : the displacement of the wedge from the specified
edge of the viewport, measured outwards from the
viewport in units of the character height. Use a
negative value to write inside the viewport, a
positive value to write outside.
WIDTH (input) : The total width of the wedge including annotation,
in units of the character height.
FG (input) : The value which is to appear with shade
1 ("foreground"). Use the values of FG and BG
that were supplied to PGGRAY or PGIMAG.
BG (input) : the value which is to appear with shade
0 ("background").
LABEL (input) : Optional units label. If no label is required
use ' '.
%PGWINDOW
non-standard alias for PGSWIN
SUBROUTINE PGWINDOW (X1, X2, Y1, Y2)
REAL X1, X2, Y1, Y2
See description of PGSWIN.
%PGWNAD
set window and adjust viewport to same aspect ratio
SUBROUTINE PGWNAD (X1, X2, Y1, Y2)
REAL X1, X2, Y1, Y2
Change the window in world coordinate space that is to be mapped on
to the viewport, and simultaneously adjust the viewport so that the
world-coordinate scales are equal in x and y. The new viewport is
the largest one that can fit within the previously set viewport
while retaining the required aspect ratio.
Arguments:
X1 (input) : the x-coordinate of the bottom left corner
of the viewport.
X2 (input) : the x-coordinate of the top right corner
of the viewport (note X2 may be less than X1).
Y1 (input) : the y-coordinate of the bottom left corner
of the viewport.
Y2 (input) : the y-coordinate of the top right corner of the
viewport (note Y2 may be less than Y1).