Name: PGTBOX Purpose: draw frame and write (DD) HH MM SS.S labelling Category: GRAPHICS File: pgplot.src Author: T.J. Pearson Use: see description below. Description: 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' *************************************************************** Updates: Oct 16, 1998: JPT automatically extracted from source.