Previous: pltam Up: ../plot79_p.html Next: pltax3
SUBROUTINE PLTAX (X,Y,TITLE,NCHAR,SIZE,THETA,VMIN,DV,VMAX,TICK, X MODE) C$ (Draw Labelled and Numbered Linear Axis) C$ This routine provides for the drawing of a linear axis with C$ optional labelling and numbering. To maintain space for C$ labelling, one will normally call PLTAX with (X,Y) at one C$ of the corners of an inner frame about one inch inside the C$ page frame. If coordinates are in inches on a 8.5 x 11 C$ inch horizontal page, SIZE = 9.0 or 6.5 inches is C$ appropriate. If PLTGA or PLTGP is used to plot the graph, C$ the plot viewport should be reset to a box of the size set C$ by the axis lengths in order for the scales to correspond C$ correctly to the plotted data points. All lettering is C$ done with routine SYMTXT which can simulate a thick pen of C$ a diameter settable by a call to SYMPD; this can be used to C$ enhance the letter quality if desired. It also supports C$ subscripts, superscripts, kerning, and changes of font, C$ style, and color. C$ C$ The arguments are: C$ C$ (X,Y).....Point in world coordinates from which axis C$ originates. C$ C$ TITLE.....Hollerith label for the axis. This is always C$ drawn centered along the axis in the direction C$ away from (X,Y). Very long titles will be drawn C$ with smaller characters in order to fit on one C$ line. Leading and trailing blanks are C$ automatically ignored for the purposes of C$ centering. The special character sequence "$N" C$ or "$n" (dollar N) in the string represents a C$ newline, and may be used to request multi-line C$ text. For example, the string C$ C$ "title 1$Ntitle 2$ntitle3" C$ C$ will generate three lines of the form C$ C$ title 1 C$ title 2 C$ title 3 C$ C$ In the unlikely event that "$N" is actually C$ needed in the text, it can be obtained by C$ bracketing either character with case switch C$ characters. With the default <PLOT79> case C$ switch characters, this would be $<N> or <$>N. C$ C$ NCHAR..... .GT. 0 - Number of characters in TITLE(*). The C$ current font will be used. C$ .LE. 0 - No title to be drawn. C$ C$ SIZE......Length of the axis in world units. SIZE .LE. 0.0 C$ will be assumed to be bad input and will cause C$ immediate return. C$ C$ THETA.....Counterclockwise angle of inclination of axis in C$ degrees. THETA = 0.0 for a horizontal axis, and C$ 90.0 for a vertical axis. C$ C$ VMIN......Starting value of variable along axis. C$ C$ DV........Increment of variable between successive ticks. C$ numbering will be placed at each tick, if there C$ is sufficient space. Otherwise, numbering will C$ be at intervals of 2, 5, or 10 ticks, or at some C$ power of ten times one of these. It is the C$ caller's responsibility to ensure that C$ (VMAX-VMIN)/DV is a positive integer. C$ C$ VMAX......Ending value of variable along axis. C$ C$ TICK...... .GT. 0.0 - Length of tick marks above C$ (counterclockwise from) the axis. C$ .EQ. 0.0 - No tick marks to be drawn. C$ .LT. 0.0 - Length of tick marks below (clockwise C$ from) the axis. C$ A usual value will be TICK = 0.015 on the unit C$ square, but choosing TICK equal to the length of C$ the perpendicular axes will form a grid. C$ C$ MODE......Option flags stored in the low-order bits of the C$ integer value. These are selected by adding one C$ or more of the following option values, and then C$ setting the sign of the resulting sum to select C$ numbering and titling above (+) or below (-) the C$ axis. C$ C$ 1 - Number the axis. Even values of MODE C$ suppress numbering, but still affect the C$ choice of tick mark spacing. C$ 2 - Numbering perpendicular (i.e. rotated -90 C$ degrees) to the axis; otherwise it is C$ parallel to the axis. C$ 4 - Omit the first number along the axis. This C$ can be useful to prevent text overlap when C$ more than one axis is drawn from a point. C$ 8 - Omit the last number along the axis. C$ 16 - Omit any zero number along the axis. This C$ can be useful for drawing axes intersecting C$ at the origin. C$ C$ Any value outside the legal range -31..+31 will C$ raise an error condition. The usual choice for a C$ numbered left vertical (Y) axis will be MODE = C$ +3, and for a numbered lower horizontal (X) axis C$ will be MODE = -1. The usual choice for an C$ unnumbered right vertical axis will be MODE = +2 C$ or -2, and for an unnumbered upper horizontal C$ axis will be MODE = 0. C$ C$ The sizes and positions of number labels, even if C$ they are not drawn, affect the choice of where C$ longer tick marks are drawn. In the common case C$ where the four sides of a graph have axes, but C$ two are unnumbered, for the unnumbered axes, C$ simply subtract 1 from the unsigned MODE value C$ used for the opposite numbered axis. C$ C$ Coordinates need not be in inches, for PLTAX will work C$ correctly in any world coordinate units. However, one C$ should remember that axes cannot be drawn along the extreme C$ edges of a viewport, since all pen motion outside the C$ viewport is suppressed, and space must be available for C$ labelling and possibly tick marking. C$ C$ In order to avoid lettering which is horizontally or C$ vertically distorted, one should ensure that a unit aspect C$ ratio is in effect for the world coordinate system. C$ Although it would be possible to rescale lettering C$ internally in the case of a non-unit aspect ratio, the C$ problem remains that angles will also be distorted, so that C$ axes drawn at other than multiples of 90 degrees will be C$ skewed. Internal rescaling of lettering is therefore not C$ provided. C$ C$ Considerable care has been taken to make the plotted axis C$ look "nice". Thus the title is centered along the axis, C$ and numbers are centered at their corresponding tick marks. C$ numbering is attempted at the intervals requested by the C$ caller, but if this would cause overlap of adjacent C$ numbers, then the numbering interval is increased by a C$ factor of 2, 5, 10, or one of these times a power of 10. C$ If this happens, numbered ticks are drawn somewhat larger C$ than their immediate neighbors. However, if ticks larger C$ than 10 percent of the axis length are requested, then it C$ is assumed that they are intended for drawing grid lines, C$ and then all ticks are drawn the same size. C$ C$ Great effort is expended to determine the optimum format to C$ be used for the numbers. Up to six figures before the C$ decimal point, and three after will be used if necessary. C$ if the axis numbers lie outside this range, then they are C$ rescaled to the range (-10,+10), and a power of ten factor C$ is appended to the last number on the axis. Floating-point C$ forms such as 1.345e-03 are not used. Trailing zeroes C$ which would follow the decimal point in each number are C$ suppressed, and if numbering is perpendicular to the axis C$ (mode = +2 or -2), the numbers are right-adjusted (mode = C$ +2) or left-adjusted (mode = -1), as is customary in C$ high-quality hand preparation of drawings. C$ C$ The American Institute of Physics Style Manual makes the C$ following recommendations which are worth taking note of: C$ C$ * For single-column reproduction, figures will be reduced C$ to about 7.5 cm in width. After reduction, symbols and C$ letters should be no smaller than 0.15 cm in height, C$ corresponding to a fractional height of 0.02 on the unit C$ square. Labels and numbers should be drawn in C$ characters of the same size, using a simple font which C$ will tolerate reduction without the loss of serifs. C$ C$ * Tick marks should be placed at each number, and be C$ inside the graph. They should be about 3/4 the size of C$ the lettering, or about 0.015 on the unit square. C$ C$ * Dense gridding should be avoided, and grid lines should C$ only be used if they are essential for measurement of C$ data from the graph. Grid lines should extend only from C$ numbered ticks. C$ C$ * Graphs should be enclosed with 4 lines, each with ticks. C$ Only the left vertical and bottom horizontal axes should C$ be labelled, unless two different vertical or horizontal C$ scales are to be illustrated. C$ C$ * Labelling should be from left-to-right on the horizontal C$ axes, and from bottom-to-top on the vertical axes. C$ C$ * Powers of ten should be avoided in favor of Systeme C$ Internationale prefixes where possible. Thus, write C$ "nanometers" instead of "meters (x 10**-9)". If a power C$ of ten is required, it should be placed with the last C$ number on the axis to avoid ambiguity. Does "meters (x C$ 10)" mean that the numbers represent dekameters or C$ centimeters? C$ C$ * Numbers with 5 or more digits on either side of the C$ decimal point are written with spaces separating groups C$ of three digits to avoid conflict with European reversed C$ usage of periods and commas. Numbers with 4 or fewer C$ digits on either side of the decimal point are written C$ without spaces. Examples are "12 000", "6 427 000", C$ "24.077 094 3", "1200", "4620.010", and "24.0032". C$ C$ * Scales should be chosen carefully to avoid excessively C$ large blank areas on the graph. C$ C$ (18-Feb-1991)