The SAS System defines
many graphical style elements. Some have a very narrow scope, such
as those that control the display of box plots. Using these style
elements as a starting point, you can change the style attribute values
to achieve a very different appearance for your box plots. The same
is true for histograms, contours, and some other plot types.
Using the DEFAULT style
for an example, here is a portion of the style definition for elements
that are related to box plots:
proc template;
define style Styles.Default;
...
style GraphBox /
capstyle = "serif"
connect = "mean"
displayopts = "fill caps median mean outliers";
style GraphBoxMean / ... ;
style GraphBoxMedian / ... ;
style GraphBoxOutlier / ... ;
style GraphBoxWhisker / ... ;
...
end;
run;
|
|
|
general box plot properties
(see the next table)
|
|
marker properties of
mean marker
(MARKERSYMBOL= , MARKERSIZE=,
CONTRASTCOLOR=)
|
|
line properties of the
median line
(LINESTYLE=, LINETHICKNESS=,
CONTRASTCOLOR=)
|
|
marker properties of
outliers
(MARKERSYMBOL=, MARKERSIZE=,
CONTRASTCOLOR=)
|
|
line properties of whiskers
and caps
(LINESTYLE=, LINETHICKNESS=,
CONTRASTCOLOR=)
|
Attributes and Values
for the GraphBox Style Element
|
|
|
|
|
"MEAN" | "MEDIAN" |
"Q1" | "Q3" | "MIN" | "MAX"
|
statistic to connect
with line
|
|
"SERIF" | "LINE" | "BRACKET"
|
shape at ends of whiskers
|
|
|
show caps at end of
whiskers
|
|
|
|
|
|
show a marker for the
mean
|
|
|
show a line for the
median
|
|
|
show markers for the
outliers
|
|
|
show line connecting
same statistic on multiple boxes
|
|
|
|
The DISPLAYOPTS
attribute of GraphBox lists the general features to be displayed.
The following diagram shows the standard display for box plots, as
defined by the DEFAULT style. The keywords that are related to the
appearance features are annotated:
The two display options
that are not the default are CONNECT (show connect lines) and NOTCHES.
The STATISTICAL style
is derived from the DEFAULT style and inherits the GraphBox element
from the parent DEFAULT style. The following code generates a box
plot for the STATISTICAL style:
proc template;
define statgraph boxplotdef;
begingraph;
entrytitle "Statistical Style";
layout overlay / xaxisopts=(label="Age" type=linear);
boxplot x=ageatstart y=cholesterol / intervalboxwidth=40;
endlayout;
endgraph;
end;
ods graphics on / outputfmt=static;
ods html style=statistical;
proc sgrender data=sashelp.heart template=boxplotdef;
where ageatstart between 50 and 55;
run;
ods graphics off;
For this example, we
want to change the following attributes on the default box plot:
-
By default, serif caps are displayed
at the end of the fences. We want to remove those caps from the fence
lines.
-
By default, the boxes are filled.
We want to display empty, notched boxes.
-
By default, the mean values are
represented by hollow diamonds. We want to display filled diamonds
and slightly reduce their size.
-
By default, the marker symbols
for the outliers are hollow black circles. We want to change the size
and shape of the marker symbols, and again reduce their size.
To make these changes,
we can derive a new style from
the STATISTICAL style and set the attributes that we want to change.
Any attribute settings that we do not change are inherited
from the parent STATISTICAL style. The following style definition
effects the desired changes:
proc template;
define style Styles.Boxplot;
parent = styles.statistical;
style GraphBox from GraphBox /
capstyle = "line"
displayopts = "caps median mean outliers notches";
style GraphBoxMean from GraphBoxMean /
markersymbol="diamondfilled"
contrastcolor=GraphColors("gcdata1")
markersize = 5px;
style GraphOutlier from GraphOutlier /
markersize = 5px
markersymbol = "x"
contrastcolor = GraphColors("gcdata2");
end;
run;
-
The DEFINE STYLE statement assigns
the name BOXPLOT to our new style, and sets the STATISTICAL style
as the parent style.
-
On the GraphBox style element,
the CAPSTYLE= attribute is set to LINE, which removes the serif caps
from the end of the fences. The DISPLAYOPTS= attribute drops the FILL
value from the display list and adds the NOTCHES value; these changes
determine that the graph displays empty, notched boxes.
-
On the GraphBoxMean style element,
the marker symbol is changed to a filled diamond and the marker size
is reduced to 5 pixels (the default is 9 pixels). The CONTRASTCOLOR=
attribute is set to GCDATA1 (the default is GCDATA).
-
On the GraphBoxOutlier style element,
the marker symbol is changed to an X and the marker size is reduced
to 5 pixels (the default is 7 pixels). The CONTRASTCOLOR= attribute
is set to GCDATA2 (the default is GCOUTLIER).
The following code generates
a box plot for the BOXPLOT style:
proc template;
define statgraph boxplotdef;
begingraph;
entrytitle "Boxplot Style";
layout overlay / xaxisopts=(label="Age" type=linear);
boxplot x=ageatstart y=cholesterol / intervalboxwidth=40;
endlayout;
endgraph;
end;
ods graphics on / outputfmt=static;
ods html style=Styles.Boxplot;
proc sgrender data=sashelp.heart template=boxplotdef;
where ageatstart between 50 and 55;
run;
ods graphics off;
When making such style
changes remember that you are affecting all box plot displays for
all procedures that produce box plots when this style is in effect.
It is possible to change the box plot appearance for specific procedures,
but to do this, a specific graph template must be modified, not a
style template.
For a comprehensive
description of the style elements affecting ODS graphics, see the
section for the style elements affecting template-based graphics in
the Appendix for ODS Style Elements of the
SAS Output Delivery System: User's Guide.