1、libname mylib “e:data“;2.4.3 编程绘制统计图SAS 可以把存贮在 SAS 数据集中的数据以图形的方式形象直观地显示出来。在SAS/GRAPH 模块的支持下,SAS 可以作散点图、曲线图、直方图、扇形图、三维曲面图、等高线图、地图,等等。1. GCHART 过程(1) 语法格式GCHART 过程用于绘制直方图、饼形图(扇形图) 、三维直方图等表示变量分布的图形。其语法格式为:PROC GCHART DATA = ;/RUN;GCHART 过程可以使用的图形关键字及其所绘制的图形类型见表 2-5。图形关键字 绘制的图形类型 图形关键字 绘制的图形类型block 方块图
2、pie 饼形图hbar 水平的条形图 pie3d 三维饼形图hbar3d 水平的三维条形图donut 环形图vbar 竖立的条形图 star 星形图vbar3d 竖立的三维条形图图形关键字后的变量名用以指定进行图形描述时的分组变量,可以是数值型的(此时以各组的组中值为分组的标志) ,也可以是字符型的。选项比较重要的有:TYPE = 统计量关键字,表示以图形对变量( SUMVAR 所指定的变量)的哪一种统计量进行描述,比如频数(FREQ) 、均数(MEAN) 、总计( SUM) 、频数百分比(PCTN)等;SUBGROUP = 变量名(分组变量) ,指定要进行分组(各组段内再分组)的变量;SUM
3、VAR = 变量名(数值变量) ,指定要进行统计计算的变量,也就是 “TYPE = 统计量关键字”选项中统计量的计算所依据的变量。(2) 画条形图(直方图)使用 VBAR 关键字可以画条形图。例如,画出数据集 l2_1 中 x 变量的条形图的代码如下:proc gchart data = mylib.sryzc;vbar INCOME;run;结果如图所示。其中绘图用的变量用 VBAR 语句给出,如果把 VBAR 改成 HBAR 则条形方向变为横向。用 GCHART 绘制的条形图和在 INSIGHT 中绘制的直方图有所不同,它在横轴标的是区间的中点值,而在 INSIGHT 中横轴标的是区间的端
4、点值。可以指定分组的变量,例如在每个区段内再分段,可以用如下代码:proc gchart data = mylib.sryzc;vbar INCOME / subgroup =R_ID;run;结果如图所示。(3) 画三维条形图使用 BLOCK 关键字可以画三维条形图。例如,画出数据集 mylib.sryzc 中 Income 变量的三维条形图的代码如下:proc gchart data = mylib.l2_1;block INCOME / subgroup =R_ID;run;结果如图所示。2. 使用 GPLOT 过程绘制散点图和连线图通常用散点图和连线图可以表示: 一个变量随另一个变量的
5、变化; 变量之间的关系; 数据值的分布。(1) GPLOT 过程的一般格式PROC GPLOT DATA = ;PLOT * = /;SYMBOLn ;RUN;常用的选项见表 2-6。表 2-6 PLOT 语句的选项选项 意义 说明FRAM | NOFRAM 在图形四周加入或不加入边框 缺省为加入CFRAM = 颜色 边框内的颜色 缺省为白色AUTOHREF(AUTOVEREF)在水平(垂直) 轴的每个主刻度处加入水平(垂直)参考线NOAXIS 取消坐标轴及相关的图形元素 CAXIS = 颜色 设定轴的颜色 CTEXT = 颜色 设定与轴相关字符的颜色 HAXIS = 值列举 设定水平轴主刻度
6、的值 VAXIS = 值列举 设定垂直轴主刻度的值 SYMBOL 语句用来控制表示点的符号和点间的连线。其中 n 是不同 SYMBOL 语句的序号,可以是 1-99,缺省为 1。选项见表 2-7。表 2-7 SYMBOL 语句的选项选项 意义 取值V = 符号 表示点使用的符号 plus, x, star, square, diamond, triangle, hash, y, z, paw, point, dot, circleC = 颜色 表示点的符号及连线的颜色black, red, green, blue, cyan, magenta, gray, pink, orange, brow
7、n, yellowCV =颜色 专指点的符号的颜色 H = n 指名符号的大小 单位有:cell, cm, pct, pt, inPOINTLABEL在点的附近表明 Y 轴变量的值i = 连线方式 指明连线的方式 none, join, spline, needleCI = 颜色 专指连线的颜色 L = n n 为线型的序号 0 空白线,1 - 实线,2 虚线 W = n n 表示线的宽度 (2) 散点图绘制家庭总收入对家庭总支出的散点图,代码如下:proc gplot data = mylib.sryzc;plot income*outgo;run;结果显示了一个 GRAPHICS 窗口,绘
8、出了以 x 为纵轴、以 y 为横轴的散点图(见图) 。可以在图中按第三个变量分组画出散点图(如图 2-48 右) ,代码如下:proc gplot data = mylib.sryzc;plot INCOME*OUTGO =R_ID;symbol1 color=black v = star;symbol2 color=blue v = dot;run;(3) 连线图为了绘制连线,只要在 SYMBOL 语句中指定 i = join。例如绘制家庭总收入对家庭编号的连线图(图 2-49 左) ,代码如下:proc gplot data = mylib.sryzc;plot INCOME*ID;sym
9、bol i=join v=star;run;也可以分地区绘制家庭总收入对家庭编号的连线图(图 2-49 右) ,代码如下:proc gplot data = mylib.sryzc;plot INCOME*ID =R_ID;symbol1 color=black i=join v = star;symbol2 color=blue i=join v = dot;run;2.4.4 图形的调整与输出 (略 )在图形中也可以用 TITLE 语句和 FOOTNOTE 语句给图形加标题和脚注。还可以在图形的标题、标签中使用 TrueType 字型的汉字,例如:goptions ftext=“宋体“ h
10、title=4 cells htext=3 cells;proc gplot data=sashelp.class;title “试验 SAS 图形的汉字功能“;symbol i=none v=square;plot weight*height;label weight=“体重“ height=“身高“;run;输出结果见图。其中 GOPTIONS 中的 FTEXT 选项指定图形中文本的字体。为了把 GRAPH 绘制的图形保存为兼容的图形文件,只要在显示某一页图形输出时,选“File-Export”菜单,在出现的输入文件名的窗口选择适当的文件类型,如BMP、WMF、JPEG、PS,等等。要打印 GRAPH 生成的图形,只要选“File-Print”。这样用 Windows 的打印驱动程序与SAS/GRAPH 的图形驱动配合来打印。另外,SAS/GRAPH 模块还提供了许多种打印机的独立的驱动程序,可以不依赖于 Windows 的打印驱动,具体请参考有关资料或帮助。