The gchart procedure
1 / 34

The gchart Procedure - PowerPoint PPT Presentation

  • Updated On :

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.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'The gchart Procedure' - rane

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
The gchart procedure l.jpg
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:


    vbar plantht;



The gchart procedure2 l.jpg
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 l.jpg
Basic Output

This is kind of like

a histogram, except

for the spacing

This value of 75

corresponds to a

class ranging from

67.5 to 82.5

(with a frequency

of about 60)

A few options l.jpg
A Few Options

Sets the number of midpoints

  • In this version


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



Controls spacing between bars

Changes the statistic from frequency

to percent

So we get l.jpg
So We Get…

This is a histogram

Setting midpoints l.jpg
Setting Midpoints

  • You can also set midpoints explicitly:


    vbar plantht/space=0type=percent




The chart will be constructed

with these 7 values as class


Setting midpoints7 l.jpg
Setting Midpoints

  • We might try…


    value classes









    vbar plantht/space=0type=percent;

    format plantht classes.;



We get l.jpg
We Get…

SAS establishes

the midpoints first

then applies the format


The discrete option l.jpg
The Discrete Option


vbar plantht/discretespace=0type=percent;

format plantht classes.;



Discrete establishes each distinct

value of the midpoint variable as

a midpoint on the graph. If the

variable is formatted, the formatted

values are used for the construction.

If you use discrete with

a numeric variable you


1. Be sure it has only a

few distinct values.


2. Use a format to make

categories for it.

Result l.jpg

Bar width determines

the space available for

writing midpoint values

Bar width l.jpg
Bar Width


vbar plantht/discretespace=0type=percent width=12;

format plantht classes.;



Sets bar width

Horizontal bar charts l.jpg
Horizontal Bar Charts

proc format;

value $pol_type 'CO' = 'Carbon Monoxide' 'LEAD' = 'Lead' 'O3' = 'Ozone'

'SO2' = 'Sulfur Diox.';



hbar pol_type/discretetype=percent;

format pol_type pol_type.;



Horizontal bar charts13 l.jpg
Horizontal Bar Charts

Besides the orientation

of the bars, horizontal bar

charts differ in that they

produce a set of summary

statistics by default.

You can suppress this with

the nostats option.

Summary variables l.jpg
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.:


    hbar pol_type/discretesumvar=jobtotal type=meannostats;

    format pol_type $pol_type.;



Result15 l.jpg

Mean total cost is

now summarized for

each pollution type.

Note: Only two types of statistics

are available with summary variables,

the sum (which is the default) and

the mean

Axis modification l.jpg
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:


    where n is an integer between 1 and 99.

Axis modification18 l.jpg
Axis Modification

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


    hbar pol_type/discretesumvar=jobtotal type=meannostats maxis=axis1 raxis=axis2;

    format pol_type $pol_type.;

    axis1label=(c=blue h=1.5f=swissb ’Type of Pollution Project');

    axis2order=(0 to 100000 by 20000) minor=(n=1) value=(h=1.25f=swissb)

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



Assign axis statements

to each chart axis

Choose options/modifications

for specified axis

Some options l.jpg
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 options21 l.jpg
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 l.jpg
Where to Find More (If you dare…)

Bar fill patterns l.jpg
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 patterns24 l.jpg
Bar Fill Patterns


gives each bar its own

“pattern” or color

Setting a color list l.jpg
Setting a Color List

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

    goptionscolors=(blue red yellow cyan orange);


    hbar pol_type/discretesumvar=jobtotal type=meannostats

    maxis=axis1 raxis=axis2 patternid=midpoint;

    format pol_type $pol_type.;

    axis1label=(c=blue h=1.5f=swissb ’Type of Pollution Project');

    axis2order=(0 to 100000 by 20000)

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



This color becomes

the default axis and

text color

Setting a color list26 l.jpg
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 l.jpg
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.jpg
An Example

L, R and X


to left-leaning,


and crossed

lines. The


controls the


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 l.jpg
The group= option


hbar marsh/group=flower discretesumvar=plantht type=meannostats maxis=axis1 raxis=axis2 gaxis=axis3 patternid=midpoint;

format marsh marsh. flower flower.;

axis1label=(c=blue h=1.5f=swissb ’Marsh');

axis2order=(0 to 120 by 20) minor=(n=1) value=(h=1.25f=swissb)

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

axis3label=(c=green h=1.5f=swissb ’Flowering');



Sets up a “grouping” variable—bars for the

full set of midpoints are constructed for each

value of the group variable

We can modify the

group axis as well

The subgroup option l.jpg
The subgroup= option

Subgroup creates

stacked bars across levels

of a variable. (Not

appropriate for means)

The subgroup option32 l.jpg
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 l.jpg
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 modifications34 l.jpg
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.