ABSTRACT INTRODUCTION

Size: px
Start display at page:

Download "ABSTRACT INTRODUCTION"

Transcription

1 Making SAS the Easy Way Out: Harnessing the Power of PROC TEMPLATE to Create Reproducible, Complex Graphs Debra A. Goldman, Memorial Sloan Kettering Cancer Center, New York, NY ABSTRACT With high pressure deadlines and mercurial collaborators, creating graphs in the most familiar way seems like the best option. Using post-processing programs like Photoshop or Microsoft Powerpoint to modify graphs is quicker and easier to the novice SAS User or for one s collaborators to do on their own. However, reproducibility is a huge issue in the scientific community. Any changes made outside statistical software need to be repeated when collaborator preferences change, the data changes, the journal requires additional elements, and a host of other reasons The likelihood of making errors increases along with the time spent making the figure. Learning PROC TEMPLATE allows one to seamlessly create complex, automatically generated figures and eliminates the need for post-processing. This paper demonstrates how to do complex graph manipulation procedures in SAS 9.3 or later to solve common problems, including lattice panel plots for different variables, split plots and broken axes, weighted panel plots, using select observations in each panel, waterfall plots, and graph annotation. The examples presented are healthcare based, but the methods are applicable to finance, business and education. Attendees should have a basic understanding of the macro language, graphing in SAS using SGPLOT, and ODS graphics. INTRODUCTION SGPLOT and SGPANEL are powerful graphing tools that can accomplish most of one s graphing needs. These procedures are written for a standard dataset and a logical coding mind. Ho wever, in my experience, not every graphical request follows the conventions of traditional coding. I ve found the capabilities of standard plotting procedures are limited in situations such as: Putting multiple graphs with different variables on the same lattice panel Using only select observations within each series or graph Splitting a plot to zoom in / reduce white space Creating a broken axis Annotating Kaplan Meier plots Creating a waterfall plot with a specific bar width Creating a panel plot with each plot being a different size Prior to learning PROC TEMPLATE and the graph template language (GTL), honestly, it was easier use post processing procedures, like Photoshop, to combine plots or to use other statistical software. I know PROC TEMPLATE can seem like an insurmountable feat. The syntax is slightly different, leading to frequent initial errors, and, the extensive options available make narrowing in on the correct one seem like searching for a needle in a haystack. Further, in some instances, there are multiple ways of accomplishing the same goal. My goal is to provide a guide for how to solve some common complex graphing problems using PROC TEMPLATE. I ll go through examples for how to solve the issues listed above. The examples here will be medically based as that s where my expertise lies, but these concepts can easily be extended to business, finance, and education. Readers should be familiar with the basic conversion of SGPLOT and SGPANEL commands to PROC TEMPLATE commands, for which I recommend the following introduction 1, and readers should also have some experience with the SAS MACRO language. 1

2 KEYWORDS GTL, PROC TEMPLATE, EVAL(IFN()), MACRO, SPLIT PLOT, BROKEN AXIS, PANEL WIT H WEIGHTS, WATERFALL PLOT, ANNOTATE, KAPLAN MEIER PLOT EXAMPLE 1: SIMPLE LATTICE PANEL FOR FIGURES WITH DIFFERENT VARIABLES PROC SGPANEL allows one to put multiple plots within the same panel using the PANELBY command. This is great when one has the same x and y axis variables, and grouping variables. However, there are certainly instances where one needs to use different variables, such as multiple surgical outcomes, separate survival outcomes and stratification variables, and different radiotracers. Additionally, particular to medicine and science, some journals have limits on the number of graphs, but not on the number of plots that can be placed in one graph panel. It s possible using ODS Graphics to put different graphs from SGPLOT within the same word or PDF document, but most journals require graphs in graphical formats, such as.jpg, tiff, or.png. Fortunately, PROC TEMPLATE makes it easy to do this using the LAYOUT LATTICE command, which creates a panel for graphs, followed by the LAYOUT OVERLAY command, which allows different plot functions to be laid on top of one another in the same plot. For a discussion on the difference between LAYOUT DATALATTICE versus LAYOUT LATTICE or LAYOUT GRRIDED, please see the Graph Template Language Documentation, starting on page Personally, I ve found LAYOUT LATTICE to be sufficient for all of my PROC TEMPLATE graphing needs. For this example, we ll use the following dataset containing surgery characteristics on 7 consecutive cohorts of 20 patients: Example 1 Dataset found in Appendix When I initially worked on this project, I sent the investigator four separate plots for each surgery outcome. After a few months, they sent back a Microsoft PowerPoint with of all these plots on the same slide labeled A, B, C, and D, and asked me to combine the graphs into one plot. They also asked for some formatting changes and consistency among the graphs. I used PROC TEMPLATE with a MACRO for each series to complete my goal, similar to the example in Pratt s paper 1. STEP 1. GENERATE LATTICE TEMPLATE proc template; define statgraph example1_template_v1 ; begingraph /designwidth=1000px designheight=1000px; layout lattice/ COLUMNS =2 ROWS=2 ; rowheaders; entry "A. " /textattrs=(size=16pt weight=bold) pad=5pt ; entry "C. " /textattrs=(size=16pt weight=bold) pad=5pt; endrowheaders; row2headers; entry "B. " /textattrs=(size=16pt weight=bold) pad=5pt; entry "D. " /textattrs=(size=16pt weight=bold) pad=5pt; endrow2headers; rowaxes; rowaxis / griddisplay=on; endrowaxes; /*MACRO CODE WILL GO IN HERE*/ endgraph; end; quit; 2

3 SAS Syntax Meaning define statgraph Creates the template. After this command, enter the name of your graph designwidth Width of your graph; px refers to pixels and in refers to inches designheight Height of your graph COLUMNS Number of Columns ROWS Number of Row s Rowheaders / endrowheaders Side panel titles for each of the graphs. Number follow ing statement, such as 2 above indicates the second row Entry " " Creates the row header. Value w ithin quotes after entry is the title of the row header Rowaxes/ endrowaxes Defines a shared row axis; Table 1a. Definition Cheat Sheet for Example 1 Template STEP 2. CREATE MACRO FOR REPEAT GRAPHS The SAS MACRO language is fantastic for reducing the length of one s code and for making it easy to update a feature present in multiple components of one s analysis. I usually start by deciding what s consistent about the plots and what should be different. Any of the consistent items should be hard coded into the macro. Any differences should be macro variables. Are the y-axes the same? If not, do the axis values change? Labels? Are the x-axes the same? If not, do the axis values change? Labels? Do the graphs each have a different title? Is the same y-variable being used throughout? Is the same x-variable used throughout? Should the colors or markers change? Note: if the reader is uncomfortable with the SAS MACRO language, all one needs to do is take the syntax out of the macro, replace all macro variables with hard coded variables, and paste into the template. %macro seriesplot (cellheader_label=,yvar=,xvar=,ylabel=,xlabel=,yviewmin=,yviewmax=); cell ; layout overlay / yaxisopts=(display=all griddisplay=auto_on label=&ylabel LABELATTRS=( size=13 family="arial") labelfitpolicy=split linearopts=(viewmin=&yviewmin viewmax=&yviewmax) tickvalueattrs=(size=11pt family="arial")) xaxisopts= (label=&xlabel discreteopts=(tickvaluefitpolicy=rotatealways) LABELATTRS=( size=13 family="arial") GRIDATTRS=(thickness=10) labelfitpolicy=split tickvalueattrs=(size=11pt family="arial")) border=true borderattrs=(thickness=1); /*creates the series plot for the median */ seriesplot x=&xvar y=&yvar._median / curvelabel="median" curvelabellocation=outside datalabel=&yvar._median datalabelattrs=(size=11) markerattrs=(symbol=circlefilled) curvelabelattrs=(size=12) display=all; /*creates the series plot for the 25th percentile */ seriesplot x=&xvar y=&yvar._q1 / curvelabel="25th %" curvelabellocation=outside datalabel=&yvar._q1 datalabelattrs=(size=11) markerattrs=(symbol=circlefilled) curvelabelattrs=(size=12) display=all; /*creates the series plot for the 75th percentile*/ seriesplot x=&xvar y=&yvar._q3 / curvelabel="75th %" curvelabellocation=outside datalabel=&yvar._q3 datalabelattrs=(size=11) markerattrs=(symbol=circlefilled) curvelabelattrs=(size=12) display=all; /*puts a band plot between the 25th and 75th percentile*/ 3

4 bandplot x=&xvar limitupper=&yvar._q3 limitlower=&yvar._q1 / fillattrs=(transparency=0.5) ; endcell; %mend seriesplot; SAS Syntax Meaning Cell / endcell Initiates the cell in the panel matrix for the plot. Cells fill the row first and then proceed to the next column Yaxisopts= Sets the y ax is options Viewmin= Sets the minimum value of the axis Viewmax= Sets the maximum value of the axis Label= Labels the axis Discreteopts=() Tells SAS how to handle discrete values Tickvaluefitpoilicy= Tells SAS how to handle tic k mar ks that overlap Labelfitpolicy= Tells SAS how to handle labels that are long or that intersect Tickvalueattrs=() Pr ovides the attributes for the tick marks Borderattrs= Indicates the attr ibutes for the border of the cell Layout overlay Pr ovides the layout for the cell. Overlay tell SAS to overlay all the plot commands Border=true Tells SAS to create a border around the cell Seriesplot Creates a series plot, w hich connects specified marker points w ith a line Curvelabel Labels the series Curvelabelattrs=() Sets the attributes of the label Curvelabellocation= Sets the location of the label Datalabel Defines the variable used to label the data points Datalabelattrs=() Sets the attributes of the data point labels Display= Indicates w hether to display all data labels or to truncate when any intersect bandplot Creates a band plot, w hich overlays on the series. It shades in the portion betw een the 25 th and 75 th percentile here Fillattrs=(transparency=) Indicates the transparency of the band Table 1b. Definition Cheat Sheet for Example 1 Macro Advanced Move: In SAS Macro language, the. Serves as a delineator between the macro variable name and the remaining code. As all these variables have the same prefix, I used the. to reduce the number of macro variables needed to pass through. It s not necessary, but one may find this useful in other macro scenarios as well STEP 3. ADD THE MACRO COMMAND TO THE TEMPLATE LANGUAGE proc template; define statgraph example1_template_v2 ; begingraph /designwidth=1000px designheight=1000px; layout lattice/columns=2 rows=2 ; rowheaders ; entry "A. " /textattrs=(size=16pt weight=bold) pad=5pt ; entry "C. " /textattrs=(size=16pt weight=bold) pad=5pt; endrowheaders; row2headers; entry "B. " /textattrs=(size=16pt weight=bold) pad=5pt; entry "D. " /textattrs=(size=16pt weight=bold) pad=5pt; endrow2headers; rowaxes; rowaxis / griddisplay=on; endrowaxes; %seriesplot(yvar=est_bloodloss,xvar=cohort,ylabel="estimated Blood Loss (cc)", xlabel="consecutive Patient Cohort", yviewmin=100,yviewmax=700); 4

