免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2252 | 回复: 0
打印 上一主题 下一主题

用SAS/GRAPH绘图 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-22 18:10 |只看该作者 |倒序浏览

SAS可以把存贮在SAS数据集中的数据以图形的方式形象直观地显示出来。在SAS/GRAPH 模块的支持下,SAS可以作散点图、曲线图、直方图、扇面图、三维曲面图、等高线图、地图,等等。
散点图和曲线图
用GPLOT过程绘制散点图和曲线图。比如,我们要绘制SASUSER.GPA中SATV对SASM的散点图,只要用此程序:
proc gplot data=sasuser.gpa;
  symbol i=none v=star;
  plot satv*satm;
run;


结果显示了一个GRAPHICS窗口,绘出了以SATV为纵轴、以SATM为横轴的散点图(见图 1)。在GPLOT过程中,用PLOT语句指定绘图用的变量。SYMBOL语句是一个全程语句,指定绘图用的连线方式、颜色、散点符号、大小,等等。SYMBOL语句可以带编号,如SYMBOL2,SYMBOL3 等,不带编号的相当于SYMBOL1。
为了绘制连线,只要在SYMBOL语句中指定I=JOIN。比如,对SASUSER.AIR数据集,以DATETIME 为横轴、以CO为纵轴绘曲线图图,可以用:
proc gplot data=sasuser.air;
  symbol i=join v=star;
  plot co*datetime;
run;

见图 2。如果不想在图中出现散点符号可以在SYMBOL语句中用V=NONE。
为了在图中作几条曲线,只要在PLOT语句中指定多个因变量(自变量一般应为同一个),并使用OVERLAY选项,如:
proc gplot data=sasuser.air;
  symbol1 i=join v=none line=1 ;
  symbol2 i=join v=none line=2 ;
  plot co*datetime=1 so2*datetime=2 / overlay;
run;
其中我们指定了两个SYMBOL语句,第一个SYMBOL语句指定了LINE=1,表示线型为实线,第二个SYMBOL语句指定了LINE=2表示线型为虚线。我们在PLOT语句中用了“纵轴*横轴= n”的格式来指定曲线使用哪一个SYMBOL语句的规定来画, n对应于SYMBOL语句的序号。
SYMBOL语句的I=选项还可以取SPLINE表示在散点间连接连样条曲线,取I=SM nnnn取00-99值)表示绘制样条曲线但可以不经过散点, nn值代表曲线光滑性与拟和度的折中。取I=NEEDLE绘制每个点到横轴的垂线。取I=RL 绘制线性回归直线,I=RQ为二次曲线,I=RC为三次曲线,后面加上CLI nn如RLCLI95表示在回归直线之外绘制预测值的95%置信限曲线,比如:
proc gplot data=sasuser.gpa;
  symbol i=rlcli95 v=star;
  plot satv*satm;
run;


见图 3。GPLOT过程还可以有其它灵活的用法,可以参考有关资料或用SAS系统菜单“Help | Extended Help”,从中找“SAS System Help: Main Menu | Graphics | GPLOT”。
直方图和扇形图
用GCHART过程绘制直方图、扇形图、三维直方图等表示变量分布的图形。例如,要绘制SASUSER.GPA中GPA的分布直方图,只要用:
proc gchart data=sasuser.gpa;
  vbar gpa;
run;


其中绘图用的变量用VBAR语句给出。图形见图 4。如果把VBAR改成HBAR则条形方向变为横向。用GCHART绘制的直方图和在INSIGHT中绘制的直方图有所不同,它在横轴标的是区间的中点值,而在INSIGHT中横轴标的是区间的端点值。
可以绘制分组的直方图,例如按性别分组绘制两个直方图并排放置,可以用如下程序: proc gchart data=sasuser.gpa;
  vbar gpa / group=sex;
run;


结果见图 5。
在GCHART中用PIE语句绘制表示频数的扇形图,例如: proc gchart data=sasuser.gpa;
  pie sex;
run;


结果见图 6。如果想显示百分比值,只要在PIE语句中加入TYPE=PERCENT选项,如“pie sex / type=percent;”。
GCHART过程还可以用BLOCK语句绘制三维直方图。例如,在SASUSER.HOUSES有各种房子的情况,其中BEDROOMS表示卧室个数,STYLE表示房子的式样,都是分类变量,我们可以用如下程序画出反映卧室个数和房子式样的联合分布的三维直方图:
goptions hpos=90 vpos=70;
proc gchart data=sasuser.houses;
  block style / group=bedrooms;
run;
三维曲面图和等高线图
假设对一个二元函数z=f(x,y),我们有了x取等间隔值、y取等间隔值时z的值,这时我们可以用G3D过程绘制曲面图形,用GCONTOUR绘制曲面的等高线图。
例如,我们想绘制一个二维正态分布曲面的图形,假设(X,Y)服从联合正态分布,其均值都是0,方差分别为1和a,相关系数为r。这时,我们可以得到(X, Y)的联合密度函数的公式为:



我们可以在一个网格上计算曲面的值:
data dnorm2;
  a=2;
  a2=sqrt(a);
  r=0.5;
  det=a*(1-r*r);
  do x=-3 to 3 by 0.3;
    do y=-3*a2 to 3*a2 by 0.3*a2;
      z=1/(2*3.1415926*det)*exp(-0.5/det*(a*x*x + y*y - 2*r*a2*x*y));
      output;
    end;
  end;
  keep x y z;
run;
然后,我们就可以用G3D过程来绘制曲面图: proc g3d data=dnorm2;
  plot x*y=z;
run;

见图 8。用GCONTOUR过程可以绘制曲面对应的等高线图,例如: proc gcontour data=dnorm2;
  plot x*y=z;
run;

见图 9。
图形的调整与输出
各绘图过程中都指定了丰富的选项来调整图形,读者可以参考有关资料或查系统的帮助。另外,在图形中也可以用TITLE语句和FOOTNOTE语句给图形加标题和脚注。为了在图形的标题、标签中也能使用汉字,老的SAS版本需要比较多的步骤,但是在Windows下的SAS 8.0以后只要很简单的语句就可以在图形中使用True Type字型的汉字,例如: goptions ftext="宋体";
proc gplot data=sasuser.class;
  title "试验FONTS的汉字功能";
  plot weight * height;
  label weight = "体重" height="身高";
run;
见图 10。


为了把SAS/GRAPH绘制的图形保存为兼容的图形文件,只要在显示某一页图形输出时,选“File | Export”菜单,在出现的输入文件名的窗口选择适当的文件类型,如BMP、WMF 、JPEG、PS,等等。本讲义中的SAS/GRAPH图形就是从SAS中用“File | Export”输出为WMF 文件调入MS Word的结果。
要打印SAS/GRAPH生成的图形,只要选“File | Print”。这样用Windows的打印驱动程序与SAS/GRAPH的图形驱动配合来打印。另外,SAS/GRAPH模块还提供了许多种打印机的独立的驱动程序,可以不依赖于Windows的打印驱动,具体请参考有关资料或帮助。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69783/showart_699522.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP