ODS The output delivery system

Similar documents
Chapter 13 Introduction to Graphics Using SAS/GRAPH (Self-Study)

Want Quick Results? An Introduction to SAS/GRAPH Software. Arthur L. Carpenter California Occidental Consultants

Picturing Statistics Diana Suhr, University of Northern Colorado

SAS/GRAPH Introduction. Winfried Jakob, SAS Administrator Canadian Institute for Health Information

Applied Regression Modeling: A Business Approach

Tips to Customize SAS/GRAPH... for Reluctant Beginners et al. Claudine Lougee, Dualenic, LLC, Glen Allen, VA

Quick Results with the Output Delivery System

ODS and Web Enabled Device Drivers: Displaying and Controlling Large Numbers of Graphs. Arthur L. Carpenter and Richard O. Smith Data Explorations

The Chart Title can be formatted to change color, pattern, typeface, size and alignment using the Format Chart Title dialog box.

CHAPTER 1 Introduction to SAS/GRAPH Software

Modifying Graphics in SAS

Using SAS/GRAPH Software to Create Graphs on the Web Himesh Patel, SAS Institute Inc., Cary, NC Revised by David Caira, SAS Institute Inc.

IMPROVING A GRAPH USING PROC GPLOT AND THE GOPTIONS STATEMENT

Creating Graphs Using SAS ODS Graphics Designer

Data Driven Annotations: An Introduction to SAS/GRAPH s Annotate Facility

It s Not All Relative: SAS/Graph Annotate Coordinate Systems

Something for Nothing! Converting Plots from SAS/GRAPH to ODS Graphics

Arthur L. Carpenter California Occidental Consultants

Chapter 1 Introduction. Chapter Contents

ABC s of Graphs in Version 8 Caroline Bahler, Meridian Software, Inc.

Coders' Corner. Paper ABSTRACT GLOBAL STATEMENTS INTRODUCTION

The Plot Thickens from PLOT to GPLOT

Getting Started with the SGPLOT Procedure

Information Visualization

Introduction to SAS/GRAPH Statistical Graphics Procedures

Interactive Graphs from the SAS System

Easing into Data Exploration, Reporting, and Analytics Using SAS Enterprise Guide

Lab #1: Introduction to Basic SAS Operations

HOUR 12. Adding a Chart

Choosing the Right Procedure

Working with Charts Stratum.Viewer 6

An Introduction to ODS for Statistical Graphics in SAS 9.1 Robert N. Rodriguez SAS Institute Inc., Cary, North Carolina, USA

Information Visualization

SAMLab Tip Sheet #5 Creating Graphs

INTRODUCTION TO THE SAS ANNOTATE FACILITY

LAB 1 INSTRUCTIONS DESCRIBING AND DISPLAYING DATA

NEW FEATURES IN FOUNDATION SAS 9.4 CYNTHIA JOHNSON CUSTOMER LOYALTY

USING SAS PROC GREPLAY WITH ANNOTATE DATA SETS FOR EFFECTIVE MULTI-PANEL GRAPHICS Walter T. Morgan, R. J. Reynolds Tobacco Company ABSTRACT

Using MACRO and SAS/GRAPH to Efficiently Assess Distributions. Paul Walker, Capital One

BusinessObjects Frequently Asked Questions

Volume is m 3 0f H 2. SAS/GRAPH" Odds and Ends; Little Things That Make a Big Difference. Arthur L. Carpenter ABSTRACT TEXT OPTIONS IN TITLES

The GANNO Procedure. Overview CHAPTER 12

Creating Charts in Office 2007 Table of Contents

Using Graph-N-Go With ODS to Easily Present Your Data and Web-Enable Your Graphs Curtis A. Smith, Defense Contract Audit Agency, La Mirada, CA

SAS Visual Analytics 8.2: Working with Report Content

The GSLIDE Procedure. Overview. About Text Slides CHAPTER 27

SAS CLINICAL SYLLABUS. DURATION: - 60 Hours

EXST SAS Lab Lab #8: More data step and t-tests

Microsoft Excel 2000 Charts

Creating a Basic Chart in Excel 2007

Select Cases. Select Cases GRAPHS. The Select Cases command excludes from further. selection criteria. Select Use filter variables

A Juxtaposition of Tables and Graphs Using SAS /GRAPH Procedures

Annotate Dictionary CHAPTER 11

