1、13. 绘图通用语法图形是展示数据的重要方法,图形的形象直观是数据报表无法替代的。SAS 中超过 80%的统计分析过程,都可以利用 ODS Graphics 模块生成图形独立输出。SAS 9.2 版以来,SAS 画图模块正变得越来越灵活、精良和易于使用。在一些分析过程步(PROCs) 中,ODS Graphics 可以自动的生成一些图形,而不需要额外的代码。这使得用户多了一个选择,即可以使用默认的输出生成图形,也可以自己来创造个性化的图形。(一)ODS Graphics 概述一、 打开/关闭 ODS GraphicsSAS 9.2 开始,将“ODS Graphs”从 SAS/GRAPH 移到
2、Base SAS 9.3,并增加了新的功能更加强大的绘图过程步:SGPLOT, SGSCATTER, SGPANEL, SGRENDER. 这些过程步,用很少的代码就能生成高质量的图形。注:早期 SAS 是用 GPLOT 和 GCHART 过程步绘制图形。从 SAS 9.3 开始,ODS Graphics 模块默认是关闭的,使用它绘图之前需要先打开,使用如下语句:ODS GRAPHICS ON;不用了可以保持其打开状态(影响软件启动速度) ,若要关闭用:ODS GRAPHICS OFF;ODS Graphics 相比 SAS/GRAPH 具有更先进的特性:直接将图形以图片格式输出(默认输出路径
3、是 work 临时库) ,在结果查看器中默认以 html 格式显示。(二)PROC SGPLOT 过程步一、图形分类PROC SGPLOT 过程步可以绘制 16 种图形,归为 5 类:图形类 图形名 基本语法散点图(SCATTER)时间序列图(SERIES )阶梯图(STEP )针形图(NEEDLE)X-Y 图向量图(VECTOR)PLOTNAME X=var Y=var / options;注:PLOTNAME 为SCATTER、SERIES 等图形名。带状图 带状图(BAND)BAND X=var UPPER=varLOWER=var / options;线性回归图(REG)局部加权回归(
4、LOESS)B-样条回归(PBSPLINE )拟合-置信图预测椭圆(ELLIPSE)PLOTNAME X=var Y=var / options;连续变量分布图盒形图(HBOX or VBOX)PLOTNAME response-var / options;直方图(HISTOGRAM)密度图(DENSITY)条形图(HBAR or VBAR)线形图(HLINE or VLINE)分类变量分布图点状图(DOT)PLOTNAME category-var / options;二、可选参数 OPTIONS可选参数 说明 适用图形RESPONSE=var 指定数值变量做统计分析 -STAT=统计量 对
5、 RESPONSE 变量做指定的统计分析 -DATALABEL=var 指定该变量的值作为标签/GROUP=var; 设置分组变量 -,-/TRANSPARENCY=value; 设置透明度:0,1 - ,-/MARKERS; 设置标记 -,/NOMARKERS; 设置无 标记 - /LEGENDLABEL=text-str; 修改线型说明 全部/FILLATTRS=(attribute=val); 设置填充属性 /LINEATTRS=(attribute=val); 设置线型属性 -,/MARKERATTRS=(attribute=val); 设置标记属性 -,- ,三、16 种图形样式、绘
6、图语句及可选参数四、设置坐标轴(XAXIS/YAXIS)和基准线(REFLINE)1. 设置坐标轴基本语法:PROC SGPLOT;XAXIS 或 YAXIS options;选项包括:(1)GRID生成网格线;(2)LABEL =text-str设置坐标轴标记的文字;(3)TYPE = axistype设置坐标刻度的类型(字符变量默认为 DISCRETE;数值变量默认为 LINEAR;日期时间变量默认为 TIME;对数尺度默认为 LOG;(4)VALUES =(values-list)设置刻度标记,例如VALUES=(0 5 10 15 20); 等同于 VALUES=(0 TO 20 BY
7、 5);2. 设置基准线(水平或竖直线)给图形增加基准线,是为了便于观察哪些点在某些重要的取值之上(左)还是之下(右)。基本语法:PROC SGPLOT;REFLINE values / options;说明:(1)“values” 为一些数值,指定画水平线的位置;(2)可选参数包括:AXIS = X 或 Y指定水平还是竖直,默认 Y(水平);LABEL =text-str设置基准线标记的文字;TRANSPARENCY = n设置透明度:0,1,默认 0.8;示例:REFLINE 32 75 / LABEL = (32 degrees 75 degrees) TRANSPARENCY = 0.
8、5;XAXIS TYPE = DISCRETE;YAXIS LABEL = Average High Temperature (F);五、修改“线型说明”(KEYLEGEND)和添加“文字说明”(INSET)SGPLOT 和 SGPANEL 过程步都会自动生成线型说明,但有时候需要修改它或加一些自己的注释。若想去掉“线型说明”,使用如下语句即可:PROC SGPLOT DATA = dataset NOAUTOLEGEND;1. 修改“线型说明”基本语法:KEYLEGEND / options;可选项包括:(1)DOWN = n 和 ACROSS = m指定“线型说明”占 n 行 m 列;(2
9、)LOCATION =INSID 或 OUTSIDE指定“线型说明”在坐标轴范围内还是外,默认OUTSIDE;(3)NOBORDER“线型说明”是在一个小框中,该参数可以去掉小框;(4)POSITION =value指定“线型说明”放置的具体位置:TOP, TOPLEFT, TOPRIGHT, BOTTOM (默认), BOTTOMLEFT, BOTTOMRIGHT, LEFT, RIGHT.2. 添加文字说明基本语法:INSET text-str1 . text-strn / options;注:多个说明语句,将逐个往下排(第 1 行,第 2 行);选项包括:(1)BORDER为文字说明加上
10、边框;(2)POSITION =value指定“线型说明”放置的具体位置同 1.(4).示例:KEYLEGEND / LOCATION = INSIDE POSITION = TOPRIGHT;INSET Olympics not held in 1940 and 1944 / POSITION = BOTTOMLEFT;六、定制图形属性可以设置线型、颜色等图形属性,让图形更具个性化。SGPLOT 过程步提供了许多图形属性,用法:跟在 SGPLOT 的基本绘图语句后面,加上“/ 图形属性设置语句”即可。例如,PROC SGPLOT;SCATTER X = Score Y = HoursOfSt
11、udy / MARKERATTRS = (SYMBOL = STAR);常用的图形属性有:(1)FILLATTRS = (COLOR =value)设置填充属性,填充颜色为某值,COLOR 可选项:AQUA, BLACK, BLUE, FUCHSIA,GREEN, GRAY, LIME, MAROON, NAVY, OLIVE,PURPLE, RED, SILVER, TEAL, WHITE, YELLOW;(2)LINEATTRS = (attribute =value)设置线型属性,attribute 包括:颜色 COLOR=, 样式 PATTERN=, 线宽 THICKNESS=val;
12、PATTERN 可选项:SOLID, DASH, SHORTDASH,LONGDASH, DOT, DASHDASHDOT, or DASHDOTDOT;(3)MARKERATTRS = (attribute =value)设置“标记”的属性,attribute 包括:COLOR=, SIZE=val, 符号 SYMBOL=;SYMBOL 选项包括:CIRCLE, CIRCLEFILLED, DIAMOND, DIAMONDFILLED, PLUS, SQUARE, SQUAREFILLED, STAR, STARFILLED,TRIANGLE, TRIANGLEFILLED(4)LABELA
13、TTRS = (attribute =value)设置坐标轴的属性,attribute 包括:COLOR=, SIZE=, STYLE=, WEIGHT=;SYTLE 选项:ITALIC (斜体), NORMAL(默认)WEIGHT 选项:BOLD(加粗), NORMAL(默认)(5)VALUEATTRS = (attribute =value)设置坐标轴刻度标记的属性,同(4);注:THICKNESS 和 SIZE 数值的单位默认是 PX(相对长度,1像素),其它可选:CM, IN, MM, PCT, PT。1in = 2.54cm = 25.4 mm = 72pt = 6pc七设置图片格式
14、和输出路径作为论文或 PPT 中使用的图片,经常需要调整图片的大小、类型、分辨率等。SAS 图形可以输出为PDF、RTF、LISTING、HTML.1. 指定图形的输出样式和风格基本语法:ODS 输出样式 options;说明:(1)常用的输出样式有:HTML, LISTING, PDF, RTF;(2)options 可选项: FILE 或 GPATH = 输出路径;“FILE”设置 PDF、RTF 格式图片的输出路径;“GPATH”设置 LISTING、HTML 格式图片的输出路径; DPI 或 IMAGE_DPI = n“DPI”设置 PDF 格式图片的分辨率,默认 n=200;“IMA
15、GE_DPI”设置 HTML, LISTING, RTF 格式图片的分辨率,默认 n=100; STYLE = 风格名指定一种风格模板(见下表) ;色彩 风格模板名 默认输出样式ANALYSISHTMLBLUE HTMLLISTING LISTING (graphs only)PRINTER PRINTER, PDF, PSRTF RTFColor(彩色)STATISTICAL灰色 JOURNAL黑白 JOURNAL22. 设置输出图片的格式基本语法:ODS GRAPHICS / options;options 可选项:(1)HEIGHT = h 和 WIDTH = w设置图片的高和宽,可选单
16、位 CM, IN, MM, PT, PX;默认大小是 640480 像素,也可以只设置高或宽,另一个会自动按比例跟着变化;(2)IMAGENAME =filename设置图片的文件名;(3)OUTPUTFMT = filetype指定图片的输出格式(后缀名):BMP, GIF, JPEG,PDF, PNG, PS, SVG, TIFF 等;(4)RESET恢复默认设置,若没有 RESET,将自动给图片依次命名;示例:ODS LISTING GPATH = c:MyGraphs STYLE = JOURNAL;ODS GRAPHICS / RESETIMAGENAME = BirdGraph O
17、UTPUTFMT = BMP HEIGHT = 2IN WIDTH = 3IN;(三)PROC SGPANEL 过程步SGPLOT 与 SGPANEL 过程步用法基本相同,区别在于:SGPLOT 是绘制 “单图 ”;SGPANEL 过程步绘制“多子图” 。基本语法:PROC SGPANEL data = 数据集;PANELBY 分组变量 / options;绘图语句 ;说明:(1)SGPANEL 过程步必须与“PANELBY 语句”一起使用;(2)设置坐标轴时用“COLAXIS、ROWAXIS” ,不同于SGPLOT 用 “XAXIS、YAXIS” ;(3)可选项: ROWS = n 和 CO
18、LUMNS = m设为放置 n 行 m 列(nm 个)子图; MISSING设为包含缺省值; NOVARNAME删除子图标题的变量名; SPACING = n设置子图行列间的距离=n 个像素,默认 n=0; UNISCALE =value设置坐标轴共同的刻度标记;例1 关于鸟类的数据(C:MyRawDataBirds.dat),变量包括名称、种类(S- 鸣禽,R-猛禽)、身长(cm)、翼展(cm),注意每行有多组数据:读入数据,用 GSPANEL 过程步绘制翼展( X轴)和身长(Y 轴)的散点图,要求按照种类分组。代码:data wings;infile c:MyRawDataBirds.da
19、t;input Name $12. Type $ Length Wingspan ;run;* Plot Wingspan by Length;proc format;value $birdtypeS = SongbirdsR = Raptors;run;proc sgpanel data = wings;panelby Type / NOVARNAME SPACING = 5;scatter X = Wingspan Y = Length;format Type $birdtype.;title Comparison of Wingspan vs. Length;run;运行结果:注:不需要事先按“panelby”变量排好序。(四)用 INSIGHT 绘制统计图形(窗口操作)【解决方案】【分析】【交互式数据分析】,选择要分析的数据集,然后【打开】,例2 绘制关于性别的条形图:选定要分析的变量,比如Sex,点【分析】【直方图/条形图】,得到男女频数的条形图:例3 绘制体重和身高的散点图,并按男女性别分组考虑。先不要选定变量,点【分析】【散点图】,设定Y变量为 weight,X变量为 Height,分组变量为 Sex,标签变量随意。点【确定】得到绘制其它图形也是类似的。