5 %seriesplot(yvar=optime,xvar=cohort,ylabel="operating Time (min)", xlabel="consecutive Patient Cohort", yviewmin=500, yviewmax=1300); %seriesplot(yvar=total_ln,xvar=cohort,ylabel="total # LN Harvested", xlabel="consecutive Patient Cohort", yviewmin=0, yviewmax=45); %seriesplot(yvar=los,xvar=cohort,ylabel="length of Stay (days)", xlabel="consecutive Patient Cohort", yviewmin=0, yviewmax=20); endgraph; end; quit; STEP 4: RUN USING PROC SGRENDER /*formats the values in a coded column*/ proc format; value cohortf 1="1-20" 2="21-40" 3="41-60" 4="61-80" 5="81-100" 6=" " 7=" "; proc sgrender template=example1_template_v2 data=example1_surgerychar; format cohort cohortf.; Output 1. Plot for Example 1. Style=sasweb EXAMPLE 2: SPLIT PLOTS USING EVAL(IFN()) AND BROKEN AXES PLOTS Example 1 demonstrated how to use the lattice feature to create a panel plot for multiple graphs with different variables, a simple introduction to PROC TEMPLATE. Even in the situation where one has only one plot to make, PROC TEMPLATE can be used to enhance and 5

6 customize the graph. When one needs to select only certain observations from a dataset, one can use the EVAL(IFN() statement to subset. For this example, we ll use a dataset which contains the annual proportion of time the Gastric and Hepatopancreatobiliary (HPB) services used Operating Room 1 and Operating Room 2 from : Example 2 dataset found in Appendix I initially used Proc SGplot as follows to make the graph: proc sgplot data=example2_proptime pctlevel=graph; series x= year y = days_prop/ group=days_label datalabel=days_prop markers; yaxis values = (10 to 45) label="% Days / Total Days" offsetmin=0 labelattrs=(weight=bold); xaxis type=discrete offsetmax=0.1 offsetmin=0.1 labelattrs=(weight=bold); keylegend /title=""; Output 2a. Initial graph using SGPLOT After seeing the above plot, the investigator had three concerns. First, they felt the white space was unnecessary and masking the individual time trends in the series with the lower proportions. Second, we knew from the data that the lower proportion series did not overlap or crisscross as suggested by this plot. Third, the investigator wanted the labels for the last curve to be on the bottom consistently, rather than the top of the line. To remove the white space, enhance the trends in the bottom two series, and to use unique positioning for the data labels, I used PROC TEMPLATE with an EVAL(IFN()) statement to enhance the graph. EVAL invokes the macro function to evaluate the statement provided prior to compiling the procedure. IFN invokes the macro function to use an if-then statement. Ifn(condition to be met, value when true, value when false) Using this I could put these four series in two separate plots, one for the two larger proportions and one for the two smaller proportions, with two separate axis values. Further, I could use the ROWAXIS feature and COLUMNAXIS feature to put these plots on the same plane and reduce the white space. 6

7 STEP 1: GENERATE THE TEMPLATE proc template; define statgraph example2a_template; begingraph /designwidth=5in designheight=4in; layout lattice/columns=1 rows=2 rowgutter=0pt columngutter=0pt columndatarange=union ; columnaxes; columnaxis / griddisplay=on label="year" linearopts=(viewmin=2000 viewmax=2010) LABELATTRS=( size=13 family="arial" weight=bold) tickvalueattrs=(size=11pt family="arial") type=discrete offsetmax=0.1 offsetmin=0.1; endcolumnaxes; rowaxes; rowaxis / griddisplay=on label="% Service Days /Total Days" LABELATTRS=( size=13 family="arial" weight=bold) tickvalueattrs=(size=11pt family="arial"); endrowaxes; cell ; layout overlay / yaxisopts=(display=all label="% Service Days /Total Days" griddisplay=auto_on tickvalueattrs=(size=11pt family="arial") linearopts=(viewmin=30 viewmax=45) LABELATTRS=( size=13 family="arial" weight=bold)); seriesplot x=year y=eval(ifn(days_type in (2,4),days_prop,.)) / group=days_label datalabel=days_prop datalabelattrs=(size=11) datalabelposition=top display=all name="r" yaxis=y ; endcell; cell ; layout overlay / yaxisopts=(display=all label="% Service Days /Total Days" griddisplay=auto_on tickvalueattrs=(size=11pt family="arial") linearopts=(viewmin=10 viewmax=25) LABELATTRS=( size=13 family="arial" weight=bold)) ; seriesplot x=year y=eval(ifn(days_type in (3),days_prop,.)) / group=days_label datalabel=days_prop datalabelattrs=(size=11) datalabelposition=bottom display=all name="r" yaxis=y ; seriesplot x=year y=eval(ifn(days_type in (5),days_prop,.)) / group=days_label datalabel=days_prop datalabelattrs=(size=11) datalabelposition=top display=all name="r" yaxis=y ; endcell; sidebar /align=bottom; discretelegend "r"/ border=true valueattrs=(size=11pt); endsidebar; endgraph; end; quit; SAS Syntax Rowgutter Columngutter Columndatarange Columnaxes /endcolumnaxes Datalabelposition Linearopts=() Linearopts=(Viewmin=) Meaning Sets the distance betw een the row s; set here to 0 to put the axes on top of each other Sets the distance betw een the columns Indicates that the graphs w ithin the same column are using the same data range Sets the features for the shared column axis Sets the position of the labels w ithin the series; used top to put on top of the series and bottom to put the last one on the bottom of the series Sets the options for the axis line Sets the minimum value of the axis 7

8 Linearops=(Viewmax=) Name Sidebar discretelegend Table 2a. Definition Cheat Sheet for Example 2a Sets the maximum value of the axis Assigns a name to the plot that can be called later for the legend Calls the side bar for w hich to place the legend Creates the legend STEP 2: RUN PROC SGRENDER proc sgrender template=example2a_template data=example2_proptime; Output 2b. Plot for Example 2a As an alternative to making two separate plots, one can use the split axis feature to remove the white space. The INCLUDERANGES option within the YAXISOPTS and LINEAROPTS splits the graph between the ranges STEP 1: GENERATE THE TEMPLATE proc template; define statgraph example2b_template; begingraph /designwidth=1000px designheight=1000px; layout lattice/columns=1 rows=1 rowgutter=0pt columngutter=0pt columndatarange=union ; columnaxes; columnaxis / griddisplay=on label="year" linearopts=(viewmin=2000 viewmax=2010) LABELATTRS=( size=13 family="arial" weight=bold) tickvalueattrs=(size=11pt family="arial") type=discrete offsetmax=0.1 offsetmin=0.1; endcolumnaxes; rowaxes; rowaxis / griddisplay=on label="% Service Days /Total Days" LABELATTRS=( size=13 family="arial" weight=bold) 8

9 tickvalueattrs=(size=11pt family="arial"); endrowaxes; cell ; layout overlay / yaxisopts=(display=all label="% Service Days /Total Days" griddisplay=auto_on tickvalueattrs=(size=11pt family="arial") linearopts=(includeranges=( )) LABELATTRS=( size=13 family="arial" weight=bold)); seriesplot x=year y=eval(ifn(days_type in (2,4,5),days_prop,.)) / group=days_label datalabel=days_prop datalabelattrs=(size=11) datalabelposition=top display=all name="r" yaxis=y ; seriesplot x=year y=eval(ifn(days_type in (3),days_prop,.)) / group=days_label datalabel=days_prop datalabelattrs=(size=11) datalabelposition=bottom display=all name="r" yaxis=y ; endcell; sidebar /align=bottom; discretelegend "r"/ border=true valueattrs=(size=11pt); endsidebar; endgraph; end; quit; SAS Syntax Includeranges=() Table 2b. Definition Cheat Sheet for Example 2b Meaning Sets the ranges to include in the axis and splits w here the ranges do not overlap STEP 2: RUN PROC SGRENDER proc sgrender template=example2b_template data=example2_proptime; Output 2c. Plot for Example 2b 9

10 EXAMPLE3: WATERFALL PLOTS USING NEEDLEPLOT AND PANELING WITH WEIGHTS In example two, we dealt with solutions for handling excessive white space within a series plot with multiple groups. This can be applied in most single figure settings including scatter plots and step plots. However, white space can occur in multiple panel plots as well. PROC SGPANEL is limited both in the plot types available and the ability to alter each figure. In this example, we ll use PROC TEMPLATE to create waterfall plot, fix the white space, and make each plot size approximately proportional to the number of patients in the group. For this example, we ll use data on the response to treatment based on different doses of a drug for 30 patients. The cut off for responders was a 75% reduction in tumor size. Initially, the investigator wanted a waterfall plot with each group in a separate figure. I used SGPANEL to create the figure. proc format; value groupf 1="100mg" 2="200mg" 3="300mg" 4="400mg" 5="500mg" 6="600mg"; value responsef 0="<75% decrease" 1=">75% decrease"; proc sgpanel data=example5_waterfall; panelby group /rows=1 columns=6 uniscale=all NOVARNAME; label group = "Dose"; refline -75 / axis = y lineattrs=(pattern=shortdash) label=" "; vbar position / response =percent_change group=response barwidth=1; colaxis label = "Individual Patients" fitpolicy=thin; rowaxis values=(-100 to 0 by 20) label = "Change from Baseline (%)"; format group groupf. response responsef. ; Output 3a. Initial Figure The investigator liked the figure, but was concerned by the amount of white space. I thought the solution would be easy; I would use PROC TEMPLATE and create the figure using bar charts. Similar to example 1, I used a macro to implement each of the bar charts: 10

11 %macro barchart(cellheader_label=,min=,max=,dose=); cell ; cellheader; entry &cellheader_label /textattrs=(size=12 family="arial") ; endcellheader; layout overlay / yaxisopts=(display=all griddisplay=auto_on label=" " labelfitpolicy=split tickvalueattrs=(size=11pt family="arial") linearopts=(viewmin=-100 viewmax=0) ) xaxisopts= ( label=" " discreteopts=(tickvaluefitpolicy=rotatealways) GRIDATTRS=(thickness=10) labelfitpolicy=split tickvalueattrs=(size=11pt family="arial") linearopts=(viewmin=&min viewmax=&max) ) border=true borderattrs=(thickness=1); barchartparm x=eval(ifn(group=&group,position,.)) y=eval(ifn(group=&group,percent_change,.)) / orient=vertical group=response; referenceline y=-75; endcell; %mend barchart; proc template; define statgraph example3_template_v1 ; begingraph /designwidth=1000px designheight=1000px; layout lattice/columns=6 rows=1 rowgutter=0pt columngutter=0pt rowdatarange=union; rowaxes; rowaxis / griddisplay=on label="change from Baseline (%)"; endrowaxes; %barchart(cellheader_label="100mg",min=1,max=3,group=1); %barchart(cellheader_label="200mg",min=1,max=4,group=2); %barchart(cellheader_label="300mg",min=1,max=5,group=3); %barchart(cellheader_label="400mg",min=1,max=11,group=4); %barchart(cellheader_label="500mg",min=1,max=3,group=5); %barchart(cellheader_label="600mg",min=1,max=4,group=6); endgraph; end; quit; Note: This can also be done in SGPANEL by using a non-union axis 11

12 Output 3b. BARCHART Figure using PROC TEMPLATE The investigator wanted all the bars to be even and I agreed as each bar represents a patient, so it shouldn t appear that some patients have more weight than others. In both SGPANEL and in PROC TEMPLATE with BARCHART, the bar width is decided as a ratio of the maximum possible width of the plot (page 153) 3. At first, I was at a loss, convinced there was no way to make the bars the same size. I searched for days, but I could not find a way to do this with BARCHART or BARCHARTPARM. I decided to look into any other possible graph formats and examined all of SAS s examples. Luckily, I stumbled upon the example for NEEDLEPLOT, which illustrated a waterfall plot for stocks trends over time 4. If one increases the size of the bars, the figure emulates a bar chart. Below is the code for how to increase the size of the bars. STEP 1: CREATE NEEDLEPLOT MACRO %macro needleplot(cellheader_label=,min=,max=,group=); cell; cellheader; entry &cellheader_label /textattrs=(size=12 family="arial" weight=bold) ; endcellheader; layout overlay / xaxisopts= ( label=" " discreteopts=(tickvaluefitpolicy=rotatealways) GRIDATTRS=(thickness=10) labelfitpolicy=split tickvalueattrs=(size=11pt family="arial") linearopts=(viewmin=&min viewmax=&max TICKVALUESEQUENCE=(start=&min end=&max increment=1) ) ) border=true borderattrs=(thickness=1); needleplot x=eval(ifn(group=&group,position,.)) y=eval(ifn(group=&group,percent_change,.)) / baselineintercept=0 lineattrs=(thickness=8pt) group=response yaxis=y name="response"; referenceline y=-90 /lineattrs=(pattern=dash) name="r" legendlabel=" " ; endcell; %mend needleplot; STEP 2: CREATE TEMPLATE AND IMPLEMENT MACRO proc template; define statgraph example3_template_v2; begingraph /designwidth=1000px designheight=1000px; legenditem type=text name="r2" /textattrs=(size=12pt) LABELATTRS=(size=12pt) text="75% Decrease in Tumor" ; layout lattice/columns=6 rows=1 rowgutter=0pt columngutter=0pt rowdatarange=union ; rowaxes; rowaxis / griddisplay=on label="change from Baseline (%)" linearopts=(viewmin=-100 viewmax=0) LABELATTRS=( size=13 family="arial" weight=bold) tickvalueattrs=(size=11pt family="arial"); endrowaxes; %needleplot(cellheader_label="200mg",min=1,max=3,group=1); %needleplot(cellheader_label="400mg",min=1,max=4,group=2); %needleplot(cellheader_label="300mg",min=1,max=5,group=3); %needleplot(cellheader_label="600mg",min=1,max=11,group=4); %needleplot(cellheader_label="400mg",min=1,max=3,group=5); %needleplot(cellheader_label="800mg",min=1,max=4,group=6); sidebar /align=bottom; entry "Individual Patient" /textattrs=( size=13 family="arial" weight=bold); endsidebar; 12

13 sidebar / align=bottom; discretelegend "Response" / border=false valueattrs=(size=10pt); endsidebar; sidebar /align=bottom; discretelegend "r" "r2" / border=true ; endsidebar; endgraph; end; quit; STEP 3: RUN PROC SGRENDER ods html style=htmlblue; proc sgrender data=example3_waterfall template = example3_template_v2; format group groupf. response responsef.; SAS Syntax Lineattrs=(thickness=)) Legenditem Baselineintercept Table 3a. Definition Cheat Sheet for Example 3 Meaning Sets the thic kness of the needles Adds item to the legend using the name provided in the plot statement. Allows one to label a reference line Sets the value for w hich to sw itch direction of the needles. Here it is set to 0 Output 3c. Initial NEEDLEPLOT Figure using PROC TEMPLATE As illustrated above, NEEDPLOT allows the bars can be all the same width. This resolve the initial problem of the bar width, but now, the investigator wanted the size of the plot areas to be proportional to the number of patients within each group. Fortunately, PROC TEMPLATE had a solution. Within LAYOUT LATTICE, one can use COLUMNWEIGHTS to change the size of the plots. The code and results are as follows: STEP 1: COMPILE NEEDPLOT MACRO ABOVE STEP 2: CALCULATE THE APPROXIMATE RELATIVE WEIGHT OF THE NUMBER OF PATIENTS IN EACH PANEL RELATIVE TO THE TOTAL. 3/30 = 10%, 4/30 ~ 13%, 13