MICROSOFT EXCEL Working with Charts

Multiple Graphical and Tabular Reports on One Page, Multiple Ways to Do It Niraj J Pandya, CT, USA

COMPUTER TECHNOLOGY SPREADSHEETS BASIC TERMINOLOGY. A workbook is the file Excel creates to store your data.

PivotTables & Charts for Health

Applied Regression Modeling: A Business Approach

Objectives. Objectives. Plan Ahead. Starting Excel 3/9/2010. Excel Chapter 3. Microsoft Office 2007

Math 121 Project 4: Graphs

Microsoft Excel 2002 M O D U L E 2

Archer R. Gravely, UNC Asheville, Asheville, NC

The Evolution of a SAS/GRAPH Application Jenine Eason, AutoTrader.com, Atlanta, GA

New Visualization in V8.2

Splitting Axis Text. Splitting Text in Axis Tick Mark Values

Math 227 EXCEL / MEGASTAT Guide

Microsoft Excel 2007

Chapter 10 Working with Graphs and Charts

Excel 2016 Charting. Course objectives: Student Training and Support. Staff Training (Bookings)

Professional outputs with ODS LATEX

Paper ODS, YES! Odious, NO! An Introduction to the SAS Output Delivery System

ODS DOCUMENT, a practical example. Ruurd Bennink, OCS Consulting B.V., s-hertogenbosch, the Netherlands

FILLPATTERNS in SGPLOT Graphs Pankhil Shah, PPD, Morrisville, NC

ezimagex2 User s Guide Version 1.0

Microsoft Excel 2013: Part 3 More on Formatting Cells And Worksheet Basics. To apply number formatting:

Excel Core Certification

Using Charts in a Presentation 6

Making Presentations More Fun with DATA Step Graphics Interface (DSGI) Hui-Ping Chen, Eli Lilly and Company, Indianapolis, Indiana

STAT:5400 Computing in Statistics

Univariate Statistics Summary

Dealing with Data in Excel 2013/2016

CHAPTER 2 Fundamental Concepts for Using Base SAS Procedures

Paper Time Contour Plots. David J. Corliss, Wayne State University / Physics and Astronomy

Move =(+0,+5): Making SAS/GRAPH Work For You

Using Annotate Datasets to Enhance Charts of Data with Confidence Intervals: Data-Driven Graphical Presentation

Tips for Producing Customized Graphs with SAS/GRAPH Software. Perry Watts, Fox Chase Cancer Center, Philadelphia, PA

Tips and Tricks in Creating Graphs Using PROC GPLOT

Saratoga Springs City School District/Office of Continuing Education Introduction to Microsoft Excel 04 Charts. 1. Chart Types and Dimensions

Paper SIB-096. Richard A. DeVenezia, Independent Consultant, Remsen, NY

Microsoft Excel. Charts

Getting started with Minitab 14 for Windows

A Plot & a Table per Page Times Hundreds in a Single PDF file

Six Cool Things You Can Do In Display Manager Jenine Milum, Charlotte, NC Wachovia Bank

Contents of SAS Programming Techniques

Choosing the Right Procedure

TS-659: Exporting SAS/GRAPH Output to PDF Files from Release 8.2 and higher

Golden Software, Inc.

STATGRAPHICS Sigma Express for Microsoft Excel. Getting Started

Google FusionTables for Global Health User Manual

Effective Forecast Visualization With SAS/GRAPH Samuel T. Croker, Lexington, SC

Transcription:

SAS Lecture 6 ODS and graphs ODS The output delivery system Aidan McDermott, May 2, 2006 1 2 The output delivery system During the 1990 s SAS introduced a more extensive way of dealing with SAS output called the output delivery system or ODS for short. Until then: Each procedure decided what tables to print and in what format. And this created difficulties: Inconsistency in output formats between different procedures Some procedures did not produce certain output datasets Output was designed largely for line-printers (except for graphics output) and used monospace fonts. The output delivery system The ODS combines raw data with table definitions to produce output objects These objects can be sent to ODS destinations: traditional monospace output output for high-resolution printers datasets HTML LaTeX etc. The ODS provides table definitions that define the structure of the output. You can customize these definitions or create your own. Procedures no longer handle output but pass the raw data and a table name to the ODS. 3 4 The output delivery system Destination Examples: Destination listing output HTML printer latex Produces Listing output SAS datasets HTML output Postscript, pdf, LaTeX source Extendable to new destinations in the future You use the ODS statement to specify one or more destinations. 5 The output delivery system ODS creates output objects. Each output object contains the results of a procedure or DATA step (the data component) and may also contain information about how to render the results (the table definition). Numeric data is stored at machine precision. You can change the default table definition. This is somewhat reminiscent of variable 6 values and formats. 1

