#### Description:

This class provides facilities for producing 2D graphical output. A Plot is a specialised form of FrameSet, in which the base Frame describes a `"` graphical`"` coordinate system and is associated with a rectangular plotting area in the underlying graphics system. This plotting area is where graphical output appears. It is defined when the Plot is created.

The current Frame of a Plot describes a `"` physical`"` coordinate system, which is the coordinate system in which plotting operations are specified. The results of each plotting operation are automatically transformed into graphical coordinates so as to appear in the plotting area (subject to any clipping which may be in effect).

Because the Mapping between physical and graphical coordinates may often be non-linear, or even discontinuous, most plotting does not result in simple straight lines. The basic plotting element is therefore not a straight line, but a geodesic curve (see astCurve, astGenCurve and astPolyCurve). A Plot also provides facilities for drawing markers or symbols (astMark), text (astText) and grid lines (astGridLine). It is also possible to draw curvilinear axes with optional coordinate grids (astGrid). A range of Plot attributes is available to allow precise control over the appearance of graphical output produced by these functions.

You may select different physical coordinate systems in which to plot (including the native graphical coordinate system itself) by selecting different Frames as the current Frame of a Plot, using its Current attribute. You may also set up clipping (see astClip) to limit the extent of any plotting you perform, and this may be done in any of the coordinate systems associated with the Plot, not necessarily the one you are plotting in.

Like any FrameSet, a Plot may also be used as a Frame. In this case, it behaves like its current Frame, which describes the physical coordinate system.

When used as a Mapping, a Plot describes the inter-relation between graphical coordinates (its base Frame) and physical coordinates (its current Frame). It differs from a normal FrameSet, however, in that an attempt to transform points which lie in clipped areas of the Plot will result in bad coordinate values (AST__BAD).

#### Constructor Function

astPlot

#### Inheritance

The Plot class inherits from the FrameSet class.

#### Attributes

In addition to those attributes common to all FrameSets, every Plot also has the following attributes:

- Abbrev: Abbreviate leading fields?

- Border: Draw a border around valid regions of a Plot?

- Clip: Clip lines and/or markers at the Plot boundary?

- ClipOp: Combine Plot clipping limits using a boolean OR?

- Colour(element): Colour index for a Plot element

- DrawAxes(axis): Draw axes for a Plot?

- DrawTitle: Draw a title for a Plot?

- Escape: Allow changes of character attributes within strings?

- Edge(axis): Which edges to label in a Plot

- Font(element): Character font for a Plot element

- Gap(axis): Interval between linearly spaced major axis values

- Grf: Select the graphics interface to use.

- Grid: Draw grid lines for a Plot?

- Invisible: Draw graphics in invisible ink?

- LabelAt(axis): Where to place numerical labels for a Plot

- LabelUnits(axis): Use axis unit descriptions in a Plot?

- LabelUp(axis): Draw numerical Plot labels upright?

- Labelling: Label and tick placement option for a Plot

- LogGap(axis): Interval between logarithmically spaced major axis values

- LogPlot(axis): Map the plot onto the screen logarithmically?

- LogTicks(axis): Space the major tick marks logarithmically?

- MajTickLen(axis): Length of major tick marks for a Plot

- MinTickLen(axis): Length of minor tick marks for a Plot

- MinTick(axis): Density of minor tick marks for a Plot

- NumLab(axis): Draw numerical axis labels for a Plot?

- NumLabGap(axis): Spacing of numerical axis labels for a Plot

- Size(element): Character size for a Plot element

- Style(element): Line style for a Plot element

- TextGapType: Controls interpretation of TextLabGap and TitleGap

- TextLab(axis): Draw descriptive axis labels for a Plot?

- TextLabGap(axis): Spacing of descriptive axis labels for a Plot

- TickAll: Draw tick marks on all edges of a Plot?

- TitleGap: Vertical spacing for a Plot title

- Tol: Plotting tolerance

- Width(element): Line width for a Plot element

#### Functions

In addition to those functions applicable to all FrameSets, the following functions may also be applied to all Plots:

- astBBuf: Begin a new graphical buffering context

- astBorder: Draw a border around valid regions of a Plot

- astBoundingBox: Returns a bounding box for previously drawn graphics

- astClip: Set up or remove clipping for a Plot

- astCurve: Draw a geodesic curve

- astEBuf: End the current graphical buffering context

- astGenCurve: Draw a generalized curve

- astGetGrfContext: Get the graphics context for a Plot

- astGrfPop: Retrieve previously saved graphics functions

- astGrfPush: Save the current graphics functions

- astGrfSet: Register a graphics routine for use by a Plot

- astGrid: Draw a set of labelled coordinate axes

- astGridLine: Draw a grid line (or axis) for a Plot

- astMark: Draw a set of markers for a Plot

- astPolyCurve: Draw a series of connected geodesic curves

- astRegionOutline: Draw the outline of an AST Region

- astText: Draw a text string for a Plot

#### Graphical Elements

The colour index, character font, character size, line style and line width used for plotting can be set independently for various elements of the graphical output produced by a Plot. The different graphical elements are identified by appending the strings listed below as subscripts to the Plot attributes Colour(element), Font(element), Size(element), Style(element) and Width(element). These strings are case-insensitive and unambiguous abbreviations may be used. Elements of the graphical output which relate to individual axes can be referred to either independently (e.g. `"` (Grid1)`"` and `"` (Grid2)`"` ) or together (e.g. `"` (Grid)`"` ):

- Axes: Axis lines drawn through tick marks using astGrid

- Axis1: Axis line drawn through tick marks on axis 1 using astGrid

- Axis2: Axis line drawn through tick marks on axis 2 using astGrid

- Border: The Plot border drawn using astBorder, astGrid or astRegionOutline

- Curves: Geodesic curves drawn using astCurve, astGenCurve or astPolyCurve

- Grid: Grid lines drawn using astGridLine or astGrid

- Grid1: Grid lines which cross axis 1, drawn using astGridLine or astGrid

- Grid2: Grid lines which cross axis 2, drawn using astGridLine or astGrid

- Markers: Graphical markers (symbols) drawn using astMark

- NumLab: Numerical axis labels drawn using astGrid

- NumLab1: Numerical labels for axis 1 drawn using astGrid

- NumLab2: Numerical labels for axis 2 drawn using astGrid

- Strings: Text strings drawn using astText

- TextLab: Descriptive axis labels drawn using astGrid

- TextLab1: Descriptive label for axis 1 drawn using astGrid

- TextLab2: Descriptive label for axis 2 drawn using astGrid

- Ticks: Tick marks (both major and minor) drawn using astGrid

- Ticks1: Tick marks (both major and minor) for axis 1 drawn using astGrid

- Ticks2: Tick marks (both major and minor) for axis 2 drawn using astGrid

- Title: The Plot title drawn using astGrid

Copyright (C) 2021 East Asian Observatory