triplot Macro for trilinear plots triplot

Visualizing Categorical Data: triplot

$Version: 1.2 (7 Apr 1998)
Michael Friendly
York University

The triplot macro ( [download] get triplot.sas)

Macro for trilinear plots

The TRIPLOT macro plots three variables (rows of an n x 3 table) in an equilateral triangle, so that each point represents the proportions of each variable to the total for that observation.

Usage

The TRIPLOT macro is called with keyword parameters. The names of three variables must be given in the VAR= parameter. The arguments may be listed within parentheses in any order, separated by commas. For example:
  data tridemo;
     input A B C point $12.;
     label point='Point';
  cards;
  40 30 30  (40,30,30)
  20 60 20  (20,60,20)
  10 10 80  (10,10,80)
  ;
  %triplot(var=A B C, class=Point, id=point, gridby=25,
     symbols=dot dot dot, idht=1.6, axes=bot,
     symht=4, gridclr=gray);

Parameters

DATA=
The name of data set to be plotted. [Default: DATA=_LAST_]
VAR=
The names of three variables used as the axes in the plot. The values of each observation are normally all non-negative. Missing values are treated as 0.
CLASS=
The name of a class variable determining plotting symbol. Different values of the CLASS= variable are represented by the values in the COLORS= and SYMBOLS= lists, used sequentially.
ID=
The name of an observation identifier (label) variable
BY=
The name of a BY variable, for separate plots
WHERE=
WHERE-clause to subset observations to be plotted.
IDHT=
Height of ID label [Default: IDHT=2]
IDCLR=
Color of ID label [Default: IDCLR='BLACK']
IDPOS=
Position of ID label [Default: IDPOS=8]
IDSUBSET=
A SAS expression (which may use any data set variables used to subset ID labels. If an ID= variable is given, and the IDSUBSET= expression evaluates to non-zero, the observation is labelled in the plot. [Default: IDSUBSET=1]
INTERP=
Interpolation between points, a SYMBOL statement option. If INTERP=JOIN, points within the same CLASS= value are connected by lines. Most other SYMBOL statement interpolation options would give bizare results. [Default: INTERP=NONE]
SYMHT=
Height of point symbols [Default: SYMHT=2]
SYMBOLS=
A list of one or more symbols for points, corresponding to the levels of the CLASS= variable. The symbols are reused cyclically if there are more class levels than symbols. [Default: SYMBOLS=%STR(DOT CIRCLE SQUARE $ : TRIANGLE = X _ Y)]
COLORS=
A list of one or more colors for points, corresponding to the levels of the CLASS= variable. The colors are also reused cyclically as required. [Default: COLORS=BLACK RED BLUE GREEN BROWN ORANGE PURPLE YELLOW]
BACKCLR=
Background color inside the trilinear plot. [Default: BACKCLR=WHITE]
BACKPAT=
Background fill pattern. For a plot with a light gray background, for example, specify BACKPAT=SOLID and BACKCLR=GRAYD0. [Default: BACKPAT=EMPTY]
GRIDBY=
Grid line interval. For grid lines at 25, 50, and 75%, for example, specify GRIDBY=25. [Default: GRIDBY=20]
GRIDCLR=
Grid line color [Default: GRIDCLR=GRAY]
GRIDLINE=
Style of grid lines [Default: GRIDLINE=34]
AXES=
Type of axes, one of NONE, FULL, TOP, or BOT. AXES=NONE draws no coordinate axes; AXES=FULL draws a line from 0 to 100% for each of the three coordinates; AXES=TOP draws a line from the apex to the centroid only; AXES=BOT draws a line from the centroid to the base only. [Default: AXES=NONE]
AXISCLR=
Color of axis lines [Default: AXISCLR=BLUE]
AXISLINE=
Style of axis lines [Default: AXISLINE=1]
XOFF=
X offset, in %, for adjusting the plot [Default: XOFF=2]
XSCALE=
X scale factor for adjusting the plot. Before plotting the X coordinates are adjusted by X = XOFF + XSCALE * X. [Default: XSCALE=.96]
YOFF=
X offset, in %, for adjusting the plot [Default: YOFF=2]
YSCALE=
Y scale factor for adjusting the plot. Before plotting the Y coordinates are adjusted by Y = YOFF + YSCALE * Y. [Default: YSCALE=.96]
LEGEND=
The name of legend statement or 'NONE'. If LEGEND= is not specified, and there is more than one group defined by a CLASS= variable, a legend statement is constructed internally. If LEGEND=NONE, no legend is drawn; otherwise the LEGEND= value is used as the name of a legend statement.
LABHT=
Height of variable labels, in GUNITs [Default: LABHT=2]
LABLOC=
Location of variable label: 0 or 100 [Default: LABLOC=100]
NAME=
Name of the graphics catalog entry [Default: NAME=TRIPLT]

Example

%include vcd(triplot);        *-- or include in an autocall library;

data tripdemo;
	input anger fear sadness nam $;
	label anger='Anger' fear='Fear' sadness='Sadness';
cards;
20 20 20  Alf
80 10 10  Betty
25 25 50  Chas
90  5  5  Dick
 0  0 60  Ed
5  25  5  Alf
20 60 20  Betty
25 25 50  Chas
5  90  5  Dick
;
%triplot(var=anger fear sadness, class=nam, id=nam, gridby=10);

See also