The output delivery system The output delivery system ODS creates a link to each output object in the Results window and identifies each output object by the appropriate icon. 7 8 The ODS statement ODS is a global statement -- can go anywhere used to choose a destination used to choose which objects to send to the destination and which to exclude options nodate nonumber; ods printer pdf file = odsprinter.pdf ; proc reg data=mydata; model y = x; ods printer close; PDF output will produce a pdf file for printing. (Use PS for a postscript file.) 9 10 Producing HTML One the most important features of the ODS is its ability to produce HTML The ODS HTML statement can create: a body file containing the results from procedures a table of contents that links to the body file a table of pages that links to the body file a frame that displays the table of contents, the table of pages and the body file HTML example ods html file = odshtml-body.htm contents= odshtml-contents.htm page= odshtml-page.htm frame= odshtml-frame.htm ; proc univariate data=infant; var rate98 rate99; title; ods html close; 11 12 2

HTML example ods html file = body.htm contents= contents.htm page= page.htm frame= frame.htm ; 13 ODS You can control which objects get printed to the html files by naming them. Proc univariate produces five output objects, to find out what they are called you can use the trace statement (or look in the help): ods trace on; this will write a list of objects to the log: ods trace on; proc univariate data=infant; var rate98 rate99; run ods trace off; 14 Log 15 HTML example ods html file = odshtml-body.htm contents= odshtml-contents.htm page= odshtml-page.htm frame= odshtml-frame.htm ; ods select BasicMeasures Quantiles; proc univariate data=infant; var rate98 rate99; title; ods html close; You can control the format of the output by using proc template to change the default template. 16 HTML example You can, of course, output the body only if you wish: ods html body = c:\myhtml\admit.htm ; proc print data=clinic.admit label; var sex age height weight actlevel; label actlevel= Activity Level ; ods html close; HTML example ods html body = c:\myhtml\admit.htm ; proc print data=clinic.admit label; var sex age height weight actlevel; label actlevel= Activity Level ; ods html close; 17 18 3

Default destination By default the listing destination is open. You can close it by typing: ods listing close; ODS - creating datasets You can create an output dataset by using the OUTPUT destination: ODS OUTPUT output-object=sas-data-set; /* close the listing */ ods listing close; /* Ask for the dataset measures to be made */ ods output BasicMeasures=measures; proc univariate data=infant; var rate98 rate99; title ; Or by setting the results tab in the preferences window 19 20 ODS - creating datasets /* Open HTML */ ods html body= measutes-body.htm contents= measures-contents.htm frame= measures-frame.htm ; proc print data=measures noobs headings=horizontal; title Output dataset produced from univariate ; /*Reset the destinations to their defaults */ ods html close; ods listing ; 21 URLs ods html body= c:\records\data.html contents= c:\records\toc.html frame= c:\records\frame.html ; toc.html contains a reference to c:\records\data.html frame.html contains a reference to c:\records\toc.html and c:\records\data.html 22 URLs If you move the web pages to a new location or put them on a web server you would need to update all the references. Instead use a URL specification: ods html body='c:\records\data.html' (url='data.html') contents='c:\records\toc.html' (url='toc.html') frame='c:\records\frame.html'; Ok if data.html and toc.html are at the same location as frame.html ods html body='c:\records\data.html' (url='http://mysite.com/myreports/data.html') contents='c:\records\toc.html' (url='http://mysite.com/mycontents/toc.html') Path option Putting the full pathname in each of the body, contents, and frame is not a good idea. Instead you can use the path otpions: ods html path = c:\records (url=none) body='data.html' (url='data.html') contents='toc.html' (url='toc.html') frame='frame.html'; Using relative paths is usually a good idea. frame='c:\records\frame.html'; 23 24 4