14 5/30 ~ 17%, 11/30~ 37% Note: proc template; define statgraph example3_template_v3; begingraph /designwidth=1000px designheight=1000px; legenditem type=text name="r2" /textattrs=(size=12pt) LABELATTRS=(size=12pt) text="75% Decrease in Tumor Size" ; layout lattice/columns=6 rows=1 rowgutter=0pt columngutter=0pt /* Note: These weights are modified slightly from the initial proportions based on the appearance of the graph */ /* I recommend playing around with the weights to perfect the appearance */ columnweights=( ) rowdatarange=union border=true borderattrs=(thickness=1 color=black); rowaxes; rowaxis / griddisplay=on label="change from Baseline (%)" linearopts=(viewmin=-100 viewmax=0) LABELATTRS=( size=13 family="arial" weight=bold) tickvalueattrs=(size=11pt family="arial"); endrowaxes; %needleplot(cellheader_label="200mg",min=1,max=3,group=1); %needleplot(cellheader_label="400mg",min=1,max=4,group=2); %needleplot(cellheader_label="300mg",min=1,max=5,group=3); %needleplot(cellheader_label="600mg",min=1,max=11,group=4); %needleplot(cellheader_label="400mg",min=1,max=3,group=5); %needleplot(cellheader_label="800mg",min=1,max=4,group=6); sidebar /align=bottom; entry "Individual Patient" /textattrs=( size=13 family="arial" weight=bold); endsidebar; sidebar / align=bottom; discretelegend "Response" / border=false valueattrs=(size=10pt); endsidebar; sidebar /align=bottom; discretelegend "r" "r2" / border=true ; endsidebar; endgraph; end; quit; SAS Syntax columnweights=() Table 3b. Definition Cheat Sheet for Example 3 Meaning Sets the w eights for each panel Note: I modified the actual weights slightly based on the appearance of the graph. I recommend playing around with the raw numbers to improve appearance STEP 4: RUN PROC SGRENDER proc sgrender data=example3_waterfall template = example3_template_v3; format group groupf. response responsef.; 14

15 Output 3d. Final NEEDLEPLOT Figure with Panel Weights using PROC TEMPLATE EXAMPLE 4: KAPLAN M EIER PLOT ANNOTATION SAS includes Kaplan Meier plots within PROC LIFETEST, which is extremely useful when one needs a simple plot, and it even allows one to include number at risk. However, modifying the plot, combining with additional plots, and annotating the plot are not possible within the procedure. For instance, one wants to put overall survival (OS) and progression free survival (PFS) on one panel and then include the number at risk and estimates of median survival, one will need to use something more powerful. Fortunately, PROC TEMPLATE has a way to include all of these features in one figure. Coding these features takes a few more steps than the examples above, but can easily be replicated for other datasets. The dataset for this example is too large to include below, so I ve provided 10 sample lines of code to give the reader a sense of what their initial data should look like: STEP 1: RUN PROC LIFETEST AND OUTPUT THE NECESSARY DATA ods graphics on; ods output survivalplot=sp_death_v1 CensoredSummary=cs_death_v1 Quartiles=quart_death_v1 ; proc lifetest data=example4_survival plots=s(atrisk(atrisktickonly maxlen=15) =(0 to 15 by 1)) method=km TIMELIST=( ) ; time death_time*death(0); label death_time= "Years from Initial Surgery"; ods output survivalplot=sp_pfs_v1 CensoredSummary=cs_pfs_v1 Quartiles=quart_pfs_v1 ; proc lifetest data=example4_survival plots=s(atrisk(atrisktickonly maxlen=15) =(0 to 15 by 1)) method=km TIMELIST=( ) ; time pfs_time*pfs(0); label pfs_time= "Years from Initial Surgery"; This will output three different datasets for OS and PFS 1. Survivalplot: Data points used to make the Kaplan Meier plot. 15

