/* To see the graphic as it will look when printed, */ /* display it as colored text on a white background. */ /* Use black for normal text and lines, and use red to */ /* highlight maximum values. For some output devices */ /* it may be necessary to specify a target device or */ /* rotation in the GOPTIONS statement. */ goptions reset=all /* Set graph options to defaults. */ goptions reset=all /* Set graph options to defaults. */ gunit=pct /* Define output area in percent. */ cback=white /* Use a white background. */ targetdevice=pscolor /* Emulate a Postscript */ /* device. */ rotate=landscape /* Make sure orientation is */ /* correct. */ ; data _null_; set mouse end=EOF; array treat(6) con brom nal morph bmor nmor; if (_n_=1) then do; /* Initialize graphics */ rc=ginit(); /* Makes DSGI libraries available */ link H; /* Set up graphics environment */ end; x=32; /* Start each data line at this x value. */ mx=max(con,brom,nal,morph,bmor,nmor); /* Determine maximum */ /* value. */ rc=gset('texfont','swissl'); /* Set font. */ rc=gset('texcolor',1); /* Initial color will be black. */ sg=put(surgery,$sur.); /* Get formatted value for surgery. */ rc=gdraw('text',5,y,sg); do i=1 to 6; /* Step through variables. */ if treat(i)=mx then do; /* If value is maximum then change the color and */ /* font. */ rc=gset('texcolor',2); /* Value assigned in 'H' */ /* labeled section. */ rc=gset('texfont','swissi'); end; else do; /* If not maximum then do not change color and */ /* font */ rc=gset('texcolor',1); rc=gset('texfont','swissl'); end; /* The values entered by the 'text' parameter of the */ /* GDRAW function must be character, so the put */ /* function is used to convert numeric to character */ /* values. */ rc=gdraw('text',x,y,put(treat(i),3.)); x+15; /* Increment x for the next column. */ end; /* Step through variables. */ y+(-5); /* Decrement y for the next row. */ /* If there are less than 10 lines left on the current graph */ /* or the end of the file has been processed then print the */ /* footnote. */ if y le 10 or EOF then link NEXTP; return; H: /* Initialize the graphic environment */ /* Default values are set for such things as text */ /* fonts, colors, line drawing characteristics, and */ /* graph name and destination. */ /* For multiple pages, we can store each page as */ /* a separately named graph: test1, test2, and so on. */ /* By default they are stored in a catalog called */ /* WORK.GSEG. */ n+1; /* Use this counter to name graph. */ /* Name the new graph - TEST1, TEST2, and so on. */ rc=graph('clear','test'!!left(put(n,3.))); rc=gset('VIEWPORT',1,0,0,1,1); /* Define viewports '1' to be the */ /* entire active output area. */ /* 'x' starts at 32 for my data entry into the table. I */ /* want to increment 'x' by 15 for each column and leave a right */ /* margin of 15. Therefore, I can set my maximum 'x' as 32+15*6 */ /* or 122. Thus, my horizontal dimension (or range) will run */ /* from 0 to 122. */ rc=gset('WINDOW',1,0,0,122,100); /* Set window '1' in viewport */ /* to have a horizontal range of */ /* 0 to 122. The vertical range */ /* is from 0 to 100. */ rc=gset('TRANSNO',1); /* Associate viewport '1' with window '1' */ /* and make viewports '1' active. */ /* The versatility of graphics requires the */ /* addition of statements to control the */ /* appearance of the output. For example, */ /* initial values can be set for text appearance, */ /* colors, etc. */ rc=gset('texfont','zapf'); /* Select initial font. */ /* Associate colors to be used with 'index' numbers. */ rc=gset('colrep',1,'black'); rc=gset('colrep',2,'red'); rc=gset('texalign','left','normal'); /* Align text left */ /* in columns. */ rc=gset('texcolor',1); /* Start with a text color of black */ /* Title of table. /* We can use TITLE statements, but for comparison */ /* with the non-graphics example, let's use DSGI to */ /* generate the titles. */ rc=gset('texheight',7); /* Title font size. */ rc=gdraw('text',10,90,'Surgery by Drug Treatment'); /* Subtitle. */ rc=gset('texheight',5); /* Smaller font for subtitle */ rc=gdraw('text',10,80,'C57BL6J Mice'); rc=gset('lincolors',1); /* Draw lines in black */ /* The horizontal range of the window is from 0 to 122. */ /* We want a margin of 5 before and after the line. */ /* Specify 5 for the beginning 'x' values and 122-5=117 */ /* for the ending value. Also, the horizontal line is */ /* being drawn 77% up from the bottom of the graph. */ rc=gdraw('line',.,5,117,77,77); rc=gset('texheight',4.5); /* Text height for table body. */ /* Column headings. */ rc=gdraw('text',5,72,'Surgery'); rc=gdraw('text',32,72,'Contr.'); rc=gdraw('text',47,72,'Bromo.'); rc=gdraw('text',62,72,'Nalox.'); rc=gdraw('text',77,72,'Morph.'); rc=gdraw('text',92,72,'Br/Mor.'); rc=gdraw('text',107,72,'Na/Mor.'); rc=gdraw('line',.,5,117,70,70); y=62; /* initial y value */ return; NEXTP: /* Draw footnote, display graphic and either */ /* quit or go to next page. */ y+(-3); /* Decrement 'y' from bottom of table to */ /* ensure that the footnote will be drawn */ /* below the last row of the table. */ /* Use red and bold font. */ rc=gset('texcolor',2); rc=gset('texfont','swissb'); rc=gdraw('text',10,y,'Red '); /* Use black and normal font. */ rc=gset('texfont','swissl'); rc=gset('texcolor',1); rc=gdraw('text',17,y, 'represents maximum value across drug ' treatment for surgery'); rc=graph('update'); /* Graph is completed, so store and display. */ if eof then do; /* If no more data */ rc=gterm(); /* Terminate DSGI. */ stop; end; else link H; return; run;