Style You can change the appearance of the html by using the style option. ods listing close; ods html body='c:\records\data.html'(url='data.html') contents='c:\records\toc.html'(url='toc.html') frame='c:\records\frame.html' style=brick; Other styles: beige, brick, brown, D3D, default, minimal Word and Excel The html destination is an excellent way to transfer your SAS output to Microsoft Word or Excel. Some things to note: Use a gif device driver to translate graphic output. Use colors and fonts compatible with Word and Excel. Colors may be given in cxrrggbb format where RR is for red GG for green and BB for blue, so cxff0000 is pure red (numbers are in hexadecimal). goptions device = gif570 colors=(cxaaaa00,cx555500); 25 26 Example We have two causes of mortality data for two U.S. cities by sex, agegroup for the years 1987 to 2000. We wish to make a plot and a table and transfer the results to Excel say. The data looks like this: Example 27 28 Example Example 29 30 5

SAS/GRAPH There are a small number of graphic types commonly used in public health presentations and publication. These basic types are either used alone or mixed together to form a composite graphic. Here we will look at how to build some of these basic types of graph. Golden Rule: Everybody is a graph critic. 31 Two types of graph maker If you are using SAS for statistics and data management then it seems natural to use it to produce your graphs as well. Sometimes a statistical procedure will produce the graph you are looking for anyway. Need a one-off graph for a presentation versus production line graphs. To produce quick and dirty graphs you can use Graph-n-go. Very easy to use; not bad for putting multiple graphs on one page; data viewer is a graph type; only a small number of graph types available; not all options available; labor intensive so not suitable for production line graphs. Use SAS/Graph procedures Very flexible; complete control over graphic elements; less labor intensive in the long harder to learn; same control 32 can be used for SAS/STAT graphics output. Some common types of graph Charts Histograms Stem and leaf plots Boxplots Plots Contour plots / 3-dimensional plots Maps Gantt charts Trellis plots Trees / pedigrees / dendograms (mathematical) graphs / networks Flow charts / entity-relationship diagrams 33 34 Graphic output within SAS You have already seen some graphic output from within SAS. proc means, proc univariate, proc genmod, proc lifetest etc. all produce graphs Other procedures in SAS specifically produce graphs, even some procedures that are not part of SAS/Graph (proc boxplot is an example) Here our aim is to produce publication/presentation-- quality graphs. 35 Graph basics SAS stores graphs in catalogs (an entity similar to a folder in windows). Graphs are stored in a SAS proprietary format. By default graphs are stored in a catalog called Gseg in the work library. Graphs can be translated to postscript, gif, jpeg, and a number of other commonly used formats for printing or including in other documents (Word, html, etc.). 36 6

Graphic control There are three ways to control the look of a sas/graph. 1. Use options within the procedure 2. Use global commands 3. Use goptions GOPTIONS set the environment for a graphics program to run and send output independent of the program remain in effect for the entire SAS session unless changed or reset control appearance of graphic elements by specifying default fonts, colors, text heights etc. Useful when you want the same options in multiple procs 37 38 PROC GOPTIONS used to review current GOPTIONS lists alphabetically all of the current GOPTIONS in the LOG window proc goptions; Can also type goptions at the command line GOPTIONS GOPTIONS options-list ROTATE= portrait or landscape (will override the setting in the print dialog box) RESET=ALL resets all options to defaults including all global statements RESET=GOPTIONS resets only goptions statements 39 40 COLORS=device dependent default color list for device driver GUNIT= unit of measurement for height in global statements, such as TITLE and FOOTNOTE cell - character cells pct - percent of graphics area in - inches Data From the SAS samples folder. Three Californian pollutant monitoring stations (AZU, LIV, SFO) One monthly measurement (taken on the 15th of the month) for CO, O3, SO4, temperature etc. for each station. 36 observations in all Month is a numeric variable taking the value 1 for January, 2 for February, etc. 41 42 7

Californian Air pollutant Data ca88air Charts Examples Look for graphic elements in each chart Look for common data types Look for similarities among the examples 43 44 45 46 47 48 8

49 50 Charts All the examples used a small number of graphic elements Main difference between plots is the polygon/area type Most involved a categorical/discrete variable and a numeric variable. A histogram uses a continuous variable to create categories. The counts of a categorical variable can be used to create the numeric variable. 51 52 Proc GCHART produces charts based on the values of one or more chart variables. produces vertical and horizontal bar charts, block charts, pie charts etc. graphs based on statistics - counts, percentages, sums, or means run-group processing numeric and character variables 53 Proc GCHART example proc format; value seas 1 = Win 2 = Spr 3 = Sum 4 = Fal ; data ca88air; set vol1.ca88air(where=(station= SFO )); if ( month in (12,1,2) ) then season = 1; else if ( month in (3,4,5) ) then season = 2; else if ( month in (6,7,8) ) then season = 3; else if ( month in (9,10,11)) then season = 4; format season seas.; format month mth.; 54 9