16 Obs ST RAT UM Time Survival AtRisk Event Censored tatrisk StratumNum Table 4a. Survival plot output N=10 2. CensoredSummary: The total number patients, events and patients censored Obs Total Failed Censored PctCens Table 4b. Censored Summary Output 3. Quartiles: Kaplan Meier Estimates of the 25 th, 50 th (i.e. Median), and 75 th percentiles of survival along with confidence intervals Obs ST RAT UM Percent Estimate Transform LowerLimit UpperLimit LOGLOG LOGLOG LOGLOG Table 4c. Quartile Kaplan Meier Estimate Output STEP 2: PREPARE THE QUARTILES DATA FOR ANNOTATION AND MERGE WITH THE CENSORED SUMMARY data death_quart_v2; set death_quart_v1; /*keeps only the median estimate*/ where percent=50; /*rounds the estimate for cleaner output*/ median_est = round(estimate,0.01); /*rounds the confidence intervals and combines into one variable. Useful for cleaner output*/ /*if there is no upper confidence limit, the expression says "NR" instead for "Not Reached"*/ if upperlimit ne. then median_ci = "(" trim(left(round(lowerlimit,0.01))) "-" trim(left(round(upperlimit,0.01))) ")"; else median_ci = "(" trim(left(round(lowerlimit,0.1))) "- NR)"; keep median_est median_ci; /*merges the censored summary and quartile data for later annotation*/ data death_cs_quart_merge; merge death_cs_v1 death_quart_v2; Repeat Step for PFS found in Appendix STEP 3: PREPARE THE SURVIVAL DATASET FOR MERGING AND MERGE Note: It is not necessary to rename both datasets, but I find it easier for keeping track. /*rename the variables in the survival plot set for later merging*/ 16

17 data death_sp_v2; set death_sp_v1; rename stratum = stratum_death; rename time = time_death; rename survival = survival_death; rename atrisk = atrisk_death; rename event = event_death; rename censored = censored_death; rename tatrisk = tatrisk_death; rename stratumnum = stratumnum_death; Repeat Step for PFS found in Appendix /*merge the two survival plot datasets*/ data survival_combined; merge sp_death_v2 pfs_sp_v2; STEP 4: CREATE THE ANNOTATION DATASETS AND APPEND PFS ONTO OS Many SAS users have written about the annotation procedure, so I won t go into too much detail here. Please see the following paper for introduction to the annotation procedure 5. data anno_survival; length textweight $ 6 id $ 10; length label $ 18; set death_cs_quart_merge; retain y1space "graphpercent" x1space "wallpercent" function "text" textcolor "black" textweight "normal" justify "left" TEXTSIZE 10 WIDTH 15; /*OS headers*/ x1=5; label="subjects"; id="death_id"; y1=7; output; x1=25; label="events"; id="death_id"; y1=7; output; x1=45; label="censored"; id="death_id"; y1=7; output; x1=65; label="med OS"; id="death_id"; y1=7; output; x1=80; label="(95% CI)"; id="death_id"; y1=7; output; /*OS Data*/ x1=5; label=put(total,4.0); id="death_id"; y1=3; output; x1=25; label=put(failed,4.0); id="death_id"; y1=3; output; x1=45; label=put(censored,4.0); id="death_id"; y1=3; output; x1=65; label=put(median_est,4.1); id="death_id"; y1=3; output; x1=80; label=median_ci; id="death_id"; y1=3; output; data anno_pfs; length textweight $ 6 id $ 10; length label $ 18; set pfs_cs_quart_merge; retain y1space "graphpercent" x1space "wallpercent" function "text" textcolor "black" textweight "normal" justify "left" TEXTSIZE 10 WIDTH 15; /*PFS headers*/ x1=5; label="subjects"; id="pfs_id"; y1=7; output; x1=25; label="events"; id="pfs_id"; y1=7; output; x1=45; label="censored"; id="pfs_id"; y1=7; output; x1=65; label="med PFS"; id="pfs_id"; y1=7; output; x1=80; label="(95% CI)"; id="pfs_id"; y1=7; output; /*PFS Data*/ x1=5; label=put(total,4.0); id="pfs_id"; y1=3; output; x1=25; label=put(failed,4.0); id="pfs_id"; y1=3; output; x1=45; label=put(censored,4.0); id="pfs_id"; y1=3; output; x1=65; label=put(median_est,4.1); id="pfs_id"; y1=3; output; x1=80; label=median_ci; id="pfs_id"; y1=3; output; proc append base=anno_survival data=anno_pfs force nowarn; SAS Syntax 17 Meaning

18 Y1space X1space Function textcolor textweight Justify Textsize Width X1 Y1 Id Label Sets the region by w hich the annotation is placed relative to the y-axis. Graphpercent means the number is in relation to the full graph space Sets the region by w hich the annotation is laced relative to the x-axis. Wallpercent means placing the data relative to the w alls of the graph Tells SAS the function of this annotation is to w rite text Font color Font Weight Right, Left, or Center Justify Font Size Table 4d. Definition Cheat Sheet for Annotation in Example 4 STEP 5: CREATE AND COMPILE THE MACRO Sets the w idth of each text space Sets the position of the text relative to X1space Sets the position of the text relative to Y1space Identifies w hich annotation set this belongs to for later use in PROC TEMPLA TE Actual text to be placed in the graph %macro km_plot (cellheader_label=,stratum=,time=,survival=,atrisk=,event=,censored=,tatrisk=,stratumnum=,annotate_id=); cell; cellheader; entry &cellheader_label /textattrs=(weight=bold size=12pt); endcellheader; layout overlay/xaxisopts=(linearopts=(viewmax=15 tickvaluelist=( )) LABELATTRS=(weight=bold size=12) label="years from Initial Surgery") yaxisopts=(label="survival Probability" LABELATTRS=(weight=bold size=12) linearopts=(viewmin=0 viewmax=1.1 tickvaluelist=( ))); stepplot x=&time y=&survival / name="survival" legendlabel="survival" lineattrs=(thickness=3 ); scatterplot x=&time y=&censored / markerattrs=(symbol=plus color=black size=13) name="censored" LEGENDLABEL="Censored"; discretelegend "Censored" / location=inside autoalign=(topright bottomleft); annotate / id=&annotate_id; innermargin / align=bottom; axistable x=&tatrisk value=&atrisk /display=(label) valueattrs=(size=10pt) ; endinnermargin; endcell; %mend km_plot; SAS Syntax Stepplot Scatterplot annotate Annotate / id= Innermargin /endinnermargin Axistable x= value= Meaning Makes a step plot w ith time on the x-axis and survival probability on the y-axis Places the censored observations at a time on the x-axis and a spec ified probability on the y axis Tells SAS to annotate this graph Identifies w hich observations to use from the annotation dataset Inserts inner plot margin Puts a table relative to the x axis at time tatr isk and puts 18

19 the value from atrisk in Table 4e. Definition Cheat Sheet for Example 4 Macro STEP 6: IMPLEMENT MACRO WITHIN THE TEMPLATE proc template; define statgraph lattice_km; begingraph /designwidth=1000px designheight=1000px; layout lattice /COLUMNS=2 rows=1 pad=(bottom=70); %km_plot(cellheader_label="overall Survival",stratum=stratum_death,time=time_death,survival=survival_death,atris k=atrisk_death,event=event_death, censored=censored_death, tatrisk=tatrisk_death,stratumnum=stratumnum_death,annotate_id="death_id"); %km_plot(cellheader_label="progression Free Survival",stratum=stratum_pfs,time=time_pfs,survival=survival_pfs,atrisk=atri sk_pfs,event=event_pfs, censored=censored_pfs, tatrisk=tatrisk_pfs,stratumnum=stratumnum_pfs,annotate_id="pfs_id"); endgraph; end; quit; SAS Syntax Meaning Pad Adds a padding betw een the end of the cell and the graph w here the annotation w ill go. Bottom tells SAS to do this at the bottom of the plot Table 4f. Definition Cheat Sheet for Example 4 Template STEP 6: RUN PROC SGRENDER ods graphics on /width=10in height=8in; proc sgrender data=survival_combined sganno=anno_survival template=lattice_km; Output 4a. Combined Kaplan Meier Plot with Number and Risk and Survival Estimates Note: Please feel free to contact me for code on how to implement this with multiple strata 19

20 CONCLUSIONS PROC TEMPLATE expands the graphical capabilities of SGPLOT and SGPANEL, allowing one to do an incredible amount of modifications. This paper demonstrated how to create a panel plot for different variables, a split plot using select observations, a broken axis plot for select observations, and a waterfall plot using NEEDLEPLOT. Additionally, we demonstrated how to weight each panel in a plot and how to combine and annotate Kaplan Meier plots. These are just a few of the opportunities available to users of PROC TEMPLATE that eliminate the need for post output processing or use of other statistical software. Familiarizing oneself with PROC TEMPLATE is one step on the road to complete automation with SAS. REFERENCES 1. Pr att, Jesse M The Graph Template Language: Beyond the SAS/GRA PH Pr ocedures. PSAS Global Forum Paper Available at: 2. SAS Institute Inc SAS 9.3 Graph Template Language: Reference, Third Edition. Cary, NC: SAS Institute Inc 3. SAS Institute Inc SAS 9.2 Graph Template Language: Reference, Third Edition. Cary, NC: SAS Institute Inc 4. SAS Institute Inc Example Program and Statement Details: Available at: er.htm#p0dc ix1s0khu6fn 1qj4tudw sy72a.htm 5. Mantange, S Annotate your SGPLOT Graphs. Paper CC Available at: masug-china-2014-cc01.pdf ACKNOWLEDGEMENTS All datasets presented here are s imulated versions of datasets and research study objectives w ere modified. No actual patient data or true research study objectives w ere used for the purpose of this presentation. I w ould like to thank Esther Drill for review ing the overall concepts presented in this paper. CONTACT INFORMATION Your comments and questions are valued and encouraged. Contact the author at: Debra A. Goldman Memor ial Sloan Kettering Cancer Center 484 Lex ington Avenue 2 nd Floor New York, NY goldmand@mskcc.org SAS and all other SAS Institute Inc. product or service names are registered trademar ks or trademarks of SAS Institute Inc. in the USA and other countries. indicates USA registration. Other brand and product names are trademar ks of their respective companies. 20

21 APPENDIX EXAMPLE 1 DATASET data example1_surgerychar; input cohort optime_median optime_q1 optime_q3 est_bloodloss_median est_bloodloss_q1 est_bloodloss_q3 los_median los_q1 los_q3 total_ln_median total_ln_q1 total_ln_q3; cards; ; DATASET 1. definitions: optime = Operative Time in Minutes; est_bloodloss = Estimated Blood Loss in CC los = Length of Stay in Days; total_ln = Total Ly mph Nodes Removed; median = median value for cohort q1 = 25 th percentile for cohort; q3 = 75 th percentile for cohort. SGPLOT only allows for parametric statistics using HLINE, so this dataset was created using a two step solution of outputting raw data using PROC MEAN and then using the SERIES plot statement in SGPLOT. EXAMPLE 2 DATASET data example2_proptime; length days_label $ 11; input year days_prop days_type days_label $; cards; Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR2 21

22 HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR Gastric/OR HPB/OR2 ; DATASET 2. definitions: year= year; days_prop = proportion of dats, days_type = numeric grouping of the cohort in which the proportion belongs to; days_label = categorical grouping of the cohort in w hich the proportion belongs to EXAMPLE 3 DATASET data example3_waterfall; input ID group percent_change position response; datalines; ; DATASET 3. definitions: id = patient identifier; group = drug grouping patient belongs to; percent_change = percent change in tumor size from baseline to follow up imaging; position = w ithin group position in the plot; response = dichotomous variable indicating w hether percent change w as greater than or less than 75% EXAMPLE 4 DATASET data example4_survival; 22

23 input id death_time death pfs_time pfs; datalines; ; DATASET 4. definitions: id= patient id; death_time = time from surgery until death or last follow up if censored; death=event indicator w here 1 means dead and 0 means censored; pfs_time= time from surgery until progression, death or last follow up if censored; pfs= event indicator w here 1 means progression or death and 0 means censored. EXAMPLE 4 REPEAT STEP FOR PFS data pfs_quart_v2; set pfs_quart_v1; /*keeps only the median estimate*/ where percent=50; /*rounds the estimate for cleaner output*/ median_est = round(estimate,0.01); /*rounds the confidence intervals and combines into one variable. Useful for cleaner output*/ /*if there is no upper confidence limit, the expression says "NR" instead for "Not Reached"*/ if upperlimit ne. then median_ci = "(" trim(left(round(lowerlimit,0.01))) "-" trim(left(round(upperlimit,0.01))) ")"; else median_ci = "(" trim(left(round(lowerlimit,0.1))) "- NR)"; keep median_est median_ci; /*merges the censored summary and quartile data for later annotation*/ data pfs_cs_quart_merge; merge pfs_cs_v1 pfs_quart_v2; data pfs_quart_v2; set pfs_quart_v1; /*keeps only the median estimate*/ where percent=50; /*rounds the estimate for cleaner output*/ median_est = round(estimate,0.01); /*rounds the confidence intervals and combines into one variable. Useful for cleaner output*/ /*if there is no upper confidence limit, the expression says "NR" instead for "Not Reached"*/ if upperlimit ne. then median_ci = "(" trim(left(round(lowerlimit,0.01))) "-" trim(left(round(upperlimit,0.01))) ")"; else median_ci = "(" trim(left(round(lowerlimit,0.1))) "- NR)"; keep median_est median_ci; /*merges the censored summary and quartile data for later annotation*/ data pfs_cs_quart_merge; merge pfs_cs_v1 pfs_quart_v2; 23

Customizing Survival Curves

Customizing Survival Curves Customizing Survival Curves Jeremy Hamm Cancer Surveillance & Outcomes (CSO) Population Oncology BC Cancer Agency Outline Survival Curve Basics Using Proc Template Using Proc SGPlot 2 Analysis Using dataset

More information

Creating and Customizing Graphics using Graph Template Language

Creating and Customizing Graphics using Graph Template Language PharmaSUG 2018 - Paper EP-17 Creating and Customizing Graphics using Graph Template Language ABSTRACT Yanmei Zhang, Saihua Liu, Titania Dumas-Roberson, Grifols Inc Graph Template Language (GTL) is a powerful

More information

Great Time to Learn GTL

Great Time to Learn GTL ABSTRACT PharmaSUG 018 - Paper EP-18 Great Time to Learn GTL Kriss Harris, SAS Specialists Limited; Richann Watson, DataRich Consulting It s a Great Time to Learn GTL! Do you want to be more confident

More information

Stylish Waterfall Graphs using SAS 9.3 and 9.4 Graph Template Language

Stylish Waterfall Graphs using SAS 9.3 and 9.4 Graph Template Language Paper 1586-2014 Stylish Waterfall Graphs using SAS 9.3 and 9.4 Graph Template Language Setsuko Chiba, Exelixis Inc. South San Francisco, CA ABSTRACT One stylish graph provides a clear picture of data summaries

More information

Key Features in ODS Graphics for Efficient Clinical Graphing Yuxin (Ellen) Jiang, Biogen, Cambridge, MA

Key Features in ODS Graphics for Efficient Clinical Graphing Yuxin (Ellen) Jiang, Biogen, Cambridge, MA 10680-2016 Key Features in ODS Graphics for Efficient Clinical Graphing Yuxin (Ellen) Jiang, Biogen, Cambridge, MA ABSTRACT High-quality effective graphs not only enhance understanding of the data but

More information

Introduction to Statistical Graphics Procedures

Introduction to Statistical Graphics Procedures Introduction to Statistical Graphics Procedures Selvaratnam Sridharma, U.S. Census Bureau, Washington, DC ABSTRACT SAS statistical graphics procedures (SG procedures) that were introduced in SAS 9.2 help

More information

Using the SG Procedures to create and enhance scatter plots Peter L. Flom, Peter Flom Consulting, New York, NY

Using the SG Procedures to create and enhance scatter plots Peter L. Flom, Peter Flom Consulting, New York, NY ABSTRACT Using the SG Procedures to create and enhance scatter plots Peter L. Flom, Peter Flom Consulting, New York, NY The scatter plot is a basic tool for presenting information on two continuous variables.

More information

ODS GRAPHICS DESIGNER (Creating Templates for Batchable Graphs)

ODS GRAPHICS DESIGNER (Creating Templates for Batchable Graphs) ODS GRAPHICS DESIGNER (Creating Templates for Batchable Graphs) Golden Horseshoe SAS User Group October 14, 2011 Barry Hong BYHong@uss.com 2011 History of SAS Graphics In the beginning there was PROC PLOT

More information

separate representations of data.

separate representations of data. 1 It s been said that there are two kinds of people in the world: those who divide everything into two groups, and those who don t. To taxonomists, these folks are commonly known as lumpers and splitters.

More information

Building a Template from the Ground Up with GTL

Building a Template from the Ground Up with GTL ABSTRACT Paper 2988-2015 Building a Template from the Ground Up with GTL Jedediah J. Teres, Verizon Wireless This paper focuses on building a graph template in an easy-to-follow, step-by-step manner. The

More information

Developing Graphical Standards: A Collaborative, Cross-Functional Approach Mayur Uttarwar, Seattle Genetics, Inc., Bothell, WA

Developing Graphical Standards: A Collaborative, Cross-Functional Approach Mayur Uttarwar, Seattle Genetics, Inc., Bothell, WA PharmaSUG 2014 - DG03 Developing Graphical Standards: A Collaborative, Cross-Functional Approach Mayur Uttarwar, Seattle Genetics, Inc., Bothell, WA ABSTRACT Murali Kanakenahalli, Seattle Genetics, Inc.,

More information

Nesting Multiple Box Plots and BLOCKPLOTS using GTL and Lattice Overlay

Nesting Multiple Box Plots and BLOCKPLOTS using GTL and Lattice Overlay ABSTRACT: Nesting Multiple Box Plots and BLOCKPLOTS using GTL and Lattice Overlay Greg Stanek MS Institute for Health Care Research and Improvement, Baylor Health Care System, Dallas, TX There are times

More information

%EventChart: A Macro to Visualize Data with Multiple Timed Events

%EventChart: A Macro to Visualize Data with Multiple Timed Events %EventChart: A Macro to Visualize Data with Multiple Timed Events Andrew Peng and J. Jack Lee, MD Anderson Cancer Center, Houston, TX ABSTRACT An event chart is a tool to visualize timeline data with multiple

More information

SAS Graph a Million with the SGPLOT Procedure. Prashant Hebbar, Sanjay Matange

SAS Graph a Million with the SGPLOT Procedure. Prashant Hebbar, Sanjay Matange Author: SAS4341-2016 Graph a Million with the SGPLOT Procedure Prashant Hebbar, Sanjay Matange Introduction ODS Graphics The Graph Template Language (GTL) Layout based, fine-grained components. Used by:

More information

PharmaSUG 2013 PO05. ADaM Datasets for Graphs Kevin Lee, Cytel, Inc., Chesterbrook, PA Chris Holland, Amgen, Rockville, MD

PharmaSUG 2013 PO05. ADaM Datasets for Graphs Kevin Lee, Cytel, Inc., Chesterbrook, PA Chris Holland, Amgen, Rockville, MD PharmaSUG 2013 PO05 ADaM Datasets for Graphs Kevin Lee, Cytel, Inc., Chesterbrook, PA Chris Holland, Amgen, Rockville, MD ABSTRACT The paper is intended for clinical trial SAS programmers who create graphs

More information

Introducing Statistical Graphics (SG): Victoria UG May 2018 Mary Harding SAS Canada

Introducing Statistical Graphics (SG): Victoria UG May 2018 Mary Harding SAS Canada Introducing Statistical Graphics (SG): Victoria UG May 2018 Mary Harding SAS Canada Copyright SAS Institute Inc. All rights reserved. Agenda Introduction to Statistical Graphics PROC SGPLOT General purpose

More information

SAS GTL: Improving Patients Safety and Study Efficiency Masaki Mihaila, Medivation, Inc, San Francisco, CA

SAS GTL: Improving Patients Safety and Study Efficiency Masaki Mihaila, Medivation, Inc, San Francisco, CA PharmaSUG 2013 - Paper DG03 SAS GTL: Improving Patients Safety and Study Efficiency Masaki Mihaila, Medivation, Inc, San Francisco, CA ABSTRACT Due to the high cost and time required for clinical trials,

More information

Customizing a Multi-Cell Graph Created with SAS ODS Graphics Designer Yanhong Liu, Cincinnati Children s Hospital Medical Center, Cincinnati, OH

Customizing a Multi-Cell Graph Created with SAS ODS Graphics Designer Yanhong Liu, Cincinnati Children s Hospital Medical Center, Cincinnati, OH PT-05 Customizing a Multi-Cell Graph Created with SAS ODS Graphics Designer Yanhong Liu, Cincinnati Children s Hospital Medical Center, Cincinnati, OH ABSTRACT Combining multiple graphs and/or statistical

More information

Enhanced Swimmer Plots: Tell More Sophisticated Graphic Stories in Oncology Studies

Enhanced Swimmer Plots: Tell More Sophisticated Graphic Stories in Oncology Studies Paper RIV-248 Enhanced Swimmer Plots: Tell More Sophisticated Graphic Stories in Oncology Studies Ilya Krivelevich, Eisai Inc., Woodcliff Lake, NJ Andrea Dobrindt, Independent Consultant, Ridgefield, CT

More information

