Objective: I am running a statistical analysis in SAS, and the default ODS graphics look good, but I need them to be publication quality.
SAS can automatically create some nice graphs, and has greatly increased the availability of graphs within procedures. If you like what you see, you might copy graphs directly from the SAS output window, or possibly you save graphs and output to a pdf or other external file format. But this output will be low quality, generally 75 dpi. Instead, add the following statements to write graphics directly to files, allowing control of format and quality.
ods graphics on /
width=7in
imagefmt=tiff
imagemap=off
imagename="MyPlot"
border=off;
ods listing file="Body.rtf" style=journal gpath="." dpi=600;
Once these statements have been submitted, all graphs created by subsequent procedures will be written to files named MyPlotxx.tiff, where xx will be sequential numbers. The tiff option can be changed to other formats, such as jpeg or png. The dpi option controls the quality, with a typical graph file created by the above being around 38Meg, instead of the default 70 KB. Use png to get a more reasonably sized graph (200KB) without the compression fuzziness of jpeg. Gpath states where the files will be written, the dot here says use the current working directory (displayed in the lower right margin of the SAS window). Note that tiff output is not supported by html or rtf ODS destinations, so listing is used.
To cancel these options, you need to reset the graphics options, and close the output file so the dpi option is removed (or set it to 100), for example
ods graphics on/reset;
ods listing close;
ods html ;
Another option used above, style=journal instead of the default style=htmlblue is an easy way to get black and white graphs.
Default configuration of SAS does not allow large graphs, so you are likely to get no graphs, and the following errors in SAS log:
WARNING: A very large output size of (4000, 3000) is in effect. This could make Java VM run out of memory and result in some Java exceptions. You should reduce the output size or DPI settings.
ERROR: Java virtual machine exception. java.lang.OutOfMemoryError: Java heap space.
SAS can automatically create some nice graphs, and has greatly increased the availability of graphs within procedures. If you like what you see, you might copy graphs directly from the SAS output window, or possibly you save graphs and output to a pdf or other external file format. But this output will be low quality, generally 75 dpi. Instead, add the following statements to write graphics directly to files, allowing control of format and quality.
ods graphics on /
width=7in
imagefmt=tiff
imagemap=off
imagename="MyPlot"
border=off;
ods listing file="Body.rtf" style=journal gpath="." dpi=600;
Once these statements have been submitted, all graphs created by subsequent procedures will be written to files named MyPlotxx.tiff, where xx will be sequential numbers. The tiff option can be changed to other formats, such as jpeg or png. The dpi option controls the quality, with a typical graph file created by the above being around 38Meg, instead of the default 70 KB. Use png to get a more reasonably sized graph (200KB) without the compression fuzziness of jpeg. Gpath states where the files will be written, the dot here says use the current working directory (displayed in the lower right margin of the SAS window). Note that tiff output is not supported by html or rtf ODS destinations, so listing is used.
To cancel these options, you need to reset the graphics options, and close the output file so the dpi option is removed (or set it to 100), for example
ods graphics on/reset;
ods listing close;
ods html ;
Another option used above, style=journal instead of the default style=htmlblue is an easy way to get black and white graphs.
Default configuration of SAS does not allow large graphs, so you are likely to get no graphs, and the following errors in SAS log:
WARNING: A very large output size of (4000, 3000) is in effect. This could make Java VM run out of memory and result in some Java exceptions. You should reduce the output size or DPI settings.
ERROR: Java virtual machine exception. java.lang.OutOfMemoryError: Java heap space.
To fix these, go to your config.sas file, usually located (Windows) in
C:\Program Files\SASHome\SASFoundation\9.4\nls\en
Location varies depending on 32 vs 64 bit, the 9.4 version, and the en language. The plain text file is sasv9.cfg, so use an editor like Notepad to find these lines
-Xms128m
-Xmx128m
and change them to
-Xms1028m
-Xmx1028m
Reload SAS to activate the changes, and dpi of at least 600 should be possible.
Example: Run this SAS program to get low and high quality graphs. If you zoom each graph, the low quality is clearly much fuzzier.
data one;
label x="First Score"
y="Last Score";
do rep=1 to 20;
y=10+rannor(10);
x=y+rannor(20)*3;
output;
end;
run;
ods graphics on /
width=7in
imagefmt=png
imagemap=off
imagename="MyPlot"
border=off;
ods html file="Body.html" style=journal gpath="." dpi=100;
proc corr data=one plots=scatter;
var x; with y;
run;
ods html file="Body.html" style=journal gpath="." dpi=600;
proc corr data=one plots=scatter;
var x; with y;
run;
Comments
Post a Comment