Proc GCHART example title1 h=4 Mean seasonal carbon monoxide for station SFO ; footnote j=l h=4 f=simplex 'Bar Chart - vertical ; proc gchart data=ca88air; vbar season / sumvar=co type=mean discrete ctext=black clm=95 ; quit; 55 56 Proc GCHART syntax PROC GCHART data=data set name; One of the following: VBAR variables / options; HBAR variables / options; STAR variables / options; PIE variables / options; BLOCK variables / options; VBAR separate bar chart for each chart variable each bar represents the statistic selected for a value of the chart variable response axis (vertical) provides a scale for statistic graphed midpoint axis - horizontal axis 57 58 VBAR SYNTAX VBAR chart variables/ options; chart-variable(s) specifies one or more variables that define the categories of data to chart. options specifies appearance, statistics, axes and midpoint options VBAR midpoints are the values of the chart variable that identify categories of data. By default, midpoints are selected or calculated by the procedure. The way the procedure handles the midpoints depends on whether the values of the chart variable are character, discrete numeric, or continuous numeric. character chart variables- separate bar is drawn for each value 59 60 10

VBAR numeric chart variables - each bar represents a range of values - DISCRETE option generates a midpoint for each unique value of the chart variable. - generates midpoints that represent ranges of values. By default, determines the ranges, calculates the median value of each range, and displays the median value at each midpoint on the chart. A value that falls exactly halfway between two midpoints is placed in the higher range. 61 VBAR OPTIONS For character or discrete numeric values, you can use the MIDPOINTS= option to rearrange the midpoints or to exclude midpoints from the chart. For character data MIDPOINTS= list values in quotes MIDPOINTS= Sydney Atlanta Paris 62 VBAR OPTIONS For continuous numeric variables, use the MIDPOINTS= option to change the number of midpoints, to control the range of values each midpoint represents, or to change the order of the midpoints. To control the range of values each midpoint represents, use the MIDPOINTS= option to specify the median value of each range. For example, to select the ranges 20-29, 30-39, and 40-49, specify MIDPOINTS=25 35 45 63 Other options; VBAR OPTIONS DISCRETEseparate bar for each value of numeric variable TYPE=statistic specifies the chart statistic. FREQ frequency PCT percentage SUM sum (the default) MEAN mean CLM=confidence-level draws chart confidence intervals (error bars) 64 VBAR SYNTAX SUMVAR=variable specifies variable to used for sum or mean calculations for each midpoint. The resulting statistics are represented by the length of the bars along the response axis, and they are displayed at major tick marks. REQUIRED if specifying TYPE- MEAN or SUM. RAXIS= axisn response axis MAXIS=axisn midpoint axis 65 GLOBAL STATEMENTS define titles, footnotes used to control axes, symbols, patterns, and legends can be defined anywhere inside a proc or before a proc in effect until canceled, replaced, or the end of SAS session cancel by repeating statement with no options or using goptions RESET=ALL; 66 11

GLOBAL STATEMENTS TITLE defines titles AXIS defines appearance of axes FOOTNOTE defines footnotes PATTERN defines patterns used in graphs (histograms) LEGEND defines legends SYMBOL defines symbols (plotting) NOTE adds text to graph 67 TITLE STATEMENT creates, changes or cancels a title for all subsequent graphics output in a SAS session allowed up to 10 titles keyword TITLE can be followed by unlimited number of text strings and options text strings enclosed in single or double quotes most recently created TITLE number replaces the previous TITLE of the same number 68 Title syntax TITLE<1,2...10> <options text >... <options-n> text-n >; Options: FONT=font HEIGHT= H=n<units> JUSTIFY= J=R L C specifies the font for the subsequent text. specifies the height of text characters in number of units specifies the alignment By default, JUSTIFY=C=center PATTERN STATEMENT defines the characteristics of patterns used in charts type of fill pattern - solid, empty, lined color An example of a global statement R=right L=left. 69 70 PATTERN STATEMENT PATTERN <1...99> options; OPTIONS COLOR= pattern color VALUE= fill E empty S solid Ln left slanting lines Rn right slanting lines Xn crosshatched lines where n is 1-5 1 indicating the lightest Proc GCHART example pattern1 color=blue value=fill; pattern2 color=red value=fill; proc gchart data=ca88air; star month / sumvar=co type=mean discrete ctext=black noheading ; quit; 71 72 12