The Power of the Graphics Template Language Jeff Cartier, SAS Institute Inc., Cary, NC

The Power of the Graphics Template Language Jeff Cartier, SAS Institute Inc., Cary, NC The Power of the Graphics Template Language Jeff Cartier, SAS Institute Inc., Cary, NC ABSTRACT In SAS 9.2, the ODS Graphics Template Language becomes production software. You will see more SAS procedures

More information

Paper Some Tricks in Graph Template Language Amos Shu, AstraZeneca Pharmaceuticals, LP

Paper Some Tricks in Graph Template Language Amos Shu, AstraZeneca Pharmaceuticals, LP Paper 385-2017 Some Tricks in Graph Template Language Amos Shu, AstraZeneca Pharmaceuticals, LP ABSTRACT The SAS 9.4 Graph Template Language (GTL) Reference book has more than 1300 pages and hundreds of

More information

The Art of Overlaying Graphs for Creating Advanced Visualizations

The Art of Overlaying Graphs for Creating Advanced Visualizations Paper SAS596-2017 The Art of Overlaying Graphs for Creating Advanced Visualizations Vineet Raina, SAS Research and Development, India ABSTRACT SAS provides an extensive set of graphs for different needs.

More information

Controlling the Drawing Space in ODS Graphics by Example

Controlling the Drawing Space in ODS Graphics by Example Paper CT07 Controlling the Drawing Space in ODS Graphics by Example Max Cherny, GlaxoSmithKline, Collegeville, PA ABSTRACT The SG annotation facility is a very powerful tool within ODS graphics. It is

More information

Plotting LSMEANS and Differences in Generalized Linear Models with GTL Robin High, University of Nebraska Medical Center, Omaha, NE

Plotting LSMEANS and Differences in Generalized Linear Models with GTL Robin High, University of Nebraska Medical Center, Omaha, NE Paper PH-06-2015 Plotting LSMEANS and Differences in Generalized Linear Models with GTL Robin High, University of Nebraska Medical Center, Omaha, NE ABSTRACT A visual display of LsMeans and their pairwise

More information

Advanced Graphs using Axis Tables

Advanced Graphs using Axis Tables Paper SAS2180-2018 Advanced Graphs using Axis Tables Sanjay Matange, SAS Institute Inc. ABSTRACT An important feature of graphs used for the analysis data or for clinical research is the inclusion of textual

More information

Behind the Scenes: from Data to Customized Swimmer Plots Using SAS Graph Template Language (GTL)

Behind the Scenes: from Data to Customized Swimmer Plots Using SAS Graph Template Language (GTL) Paper PP04 Behind the Scenes: from Data to Customized Swimmer Plots Using SAS Graph Template Language (GTL) Hima Bhatia, ICON Clinical Research, North Wales, U.S.A Rita Tsang, ICON Clinical Research, North

More information

How to improve your figure An overview of annotation techniques in Graph Template Language

How to improve your figure An overview of annotation techniques in Graph Template Language Paper CS06 How to improve your figure An overview of annotation techniques in Graph Template Language Konrad Żywno, inventiv Health Clinical, Berlin, Germany Bartosz Kutyła, SAS Institute, Warsaw, Poland

More information

What HIGHLOW Can Do for You Kristen Much, Rho, Inc., Chapel Hill, NC Kaitlyn Steinmiller, Rho, Inc., Chapel Hill, NC

What HIGHLOW Can Do for You Kristen Much, Rho, Inc., Chapel Hill, NC Kaitlyn Steinmiller, Rho, Inc., Chapel Hill, NC ABSTRACT PharmaSUG 2016 - Paper DG09 What HIGHLOW Can Do for You Kristen Much, Rho, Inc., Chapel Hill, NC Kaitlyn Steinmiller, Rho, Inc., Chapel Hill, NC Longitudinal plots that quickly, creatively, and

More information

Nesting Multiple Box Plots and BLOCKPLOTS using GTL and Lattice Overlay SAS

Nesting Multiple Box Plots and BLOCKPLOTS using GTL and Lattice Overlay SAS Paper 1601-2015 Nesting Multiple Box Plots and BLOCKPLOTS using GTL and Lattice Overlay SAS ABSTRACT Greg Stanek MS There are times when the objective is to provide a summary table and graph for several

More information

Need a Scientific Journal Ready Graphic? No Problem!

Need a Scientific Journal Ready Graphic? No Problem! ABSTRACT Paper 1440-2017 Need a Scientific Journal Ready Graphic? No Problem! Charlotte Baker, Florida Agricultural and Mechanical University Graphics are an excellent way to display results from multiple

More information

From Getting Started with the Graph Template Language in SAS. Full book available for purchase here.

From Getting Started with the Graph Template Language in SAS. Full book available for purchase here. From Getting Started with the Graph Template Language in SAS. Full book available for purchase here. Contents About This Book... xi About The Author... xv Acknowledgments...xvii Chapter 1: Introduction

More information

Up Your Game with Graph Template Language Layouts

Up Your Game with Graph Template Language Layouts Up Your Game with Graph Template Language Layouts Sanjay Matange, SAS Institute Inc., Cary, NC ABSTRACT You have built the simple bar chart and mastered the art of layering multiple plot statements to

More information

Creating Graph Collections with Consistent Colours using ODS Graphics. Philip R Holland, Holland Numerics Ltd

Creating Graph Collections with Consistent Colours using ODS Graphics. Philip R Holland, Holland Numerics Ltd 1 Creating Graph Collections with Consistent Colours using ODS Graphics Philip R Holland, Holland Numerics Ltd Agenda 2 Introduction to ODS Graphics Data preparation Simple PROC SGPLOT code PROC SGPLOT

More information

When Simpler is Better Visualizing Laboratory Data Using SG Procedures Wei Cheng, Isis Pharmaceuticals, Inc., Carlsbad, CA

When Simpler is Better Visualizing Laboratory Data Using SG Procedures Wei Cheng, Isis Pharmaceuticals, Inc., Carlsbad, CA When Simpler is Better Visualizing Laboratory Data Using SG Procedures Wei Cheng, Isis Pharmaceuticals, Inc., Carlsbad, CA ABSTRACT In SAS 9.2, SAS/GRAPH introduces a family of new procedures to create

More information

What could ODS graphics do about Box Plot?

What could ODS graphics do about Box Plot? PharmaSUG China 2017 - Paper #70 What could ODS graphics do about Box Plot? Tongda Che, MSD R&D (China) Co. Ltd., Shanghai, China ABSTRACT Box Plot is commonly used to graphically present data's distribution.

More information

Prescription for Visualization: Take One SAS Graph Template Language Graph before Seeing the Patient

Prescription for Visualization: Take One SAS Graph Template Language Graph before Seeing the Patient Paper SAS294-2014 Prescription for Visualization: Take One SAS Graph Template Language Graph before Seeing the Patient Radhikha Myneni, SAS Institute Inc.; Eric C. Brinsfield, SAS Institute Inc. ABSTRACT

More information

Stylizing your SAS graph A needs-based approach

Stylizing your SAS graph A needs-based approach Paper PP17 Stylizing your SAS graph A needs-based approach Jerome Lechere, Novartis, Basel, Switzerland The opinions expressed in this presentation and on the following slides are solely those of the presenter

More information

Patient Profile Graphs using SAS. Sanjay Matange, SAS Institute, Inc.

Patient Profile Graphs using SAS. Sanjay Matange, SAS Institute, Inc. Patient Profile Graphs using SAS Sanjay Matange, SAS Institute, Inc. Before We Get Started Let us do a quick show of hands. How many users of SAS 9.2? How many using SAS 9.3? How many have heard of ODS

More information

A Strip Plot Gets Jittered into a Beeswarm

