资源描述
libname mylib "e:\data\";
2.4.3 编程绘制统计图
SAS可以把存贮在SAS数据集中的数据以图形的方式形象直观地显示出来。在SAS/GRAPH模块的支持下,SAS可以作散点图、曲线图、直方图、扇形图、三维曲面图、等高线图、地图,等等。
1. GCHART过程
(1) 语法格式
GCHART过程用于绘制直方图、饼形图(扇形图)、三维直方图等表示变量分布的图形。其语法格式为:
PROC GCHART DATA = <数据集名>;
<图形关键字> <变量名称>/<选项列表>
RUN;
GCHART过程可以使用的图形关键字及其所绘制的图形类型见表2-5。
图形关键字
绘制的图形类型
图形关键字
绘制的图形类型
block
方块图
pie
饼形图
hbar
水平的条形图
pie3d
三维饼形图
hbar3d
水平的三维条形图
donut
环形图
vbar
竖立的条形图
star
星形图
vbar3d
竖立的三维条形图
图形关键字后的变量名用以指定进行图形描述时的分组变量,可以是数值型的(此时以各组的组中值为分组的标志),也可以是字符型的。
选项比较重要的有:
TYPE = 统计量关键字,表示以图形对变量(SUMVAR所指定的变量)的哪一种统计量进行描述,比如频数(FREQ)、均数(MEAN)、总计(SUM)、频数百分比(PCTN)等;
SUBGROUP = 变量名(分组变量),指定要进行分组(各组段内再分组)的变量;
SUMVAR = 变量名(数值变量),指定要进行统计计算的变量,也就是“TYPE = 统计量关键字”选项中统计量的计算所依据的变量。
(2) 画条形图(直方图)
使用VBAR关键字可以画条形图。例如,画出数据集l2_1中x变量的条形图的代码如下:
proc gchart data = mylib.sryzc;
vbar INCOME;
run;
结果如图所示。
其中绘图用的变量用VBAR语句给出,如果把VBAR改成HBAR则条形方向变为横向。用GCHART绘制的条形图和在INSIGHT中绘制的直方图有所不同,它在横轴标的是区间的中点值,而在INSIGHT中横轴标的是区间的端点值。
可以指定分组的变量,例如在每个区段内再分段,可以用如下代码:
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过程绘制散点图和连线图
通常用散点图和连线图可以表示:
● 一个变量随另一个变量的变化;
● 变量之间的关系;
● 数据值的分布。
(1) GPLOT过程的一般格式
PROC GPLOT DATA = <数据集名>;
PLOT <纵轴变量> * <横轴变量> [= <变量>][/<选项>];
[SYMBOLn <选项>;]
RUN;
常用的选项见表2-6。
表2-6 PLOT语句的选项
选项
意义
说明
FRAM | NOFRAM
在图形四周加入或不加入边框
缺省为加入
CFRAM = 颜色
边框内的颜色
缺省为白色
AUTOHREF(AUTOVEREF)
在水平(垂直)轴的每个主刻度处加入水平(垂直)参考线
NOAXIS
取消坐标轴及相关的图形元素
CAXIS = 颜色
设定轴的颜色
CTEXT = 颜色
设定与轴相关字符的颜色
HAXIS = 值列举
设定水平轴主刻度的值
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, circle
C = 颜色
表示点的符号及连线的颜色
black, red, green, blue, cyan, magenta, gray, pink, orange, brown, yellow
CV =颜色
专指点的符号的颜色
H = n<单位>
指名符号的大小
单位有:cell, cm, pct, pt, in
POINTLABEL
在点的附近表明Y轴变量的值
i = 连线方式
指明连线的方式
none, join, spline, needle
CI = 颜色
专指连线的颜色
L = n
n为线型的序号
0 – 空白线,1 - 实线,2 – 虚线
W = n
n表示线的宽度
(2) 散点图
绘制家庭总收入对家庭总支出的散点图,代码如下:
proc gplot data = mylib.sryzc;
plot income*outgo;
run;
结果显示了一个GRAPHICS窗口,绘出了以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;
symbol 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="宋体" htitle=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的打印驱动,具体请参考有关资料或帮助。
展开阅读全文