Exporting graphs Make sure the graphics window has focus, by clicking on it. File export as Image select type of image gif, open other software program Powerpoint insert picture 73 74 Saving graphs Graphs can also be saved in a SAS catalog. They are stored in a SAS proprietary format. They can be viewed with proc greplay. goptions replace; libname mylib c:\temp\sasclass\myfiles ; proc gchart data=mydat gout=lib.mygraphs; proc greplay allows multiple plots on one page. 75 PROC GPLOT graphs one variable against another producing presentation quality plots coordinates of each point correspond to the values in one or more observations of the input data set. run-group processing - procedure does not end with a run - submit new statements and produce more graphs without another PROC - ends with QUIT or PROC or DATA 76 Proc GPLOT VERTICAL AXIS Y variable produces two-dimensional graphs that plot one variable against another within a set of coordinate axes graphs are automatically scaled to the values of your data, although scaling can be controlled with options or with AXIS statements. scatterplots, bubble plots plots, plots with interpolated lines (SYMBOL statement) 77 20 Tick Marks 10 2 4 6 8 Values HORIZONTAL AXIS X variable 78 13

PROC GPLOT GPLOT SYNTAX data=data-set-name <options>; PLOT request list </options list>; request list is of the form: vertical*horizontal e.g. PLOT y*x; vertical*horizontal=variable e.g. PLOT y*x=z; Graphics options on PLOT statement CTEXT= color GPLOT SYNTAX LEGEND= LEGENDn (uses nth global LEGEND statement) HAXIS=AXISn (uses nth global AXIS statement) VAXIS=AXISn (uses nth global AXIS statement) 79 80 Proc GPLOT example Suppose we are asked to draw a plot of ozone by month for the three stations SFO, LIV, AZU. After consulting the help we might try: proc gplot data=ca88air; plot o3 * month; quit; which produces: 81 82 Proc GPLOT example Increase the size of the text use a format to print out Month names clear the unwanted footnote GOPTIONS gunits=pct htext=4; footnote1; proc gplot data=ca88air; plot o3 * month ; format month mth.; title1 '1988 Air Quality Data - Ozone'; 83 84 14

Proc GPLOT example back to the help you can make a stratified plot by station x axis too crowded - use a different format proc gplot data=ca88air; plot o3 * month = station; format month mthc.; title1 '1988 Air Quality Data - Ozone'; 85 86 Proc GPLOT example the symbols in the plot are too small use symbol global statements! symbol1 v=dot i=join c=blue h=1.3; symbol2 v=dot i=join c=green h=1.3; symbol3 v=dot i=join c=brown h=1.3; proc gplot data=ca88air; plot o3 * month = station; format month mthc.; title1 '1988 Air Quality Data - Ozone'; 87 88 Proc GPLOT example The x-axis is not right - use an axis global statement axis1 minor = none label = (f=simplex j=c 'Ozone levels at three locations') major = (h=1.1) order = (0 to 13 by 1) value = (f=simplex h=3.0); proc gplot data=ca88air; plot o3 * month = station / haxis=axis1; format month mthc.; title1 '1988 Air Quality Data - Ozone'; 89 90 15

Proc GPLOT example The x-axis has extra characters - use a new format or use an axis global statement y-axis label need to be rotated and placed in center of axis legend needs moving - legend global command axis1 minor = none label = (f=centb j=c 'Ozone levels at three locations') major = (h=1.0) order = (0 to 13 by 1) value = (f=simplex h=3.0 " " "J" "F" "M" "A" "M" "J Proc GPLOT example axis2 label = (f=centb rotate=0 angle=90 j=c 'Ozone') value = (f=simplex h=3.0) ; legend1 across=3 position=(bottom center inside) label=none; proc gplot data=ca88air; plot o3 * month = station / haxis=axis1 vaxis=axis2; format month mthc.; title1 '1988 Air Quality Data - Ozone'; 91 92 "J" "A" "S" "O" "N" "D" " "); proc g3d and proc contour produce 3-dimensional analogs of gplot 93 94 16