A Strip Plot Gets Jittered into a Beeswarm ABSTRACT Paper RIV52 A Strip Plot Gets Jittered into a Beeswarm Shane Rosanbalm, Rho, Inc. The beeswarm is a relatively new type of plot and one that SAS does not yet produce automatically (as of version

More information

Introduction to SAS/GRAPH Statistical Graphics Procedures

Introduction to SAS/GRAPH Statistical Graphics Procedures 3 CHAPTER 1 Introduction to SAS/GRAPH Statistical Graphics Procedures Overview of SAS/GRAPH Statistical Graphics Procedures 3 Introduction to the SGPLOT Procedure 4 Introduction to the SGPANEL Procedure

More information

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

Something for Nothing! Converting Plots from SAS/GRAPH to ODS Graphics ABSTRACT Paper 1610-2014 Something for Nothing! Converting Plots from SAS/GRAPH to ODS Graphics Philip R Holland, Holland Numerics Limited, UK All the documentation about the creation of graphs with SAS

More information

Macros for creating a custom report of figures

Macros for creating a custom report of figures ABSTRACT SESUG Paper AD-101-2017 Macros for creating a custom report of figures Laura Williams, CROS NT LLC Often, with clinical studies, a report that includes both tables and figures can be preferred.

More information

Kaplan-Meier Survival Plotting Macro %NEWSURV Jeffrey Meyers, Mayo Clinic, Rochester, Minnesota

Kaplan-Meier Survival Plotting Macro %NEWSURV Jeffrey Meyers, Mayo Clinic, Rochester, Minnesota PharmaSUG 2014 - Paper BB13 Kaplan-Meier Survival Plotting Macro %NEWSURV Jeffrey Meyers, Mayo Clinic, Rochester, Minnesota 1.0 ABSTRACT The research areas of pharmaceuticals and oncology clinical trials

More information

Annotating Graphs from Analytical Procedures

Annotating Graphs from Analytical Procedures PharmaSUG 2016 - Paper DG07 Annotating Graphs from Analytical Procedures Warren F. Kuhfeld, SAS Institute Inc., Cary NC ABSTRACT You can use annotation, modify templates, and change dynamic variables to

More information

From Clicking to Coding: Using ODS Graphics Designer as a Tool to Learn Graph Template Language

From Clicking to Coding: Using ODS Graphics Designer as a Tool to Learn Graph Template Language MWSUG 2018 - SP-075 From Clicking to Coding: Using ODS Graphics Designer as a Tool to Learn Graph Template Language ABSTRACT Margaret M. Kline, Grand Valley State University, Allendale, MI Daniel F. Muzyka,

More information

SAS/STAT 14.1 User s Guide. Customizing the Kaplan-Meier Survival Plot

SAS/STAT 14.1 User s Guide. Customizing the Kaplan-Meier Survival Plot SAS/STAT 14.1 User s Guide Customizing the Kaplan-Meier Survival Plot This document is an individual chapter from SAS/STAT 14.1 User s Guide. The correct bibliographic citation for this manual is as follows:

More information

Getting Your Hands on Reproducible Graphs

Getting Your Hands on Reproducible Graphs Paper 3432-2015 Getting Your Hands on Reproducible Graphs Rebecca Ottesen and Leanne Goldstein City of Hope, Duarte, California ABSTRACT Learning the SAS Graph Template Language (GTL) may seem like a daunting

More information

Introduction to the Graph Template Language Sanjay Matange, SAS Institute, Cary, NC

Introduction to the Graph Template Language Sanjay Matange, SAS Institute, Cary, NC Paper 313-2008 Introduction to the Graph Template Language Sanjay Matange, SAS Institute, Cary, NC ASTRACT In SAS 9.2, the SAS/GRAPH Graph Template Language (GTL) goes production. This system is used by

More information

Creating Graphs Using SAS ODS Graphics Designer

Creating Graphs Using SAS ODS Graphics Designer Creating Graphs Using SAS ODS Graphics Designer William Knabe Former Director of Statistical Applications, UI Information Technology Services SAS Summer Training Institute 2016 Slide 1 Overview. Evolution

More information

WORKING IN SGPLOT. Understanding the General Logic of Attributes

WORKING IN SGPLOT. Understanding the General Logic of Attributes WORKING IN SGPLOT Understanding the General Logic of Attributes Graphical Elements in SGPLOT All graphs generated by SGPLOT can be viewed as a collection of elements. Some of the nomenclature of these

More information

WORKING IN SGPLOT. Understanding the General Logic of Attributes

WORKING IN SGPLOT. Understanding the General Logic of Attributes WORKING IN SGPLOT Understanding the General Logic of Attributes Graphical Elements in SGPLOT All graphs generated by SGPLOT can be viewed as a collection of elements. Some of the nomenclature of these

More information

Annotating the ODS Graphics Way!

Annotating the ODS Graphics Way! SESUG 2016 RV-270 Annotating the ODS Graphics Way! Dan Heath, SAS Institute Inc., Cary, NC ABSTRACT For some users, having an annotation facility is an integral part of creating polished graphics for their

More information

THE NATURE OF SGPLOT (HOW ARE LINE ATTRIBUTES ASSIGNED?)

THE NATURE OF SGPLOT (HOW ARE LINE ATTRIBUTES ASSIGNED?) ABSTRACT Is the Legend in your SAS/Graph Output Still Telling the Right Story? Alice M. Cheng, Chiltern International Ltd, Bannockburn, IL Justina M. Flavin, SimulStat Inc., San Diego, CA In clinical studies,

More information

PharmaSUG China. Systematically Reordering Axis Major Tick Values in SAS Graph Brian Shen, PPDI, ShangHai

PharmaSUG China. Systematically Reordering Axis Major Tick Values in SAS Graph Brian Shen, PPDI, ShangHai PharmaSUG China Systematically Reordering Axis Major Tick Values in SAS Graph Brian Shen, PPDI, ShangHai ABSTRACT Once generating SAS graphs, it is a headache to programmers to reorder the axis tick values

More information

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below.

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below. Graphing in Excel featuring Excel 2007 1 A spreadsheet can be a powerful tool for analyzing and graphing data, but it works completely differently from the graphing calculator that you re used to. If you

More information

Fancy Data Visualisations Without Additional Toolkits

Fancy Data Visualisations Without Additional Toolkits Paper CT11 Fancy Data Visualisations Without Additional Toolkits Kirsty Parker-Hodds, Veramed, Twickenham, UK ABSTRACT Clinical trials often involve collecting data of varying quality from sites around

More information

Lab #3. Viewing Data in SAS. Tables in SAS. 171:161: Introduction to Biostatistics Breheny

Lab #3. Viewing Data in SAS. Tables in SAS. 171:161: Introduction to Biostatistics Breheny 171:161: Introduction to Biostatistics Breheny Lab #3 The focus of this lab will be on using SAS and R to provide you with summary statistics of different variables with a data set. We will look at both

More information

Converting Annotate to ODS Graphics. Is It Possible?

Converting Annotate to ODS Graphics. Is It Possible? ABSTRACT Paper 2686-2015 Converting Annotate to ODS Graphics. Is It Possible? Philip R Holland, Holland Numerics Limited In the previous chapter I described how many standard SAS/GRAPH plots can be converted

More information

Getting Started with the SGPLOT Procedure

Getting Started with the SGPLOT Procedure ABSTRACT Getting Started with the SGPLOT Procedure Joshua M. Horstman, Nested Loop Consulting Do you want to create highly-customizable, publication-ready graphics in just minutes using SAS? This workshop

More information

SAS (Statistical Analysis Software/System)

SAS (Statistical Analysis Software/System) SAS (Statistical Analysis Software/System) Clinical SAS:- Class Room: Training Fee & Duration : 23K & 3 Months Online: Training Fee & Duration : 25K & 3 Months Learning SAS: Getting Started with SAS Basic

More information

Graphing Made Easy with ODS Graphics Procedures

Graphing Made Easy with ODS Graphics Procedures Paper 1267-2014 Graphing Made Easy with ODS Graphics Procedures Lora D. Delwiche, University of California, Davis, CA Susan J. Slaughter, Avocet Solutions, Davis, CA ABSTRACT New with SAS 9.2, ODS Graphics

More information

Introduction to ODS Graphics for the Non-Statistician

Introduction to ODS Graphics for the Non-Statistician ABSTRACT Paper RV-01 Introduction to ODS Graphics for the Non-Statistician Mike Kalt and Cynthia Zender, SAS Institute Inc., Cary, NC Are you a History, English, or other humanities major who has stumbled

More information

How to improve your figure An overview of annotation techniques in Graph Template Language

How to improve your figure An overview of annotation techniques in Graph Template Language How to improve your figure An overview of annotation techniques in Graph Template Language Konrad Żywno, inventiv Health Clinical & Bartosz Kutyła, SAS Institute 14 October 2014 Why use annotation? Do

More information

Paper: PO19 ARROW Statistical Graphic System ABSTRACT INTRODUCTION pagesize=, layout=, textsize=, lines=, symbols=, outcolor=, outfile=,

Paper: PO19 ARROW Statistical Graphic System ABSTRACT INTRODUCTION pagesize=, layout=, textsize=, lines=, symbols=, outcolor=, outfile=, Paper: PO19 ARROW Statistical Graphic System Cheng Jun Tian, Johnson & Johnson PRD, Titusville, New Jersey, 08560 Qin Li, Johnson & Johnson PRD, Titusville, New Jersey, 08560 Jiangfan Li, Johnson & Johnson

More information

SAS (Statistical Analysis Software/System)

SAS (Statistical Analysis Software/System) SAS (Statistical Analysis Software/System) SAS Adv. Analytics or Predictive Modelling:- Class Room: Training Fee & Duration : 30K & 3 Months Online Training Fee & Duration : 33K & 3 Months Learning SAS:

More information

SAS (Statistical Analysis Software/System)

SAS (Statistical Analysis Software/System) SAS (Statistical Analysis Software/System) SAS Analytics:- Class Room: Training Fee & Duration : 23K & 3 Months Online: Training Fee & Duration : 25K & 3 Months Learning SAS: Getting Started with SAS Basic

More information

ABSTRACT KEY WORDS INTRODUCTION

ABSTRACT KEY WORDS INTRODUCTION ABSTRACT SESUG Paper 063-2017 Behind the Scenes: from Data to Customized Swimmer Plots Using SAS Graphical Template Language (GTL) Rita Tsang, ICON Clinical Research Hima Bhatia, ICON Clinical Research

More information

PharmaSUG 2012 Paper DG12

PharmaSUG 2012 Paper DG12 PharmaSUG 2012 Paper DG12 ABSTRACT Is the Legend in your SAS/Graph Output Still Telling the Right Story? Alice M. Cheng, South San Francisco, CA Justina Flavin, SimulStat Inc., San Diego, CA In clinical

More information

Graphing Made Easy with SGPLOT and SGPANEL Procedures

Graphing Made Easy with SGPLOT and SGPANEL Procedures Paper 2441-2015 Graphing Made Easy with SGPLOT and SGPANEL Procedures Susan J. Slaughter, Avocet Solutions, Davis, CA Lora D. Delwiche, University of California, Davis, CA ABSTRACT When ODS Graphics was

More information

Using SAS GTL with 9.3 Updates to Visualize Data When There is Too Much of It to Visualize

Using SAS GTL with 9.3 Updates to Visualize Data When There is Too Much of It to Visualize ABSTRACT Using SAS GTL with 9.3 Updates to Visualize Data When There is Too Much of It to Visualize Perry Watts, Stakana Analytics, Elkins Park, PA Nate Derby, Stakana Analytics, Seattle, WA Developing

More information

CONSORT Diagrams with SG Procedures

CONSORT Diagrams with SG Procedures PharmaSUG 2018 - Paper DV-24 ABSTRACT CONSORT Diagrams with SG Procedures Prashant Hebbar and Sanjay Matange, SAS Institute Inc., Cary, NC In Clinical trials, Consolidated Standards of Reporting Trials

More information

SAS Visual Analytics 8.2: Getting Started with Reports

SAS Visual Analytics 8.2: Getting Started with Reports SAS Visual Analytics 8.2: Getting Started with Reports Introduction Reporting The SAS Visual Analytics tools give you everything you need to produce and distribute clear and compelling reports. SAS Visual

More information

Data Annotations in Clinical Trial Graphs Sudhir Singh, i3 Statprobe, Cary, NC

Data Annotations in Clinical Trial Graphs Sudhir Singh, i3 Statprobe, Cary, NC PharmaSUG2010 - Paper TT16 Data Annotations in Clinical Trial Graphs Sudhir Singh, i3 Statprobe, Cary, NC ABSTRACT Graphical representation of clinical data is used for concise visual presentations of

More information

Hacking FlowJo VX. 42 Time-Saving FlowJo Shortcuts To Help You Get Your Data Published No Matter What Flow Cytometer It Came From

Hacking FlowJo VX. 42 Time-Saving FlowJo Shortcuts To Help You Get Your Data Published No Matter What Flow Cytometer It Came From Hacking FlowJo VX 42 Time-Saving FlowJo Shortcuts To Help You Get Your Data Published No Matter What Flow Cytometer It Came From Contents 1. Change the default name of your files. 2. Edit your workspace

More information

SGPANEL: Telling the Story Better Chuck Kincaid, COMSYS, Portage, MI

SGPANEL: Telling the Story Better Chuck Kincaid, COMSYS, Portage, MI SGPANEL: Telling the Story Better Chuck Kincaid, COMSYS, Portage, MI ABSTRACT SAS has a new set of graphics procedures called Statistical Graphics. They are built upon the Graphics Template Language (GTL)

More information

Using SAS GTL to Visualize Your Data when There is Too Much of It to Visualize

Using SAS GTL to Visualize Your Data when There is Too Much of It to Visualize PharmaSUG 2018 Paper DV-19 Using SAS GTL to Visualize Your Data when There is Too Much of It to Visualize Perry Watts, Stakana Analytics, Elkins Park, PA Nate Derby, Stakana Analytics, Seattle, WA ABSTRACT

More information

Effective Graphics Made Simple Using SAS/GRAPH SG Procedures Dan Heath, SAS Institute Inc., Cary, NC

Effective Graphics Made Simple Using SAS/GRAPH SG Procedures Dan Heath, SAS Institute Inc., Cary, NC Effective Graphics Made Simple Using SAS/GRAPH SG Procedures Dan Heath, SAS Institute Inc., Cary, NC ABSTRACT There are many types of graphics displays that you might need to create on a daily basis. In

More information

The Proc Transpose Cookbook

The Proc Transpose Cookbook ABSTRACT PharmaSUG 2017 - Paper TT13 The Proc Transpose Cookbook Douglas Zirbel, Wells Fargo and Co. Proc TRANSPOSE rearranges columns and rows of SAS datasets, but its documentation and behavior can be

More information

CHAPTER 4: MICROSOFT OFFICE: EXCEL 2010

CHAPTER 4: MICROSOFT OFFICE: EXCEL 2010 CHAPTER 4: MICROSOFT OFFICE: EXCEL 2010 Quick Summary A workbook an Excel document that stores data contains one or more pages called a worksheet. A worksheet or spreadsheet is stored in a workbook, and

More information

Using SAS ODS Graphics Chuck Kincaid, Experis, Portage, MI

Using SAS ODS Graphics Chuck Kincaid, Experis, Portage, MI Paper DV11-2012 Using SAS ODS Graphics Chuck Kincaid, Experis, Portage, MI ABSTRACT SAS has a new set of graphics procedures called ODS Graphics. They are built upon the Graphics Template Language (GTL)

More information

Interactive Programming Using Task in SAS Studio

Interactive Programming Using Task in SAS Studio ABSTRACT PharmaSUG 2018 - Paper QT-10 Interactive Programming Using Task in SAS Studio Suwen Li, Hoffmann-La Roche Ltd., Mississauga, ON SAS Studio is a web browser-based application with visual point-and-click

More information

A Picture is worth 3000 words!! 3D Visualization using SAS Suhas R. Sanjee, Novartis Institutes for Biomedical Research, INC.

A Picture is worth 3000 words!! 3D Visualization using SAS Suhas R. Sanjee, Novartis Institutes for Biomedical Research, INC. DG04 A Picture is worth 3000 words!! 3D Visualization using SAS Suhas R. Sanjee, Novartis Institutes for Biomedical Research, INC., Cambridge, USA ABSTRACT Data visualization is an important aspect in

More information

Exposure-Response Plots Using SAS Janette Garner, Gilead Sciences, Inc., Foster City, CA

Exposure-Response Plots Using SAS Janette Garner, Gilead Sciences, Inc., Foster City, CA Exposure-Response Plots Using SAS Janette Garner, Gilead Sciences, Inc., Foster City, CA ABSTRACT The Food and Drug Administration (FDA) requires that a sponsor carry out an exposure-response analysis

More information

Decorative InfoGraphs using SAS

Decorative InfoGraphs using SAS Decorative InfoGraphs using SAS Sanjay Matange, SAS Institute Inc. Presenter: Prashant Hebbar Author Sanjay Matange, Director, Data Visualization Division SAS Institute Inc. Sanjay is responsible for the

More information

LAB 1 INSTRUCTIONS DESCRIBING AND DISPLAYING DATA

LAB 1 INSTRUCTIONS DESCRIBING AND DISPLAYING DATA LAB 1 INSTRUCTIONS DESCRIBING AND DISPLAYING DATA This lab will assist you in learning how to summarize and display categorical and quantitative data in StatCrunch. In particular, you will learn how to

More information

A Programmer s Introduction to the Graphics Template Language Jeff Cartier, SAS Institute Inc., Cary, NC

A Programmer s Introduction to the Graphics Template Language Jeff Cartier, SAS Institute Inc., Cary, NC Paper 262-31 A Programmer s Introduction to the Graphics Template Language Jeff Cartier, SAS Institute Inc., Cary, NC ABSTRACT In SAS 9.2, the ODS Graphics Template Language (GTL) becomes production software.

More information

BIOSTATISTICS LABORATORY PART 1: INTRODUCTION TO DATA ANALYIS WITH STATA: EXPLORING AND SUMMARIZING DATA

BIOSTATISTICS LABORATORY PART 1: INTRODUCTION TO DATA ANALYIS WITH STATA: EXPLORING AND SUMMARIZING DATA BIOSTATISTICS LABORATORY PART 1: INTRODUCTION TO DATA ANALYIS WITH STATA: EXPLORING AND SUMMARIZING DATA Learning objectives: Getting data ready for analysis: 1) Learn several methods of exploring the

