34
The gchart Procedure The gchart Procedure is used to create bar charts of various types (it can also create pie charts. It’s most basic form would look something like this: proc gchart data=save.padgett; vbar plantht; run; quit;

The gchart Procedure The gchart Procedure is used to create bar charts of various types (it can also create pie charts. It’s most basic form would look

Embed Size (px)

Citation preview

The gchart Procedure

The gchart Procedure is used to create bar charts of various types (it can also create pie charts.

It’s most basic form would look something like this:

proc gchart data=save.padgett;vbar plantht;

run;quit;

The gchart Procedure

The vbar (or hbar) statement includes a variable that is referred to as the midpoint variable.

If this variable is of the character type, a midpoint is established for each unique value.

If it is numeric, SAS establishes classes or bins for it.

In either case, the frequency in each class is summarized by vertical (or horizontal) bars.

Basic Output

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

This is kind of likea histogram, except

for the spacingThis value of 75

corresponds to aclass ranging from

67.5 to 82.5(with a frequency

of about 60)

A Few Options

In this version

proc gchart data=save.padgett;

vbar plantht/space=0 type=percent levels=9;

run;

quit;Controls spacing between bars

Changes the statistic from frequencyto percent

Sets the number of midpoints

So We Get…

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

This is a histogram

Setting Midpoints

You can also set midpoints explicitly:

proc gchart data=save.padgett;

vbar plantht/space=0 type=percent

midpoints=0 25 50 75 100 125 150;

run;

quit; The chart will be constructedwith these 7 values as class

midpoints

Setting Midpoints We might try…

proc format;value classes

low-<30='<30'30-<60=’30-60'60-<90=’60-90'90-<120=’90-120'120-high='>120';

run;

proc gchart data=save.padgett;vbar plantht/space=0 type=percent;format plantht classes.;

run;quit;

We Get…

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Oops

SAS establishesthe midpoints first

then applies the format

The Discrete Option

proc gchart data=save.padgett;

vbar plantht/discrete space=0 type=percent;

format plantht classes.;

run;

quit; Discrete establishes each distinctvalue of the midpoint variable asa midpoint on the graph. If the

variable is formatted, the formattedvalues are used for the construction.

If you use discrete witha numeric variable you

should:1. Be sure it has only a

few distinct values.or

2. Use a format to makecategories for it.

Result

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Bar width determinesthe space available forwriting midpoint values

Bar Width

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

proc gchart data=save.plantht;vbar plantht/discrete space=0 type=percent

width=12;format plantht classes.;

run;quit;

Sets bar width

Horizontal Bar Charts

proc format;value $pol_type 'CO' = 'Carbon Monoxide' 'LEAD' =

'Lead' 'O3' = 'Ozone' 'SO2' = 'Sulfur Diox.';run;

proc gchart data=save.projects;

hbar pol_type/discrete type=percent;

format pol_type pol_type.;

run;

quit;

Horizontal Bar Charts

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Besides the orientationof the bars, horizontal barcharts differ in that they

produce a set of summarystatistics by default.

You can suppress this withthe nostats option.

Summary Variables If I want my bar chart to summarize values

of some analysis variable for each midpoint, use the sumvar= (and type= ) option.

E.g.:

proc gchart data=save.projects;

hbar pol_type/discrete sumvar=jobtotal type=mean nostats;

format pol_type $pol_type.;

run;

quit;

Result

Note: Only two types of statisticsare available with summary variables,

the sum (which is the default) andthe mean

Mean total cost isnow summarized foreach pollution type.

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Where to find more…

Axis Modification

The two axes on the bar graph are referred to as the midpoint axis (maxis) and the response axis (raxis).

Axes can be modified with axis statements. The general form of an axis statement is:

axisn options;

where n is an integer between 1 and 99.

Axis Modification

Lots of options can be set in an axis statement. E.g.:

proc gchart data=save.projects;hbar pol_type/discrete sumvar=jobtotal type=mean

nostats maxis=axis1 raxis=axis2;format pol_type $pol_type.;axis1 label=(c=blue h=1.5 f=swissb ’Type of Pollution Project');axis2 order=(0 to 100000 by 20000) minor=(n=1) value=(h=1.25 f=swissb)

label=(f=swissb c=red h=1.5 'Mean Job Cost in Dollars');

run;quit;

Assign axis statementsto each chart axis

Choose options/modificationsfor specified axis

The Result

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Some Options

c= sets axis color

w=sets axis width

label=(options) Sets axis label, some options:

h= text height c= text color f= font style ‘Any Text’ is the axis label (overrides any label

currently assigned) a= angle of the label text r= rotation of individual characters

Some Options

value =(options) controls appearance of axis values, options are

similar to those for label. order=(a to b by c)

sets axis starting and ending points and increment minor=(options) major=(options)

Controls style of major or minor tick marks. Some options: n= number of ticks (for minor it’s the number between

major ticks) h= height c= color w= width

Where to Find More (If you dare…)

Bar Fill Patterns

In all charts to this point, all bars have been red. It is possible to change the color, and it is possible to give each bar a different color.

To give bars different colors, specify patternid=midpoint in the hbar or vbar statement.

Bar Fill Patterns

patternid=midpointgives each bar its own

“pattern” or color

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Setting a Color List

The goptions statement allows us to set several global graphics options, one of which is a color list:

goptions colors=(blue red yellow cyan orange);proc gchart data=save.projects;

hbar pol_type/discrete sumvar=jobtotal type=mean nostatsmaxis=axis1 raxis=axis2

patternid=midpoint;format pol_type $pol_type.;axis1 label=(c=blue h=1.5 f=swissb ’Type of Pollution Project');axis2 order=(0 to 100000 by 20000)

minor=(n=1) value=(h=1.25 f=swissb) label=(f=swissb c=red h=1.5 ’Mean Total Project Cost');

run;quit;

This color becomesthe default axis and

text color

Setting a Color List

Remember, setting a color is an option for any axis statement, so if you change the color list, you can always override the first color behavior in the axis statement.

coutline= is an option you can use in the vbar or hbar statement to set the bar outline color.

Alternate Fill Patterns

You can specify some alternate fill patterns for bars (particularly useful for creating black & white charts) with a pattern statement(s).

The two major options in the pattern statement are c= and v=, for color and fill, respectively. Rules: If no color is specified, the fill pattern is applied

for each color in the color list. If a color is specified, the fill pattern is applied

only once. The fill pattern can be set to on of Ln, Rn or Xn;

where n is an integer between 1 and 5.

An Example

L, R and Xcorrespond

to left-leaning,right-leaningand crossedlines. The

numbercontrols the

thickness

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Add these pattern statements to your previous code to get the above bar graph:

pattern c=black v=L1; pattern c=black v=R1;

pattern c=black v=X1; pattern c=black v=L5;

pattern c=black v=R5;

The group= option

proc gchart data=save.padgett;hbar marsh/group=flower discrete sumvar=plantht type=mean

nostats maxis=axis1 raxis=axis2 gaxis=axis3 patternid=midpoint;

format marsh marsh. flower flower.;axis1 label=(c=blue h=1.5 f=swissb ’Marsh');axis2 order=(0 to 120 by 20) minor=(n=1) value=(h=1.25 f=swissb)

label=(f=swissb c=red h=1.5 'Mean Plant Height in Centimeters');axis3 label=(c=green h=1.5 f=swissb ’Flowering');

run;quit; Sets up a “grouping” variable—bars for the

full set of midpoints are constructed for eachvalue of the group variable

We can modify thegroup axis as well

Grouped Bar-Chart

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

The subgroup= option

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Subgroup creates stacked bars across levels

of a variable. (Not appropriate for means)

The subgroup= option

proc gchart data=save.padgett; hbar marsh/group=flower discrete type=percent nostats maxis=axis1 raxis= axis2 gaxis=axis3 patternid=subgroup subgroup=form legend=legend1; format marsh $marsh. flower $flower.; axis1 label=(c=blue h=1.5 f=swissb 'Marsh'); axis2 order=(0 to 50 by 10) minor=(n=1) value=(h=1.25 f=swissb) label=(f=swissb c=red h=1.5 ); axis3 label=(c=green h=1.5 f=swissb 'Flowering');legend1 across=1 label=(c=blue 'Form of Plant') frame cshadow=gray position=(top right) mode=share;

Legend Modifications

In a legend statement, some options available are: label= similar to what is available in the axis

statement. across= and down= sets limit for row or

column length in the legend (only use one) frame draws a border around the legend cshadow= places a shadow “behind” the

legend in the specified color.

Legend Modifications

position=( ) places the legend, choices include: inside/outside left/right/center top/bottom/middle (default is bottom center outside).

mode= tells how to allocate space for the chart and legend, choices are: reserve: sets aside space for the legend before graph

is drawn (can’t be used with position set to inside) share or protect: allows graph and legend to use the

same space. Share has the graph drawn over the legend if they intersect, protect does the opposite.