More information

Gloucester County Library System EXCEL 2007

Gloucester County Library System EXCEL 2007 Gloucester County Library System EXCEL 2007 Introduction What is Excel? Microsoft E x c e l is an electronic s preadsheet program. I t is capable o f performing many diff e r e n t t y p e s o f c a l

More information

PharmaSUG Paper SP09

PharmaSUG Paper SP09 PharmaSUG 2013 - Paper SP09 SAS 9.3: Better graphs, Easier lives for SAS programmers, PK scientists and pharmacometricians Alice Zong, Janssen Research & Development, LLC, Spring House, PA ABSTRACT Data

More information

INTRODUCTION TO THE SAS ANNOTATE FACILITY

INTRODUCTION TO THE SAS ANNOTATE FACILITY Improving Your Graphics Using SAS/GRAPH Annotate Facility David J. Pasta, Ovation Research Group, San Francisco, CA David Mink, Ovation Research Group, San Francisco, CA ABSTRACT Have you ever created

More information

Using PROC SGPLOT for Quick High-Quality Graphs

Using PROC SGPLOT for Quick High-Quality Graphs Paper 154-2010 Using PROC SGPLOT for Quick High-Quality Graphs Susan J. Slaughter, Avocet Solutions, Davis, CA Lora D. Delwiche, University of California, Davis, CA ABSTRACT New with SAS 9.2, ODS Graphics

More information

Paper S Data Presentation 101: An Analyst s Perspective

Paper S Data Presentation 101: An Analyst s Perspective Paper S1-12-2013 Data Presentation 101: An Analyst s Perspective Deanna Chyn, University of Michigan, Ann Arbor, MI Anca Tilea, University of Michigan, Ann Arbor, MI ABSTRACT You are done with the tedious

More information

My Reporting Requires a Full Staff Help!

My Reporting Requires a Full Staff Help! ABSTRACT Paper GH-03 My Reporting Requires a Full Staff Help! Erin Lynch, Daniel O Connor, Himesh Patel, SAS Institute Inc., Cary, NC With cost cutting and reduced staff, everyone is feeling the pressure

More information

JMP Clinical. Release Notes. Version 5.0

JMP Clinical. Release Notes. Version 5.0 JMP Clinical Version 5.0 Release Notes Creativity involves breaking out of established patterns in order to look at things in a different way. Edward de Bono JMP, A Business Unit of SAS SAS Campus Drive

More information

Combining TLFs into a Single File Deliverable William Coar, Axio Research, Seattle, WA

Combining TLFs into a Single File Deliverable William Coar, Axio Research, Seattle, WA PharmaSUG 2016 - Paper HT06 Combining TLFs into a Single File Deliverable William Coar, Axio Research, Seattle, WA ABSTRACT In day-to-day operations of a Biostatistics and Statistical Programming department,

More information

BUSINESS ANALYTICS. 96 HOURS Practical Learning. DexLab Certified. Training Module. Gurgaon (Head Office)

BUSINESS ANALYTICS. 96 HOURS Practical Learning. DexLab Certified. Training Module. Gurgaon (Head Office) SAS (Base & Advanced) Analytics & Predictive Modeling Tableau BI 96 HOURS Practical Learning WEEKDAY & WEEKEND BATCHES CLASSROOM & LIVE ONLINE DexLab Certified BUSINESS ANALYTICS Training Module Gurgaon

More information

SAS macro package to automate coding graphs with ClinXport.

SAS macro package to automate coding graphs with ClinXport. Paper PP12 SAS macro package to automate coding graphs with ClinXport. Philippe Remusat, ClinBAY, Genappe, Belgium François Vandenhende, ClinBAY, Genappe, Belgium ABSTRACT ClinXport is a tool developed

More information

A Visual Revolution Statistical Graphics in SAS 9.2 Bob Newman, Amadeus Software Limited

A Visual Revolution Statistical Graphics in SAS 9.2 Bob Newman, Amadeus Software Limited A Visual Revolution Statistical Graphics in SAS 9.2 Bob Newman, Amadeus Software Limited ABSTRACT This paper gives an introduction to the ODS Statistical Graphics facilities of SAS 9.2, emphasising ease

More information

Paper AD12 Using the ODS EXCEL Destination with SAS University Edition to Send Graphs to Excel

Paper AD12 Using the ODS EXCEL Destination with SAS University Edition to Send Graphs to Excel Paper AD12 Using the ODS EXCEL Destination with SAS University Edition to Send Graphs to Excel ABSTRACT William E Benjamin Jr, Owl Computer Consultancy LLC, Phoenix Arizona Students now have access to

More information

PDF Accessibility: How SAS 9.4M5 Enables Automatic Production of Accessible PDF Files

PDF Accessibility: How SAS 9.4M5 Enables Automatic Production of Accessible PDF Files Paper SAS2129-2018 PDF Accessibility: How SAS 9.4M5 Enables Automatic Production of Accessible PDF Files Woody Middleton, SAS Institute Inc., Cary, NC ABSTRACT No longer do you need to begin the accessibility

More information