Posted by hssnow in 统计应用 | 8,552 条评论
SAS9.2统计图形过程步帮助文档导读(1)
SAS自9.2版本后在作图方面有很大提高, SAS/GRAPH 9.2的基本内容可参见这里,如下图:
统计图形过程步(Statistical Graphics Procedures)是SAS 9.2中新增(相对于SAS 9.1及以前版本)的部分,这些过程步都以SG开头,包括:SGplot, SGpanel, SGscatter, SGrender, SGdesign。《Statistical Graphics Procedures Guide》即是其相关介绍。
本系列主要概览性地介绍《SAS/GRAPH 9.2: Statistical Graphics Procedures Guide, Second Edition》这一帮助文档,以期大家能对SAS 9.2统计作图过程步有个较为全面的了解,在以后使用中能快速上手。
可以在官网下载《SAS/GRAPH 9.2: Statistical Graphics Procedures Guide, Second Edition》。
下图是该帮助文档的主目录:
What’s New不介绍了,因为SAS 9.3都已经出来了,还有更新的了。下文主要对其他三个部分进行简要介绍。
第一部分,Introduction
其分为2个小部分:统计图形过程步的“介绍”和“会使用到的语句”。
1.统计图形过程步的“介绍”
第一,文档的“概览”部分首段指出:统计过程步(SG procedures)可以让你快速的完成复杂的统计图形…且要求很少的代码量,它使你更集中精力于统计分析层面而非图形元素的可视化展现上。
由此,我们可以知道SAS 9.2新增统计过程步的目的,其在于让使用者更好的统计作图。重点在于“统计”层面,而不是像SAS 9.1那样做出的“丑陋”图形,还需要统计分析人员花费大量精力在图形美化上(如颜色、符号选取等方面)。在下面的介绍中,我们会确实发现SAS 9.2统计过程步作出的图形有很好的默认的可视化效果。
第二,是5个SG过程步的简要: 第1个SGPLOT最为常用,完成各种统计图形;第2,3个较为常用,SGPANEL绘制面板图形(多图呈现),SGSCATTER绘制加强散点图;第4,5个用的较少,SGRENDER结合Graph Template Language (GTL)中proc template使用,SGDESIGN用于SAS ODS图形设计器(SAS/GRAPH ODS Graphics Designer application)中。
为有直观认识,下面3图分别是SGplot, SGpanel, SGscatter的图形样式:
第三,关于图形“输出传递系统”(Output Delivery System),即常说的ODS
ODS图形系统(ODS Graphics System)包括:
- 统计图形过程步(SAS/GRAPH statistical graphics procedures)
- 图形模板化语言(SAS/GRAPH Graph Template Language (GTL))
- 图形编辑器(SAS/GRAPH ODS Graphics Editor)
- 图形设计器(SAS/GRAPH ODS Graphics Designer)
GTL是很强大的图形语言,可以定制个性化模板;图形编辑器和图形设计器都是另外的软件包。这3个不再过多介绍。
继续关于SG过程步,由于其是ODS图形系统的一部分,所以SG过程步作图的默认展现都是有当前的ODS样式决定的,如想做改变,可以使用“ods graphics”语句的选项控制。
第四,来看“统计图形过程步和传统图形过程步的区别(差异)”。帮助文档中列出14条,具体请翻看查阅,下面仅介绍几条:
传统图形过程步 |
统计图形过程步(SG) |
可使用goptions对坐标轴、符号、图形大小等进行控制 | 使用SG过程步内的语句或选项控制,或使用ods graphics语句的选项控制 |
图形类型可受全局选项控制 | 图形类型仅可被作图语句定义 |
不支持透明度控制 | 支持透明度控制 |
个人看来,上述第1,2俩条改变使得SG过程步的作图控制更为明确,代码上也更为清晰易懂,而不会有SAS 9.1中过程步、全句语句、goptions等哪都可以控制又各有差异的混乱感觉;第3条改变使得SG过程步作图表现力更强,尤其在多图叠加上更为有效。
2.统计图形过程步的“会使用到的语句”
上面的这些语句是5个SG过程步都可以使用的语句。其中BY, FORMAT, LABEL只能用于过程步内部;ODS GRAPHICS, TITLE和FOOTNOTE语句是全局语句,即在过程步内外都可使用。
第一,BY语句,其用来指定分组变量,可以指定多个变量,但其要求数据集中的观测需已按指定变量进行了排序。可以指定DESCENDING或NOTSORTED选项,否则按升序进行。
第二,FORMAT语句,对变量指定格式。具体参见《SAS Language Reference: Dictionary》中的FORMAT Statement部分。
第三,LABEL语句,对变量指定标签。具体参见《SAS Language Reference: Dictionary》中的LABEL Statement部分。
第四,ODS GRAPHICS语句,其基本语法为:
ODS GRAPHICS <ON | OFF> </ option(s)>;
ON和OFF分别控制为“开启”和“关闭”,ON为默认。一些常用的选项如下,更多细节参加本帮主文档的第296页及《SAS Output Delivery System: User’s Guide》的第116页“ODS GRAPHICS Statement”部分。
- BORDER | NOBORDER 指定图形加或不加边框,默认为BORDER加边框
- BORDER= ON | OFF 同上,指定边框,默认为BORDER=ON加边框
- IMAGEFMT= 指定生成图形的格式(如png, bmp, jpg等)
- IMAGENAME= 指定生成图形的名称
- HEIGHT= 指定生成图形的高度
- WIDTH= 指定生成图形的宽度
- RESET | RESET= 指定重置所有选项,或某一选项
第五,TITLE和FOOTNOTE语句,指定标题和脚注,分别最多可以指定10个。可选的控制选项包括:
- COLOR= 指定(标题或脚注)颜色
- FONT= 指定(标题或脚注)字体
- HEIGHT= 指定(标题或脚注)大小
- BOLD 加粗
- ITALIC 斜体
- JUSTIFY= LEFT | CENTER | RIGHT 指定对齐方式:左对齐/居中/右对齐
- LSPACE= numeric-value 指定标题与图形上界面的距离或脚注与图形下界面的距离
其他的还有(标题或脚注)字体框的控制,选项如下,具体参见本帮助文档。
- 1)BCOLOR= color
- 2)BOX= numeric-value
- 3)BSPACE= numeric-value
第二部分,SAS/GRAPH Statistical Graphics Procedures
该部分是本文档的重点,从日常应用角度来看,下面将按SGPLOT, SGPANEL, SGSCATTER顺序介绍,SGRENDER和SGDESIGN将不进行介绍。
1.SGPLOT过程步
1.1“基本概念”部分
1)基本图形(Basic plots):散点图(scatter),时序图(series),步阶图(step),束带图(band),针线图(needle),箭头图(vector)
2)拟合及置信图形(Fit and confidence plots):平滑曲线图(loess), 回归图(regression),处罚B样条曲线图(penalized B-spline curves),椭圆图(ellipses)
3)分布图形(Distribution plots):箱图(box),直方图(histograms),正态及核密度估计图(normal and kernel density estimates)
4)分类图形(Categorization plots):点图(dot),条形图(bar),直线图(line)
在一个SGPLOT中,可以绘制多种图形类型于一个图中,规则如下:
- 1对于上述四大类图形(基本、拟合、分布、分类),同一大类下的各个图形可同时使用。如散点图可以和时序图同时使用,却不能和直方图同时使用。
- 基本图形和拟合图形这俩大类下的各个图形可同时使用。如散点图可以喝回归图同时使用。
- 例外,箱图(box)只能单独使用,不能和其他类型图形同时使用。
第二,坐标轴类型包括4种:
- 离散型,如坐标刻度为“冠军”“亚军”“季军”等字符型,或是表示名次的“1”“2”“3”独立的数值型。
- 线性,如坐标刻度是一段连续的数值2,4,6,8,10,…
- 对数型,如坐标刻度是1,10,100,1000,10000,…
- 时间型,如1999,2000,2001,…
一般情况下,SAS会根据读入的数据而自动决定采用何种类型的坐标轴,另外,也可以在过程步中人为指定。
第三,图例说明,一般情况下,SAS会根据实际图形自动添加图例,另外,可以使用KEYLEGEND语句,NOAUTOLEGEND,LEGENDLABEL=选项进行控制
第四,标记符号和线条形式,分别用MARKERATTRS=和LINEATTRS=选项控制。符号线条图如下:
1.2过程步语法
SGPLOT过程步的语法主要分为三个部分:PROC SGPLOT语句(上图篮框, 1个),控制语句(上图红框,4个),作图语句(上图中未被框起的语句)。代码使用见下图:
下面对三个部分依次依次介绍:
第一, PROC SGPLOT语句,一些常用的选项包括:
- 1) DATA= 指定作图要使用的数据集,确实时为最近使用的数据集
- 2) DESCRIPTION= “text-string” 指定输出图形的描述,默认描述为“The SGPLOT Procedure”
- 3) NOAUTOLEGEND 控制不自动产生图例
- 4) CYCLEATTRS | NOCYCLEATTRS 指定对于不同类型的多个图时是否使用独特的属性,默认为CYCLEATTRS使用独特属性。如一个图内同时使用SERIES和SCATTER语句:指定CYCLEATTRS时,时序图和散点图会有不同的颜色;指定NOCYCLEATTRS时,时序图和散点图会是相同颜色。
第二, 控制语句,包括对坐标轴、参考线、图例、插入文字等进行控制。
在详细介绍前,我们先看下SAS的一幅图形中有哪些可控元素,参见下图:
后面的一些介绍会参考使用上图(Step Plot)进行说明。
Inset语句:控制在图形坐标轴区内部插入文本框。
这个语句是SAS 9.1传统作图过程步中所没有的,使得文本插入十分方便(当然,文本插入的位置并不是随意的,有一定限制)而不必使用ANNOTATE FACILITY。其语法格式为:
INSET “text-string-1” <… “text-string-n”></ option(s)>;
“test-string”为要插入的文本,常用选项有:
- BORDER | NOBORDER 指定文本框是否添加边框。
- POSITION= 指定文本框在图形内部的位置,包括8个位置,底部(BOTTOM),顶部(TOP),左部(LEFT),右部(RIGHT),左下部(BOTTOMLEFT),右下部(BOTTOMRIGHT),左上部(TOPLEFT),右上部(TOPRIGHT)。如不指定,则系统根据图形自动决定位置。
- TEXTATTRS= 指定插入文本的属性,如可以定义颜色color=等。
如在上STEP PLOT样图中,是插入的文字“SGplot in SAS 9.2 :-)”文本,添加边框,位置为顶部,字体颜色为绿色。
KEYLEGEND语句:指定图形图例(legend)。
这个语句是对图例进行控制的主要方式,其语法格式为:
KEYLEGEND <“name–1” … “name-n”> </ option(s)>;
“name”为已标记的图例名,常用选项有:
- BORDER | NOBORDER指定图例是否添加边框。
- ACROSS / DOWN= 指定图列中列或行的个数。当图例区内有多个图例时该选项很有作用。缺省时,系统自动决定列或行的个数。
- LOCATION= OUTSIDE | INSIDE 指定将图例置于图形坐标轴区的内部或是外部,缺省默认为外部。
- POSITION= 指定图例的位置,包括8个位置,底部(BOTTOM),顶部(TOP),左部(LEFT),右部(RIGHT),左下部(BOTTOMLEFT),右下部(BOTTOMRIGHT),左上部(TOPLEFT),右上部(TOPRIGHT)。
- TITLE= 为图例指定标题。
如在上STEP PLOT样图中,指定图例位于图形坐标轴区外部,位置底部,加边框,1列4行,图例标题为“legend label:”。
REFLINE variable | value-1 <… value-n></ option(s)>;
“variable/value”为添加参考线的坐标刻度,常用选项有:
- AXIS= 指定添加参考线的坐标轴,包括X轴,Y轴,X2轴(图形上部平行与X轴的坐标轴),Y2轴(图形右部平行与Y轴的坐标轴)。默认为Y轴。
- LABEL= 指定参考线的标签。
- LABELLOC= INSIDE | OUTSIDE 指定参考线标签的位置为图形坐标轴区内部或外部。默认为内部。
- LINEATTRS= 指定参考线的属性,如可以控制颜色color=等。
- TRANSPARENCY= 指定参考线的透明度,该数值应介于0和1直接,0表示完全不透明,1表示完全透明。
如在上STEP PLOT样图中,指定添加参考线于X轴4000值处,参考线标签为“mark”位置为内部,并指定线条虚线、颜色褐色。
XAXIS, X2AXIS, YAXIS, Y2AXIS语句:对各个坐标轴进行控制。
这些语句经常会用到,常用的是XAXIS和X2AXIS语句,分别对X轴和Y轴进行控制。下面主要讲解XAXIS语句,其他的与其类同。
XAXIS语句语法格式为:
XAXIS option(s);
常用选项有:
- TYPE= DISCRETE | LINEAR | LOG | TIME 指定坐标轴类型,记在第一部分“Plot Axes”中讲到的四种类型。对于离散和线性的2中类型SAS大都可以直接识别,若想控制为对数型的则此处选项一定要指定为log型。
- FITPOLICY= 指定当坐标轴的空间不够显示各个刻度值标签时的调整策略。这种情况常出现与离散或时间坐标轴类型中,如日期刻度“2011年1月” “2011年2月” “2011年3月”等等太长以至于无法完全显示与坐标轴刻度上。调整的策略包括:旋转(ROTATE),将所有刻度值标签旋转45度;删减(THIN),将某些刻度值标签删减去,交错排列(STAGGER),将所有刻度值标签一上一下交错排列;旋转并删减(ROTATETHIN);交错并删减(STAGGERTHIN);交错并旋转(STAGGERROTATE)。注,该选项中,删减仅对纵坐标轴有效,其他的仅对水平坐标轴有效。
- GRID 指定添加各个刻度的网格线。
- LABEL= 为坐标轴指定标签
- LOGBASE= 2 | 10 | e 当指定TYPE=LOG后,该选项指定对数基底。默认为10。
- LOGSTYLE= LINEAR | LOGEXPAND | LOGEXPONENT当指定TYPE=LOG后,该选项指定主刻度的展现形式,具体请参加帮助文档211页。默认LOGEXPAND。
- OFFSETMIN / OFFSETMAX= 分别指定近端和远端的刻度偏移值。该只需介于0和1之间,表示偏移百分比,如0.1表示偏移之歌坐标轴长度的10%。
- VALUES= 指定坐标轴的刻度数值,如可以指定坐标刻度为“1,2,3,4,5,6,7,8”。
- MIN / MAX= 分别指定坐标轴的最小和最大刻度值。
- MINOR 指定为坐标轴添加次级刻度标记。
注,VALUE=, MIN=, MAX=, MINOR几个选项在使用时有些限制:当坐标轴类型为离散型和对数型时,或是当指定的刻度数值个数大于1000个时,VALUE=选项无效;当成功使用了VALUE=选项时,MIN=, MAX=, MINOR选项无效。
如在上STEP PLOT样图中:对于X轴,标签为“D G S 1 T(1/dil)”,type=log,logbase=10,logstyle=logexpand,并用minor选项添加次级刻度标记;对于Y轴,标签为“P of S(%)”,用value=选项设定刻度为0到100间隔为10,用grid选项添加网格线,并用offsetmin=和offsetmax=分别设置近端和远端偏移为10%。
第三,作图语句,及scatter,series,box等作图语句共19个,其中HBAR和VBAR,HBOX和VBOX,HLINE和VLINE类同,区别在与是水平图形还是竖直图形(H代表horizontal水平的,V代表vertical竖直的)。限于文章篇幅,不可能将每个作图语句一一细致讲解,大家可以参考“SGPLOT部分‘基本概念’”部分按图索骥,根据自己所需查阅帮助文档学习。
下面对各个作图语句中一些相同用法且较为常用的选项进行写简单说明。
- GROUP= 指定变量对数据进行分组作图,一般默认情况下,不同的组图形表现属性上也不同(如颜色等)。
- DATALABEL 指定在图形中对数据点进行标签标注。如在散点图中登,想要看到每个散点代表的值,可以使用此选项。
- NAME= 指定某个作图图形的名称,用该名称可以在其他语句中连接到该图。如前面讲到的KEYLEGEND语句中,“name”为已标记的图例名,即是用此处name=标记的。
- TRANSPARENCY= 指定透明度,如前文介绍,该值需介于0和1之间。
另外,有个十分常用的选项:LINEATTRS=和MARKERATTRS=,即对线型和符号的控制。
- LINEATTRS=() 可以设置颜色,线型,粗细等属性:
- color=black, blue, green(黑,蓝,绿)…
- pattern=1,2(实线,虚线)…
- thickness=1,2…
- MARKERATTRS=() 可以设置不同的符号的属性:
具体符号类型和线条类型参考前面给出的符号线条图。
1.3示例
帮助文档中给出了9个例子,但都是基本语句及选项的使用,还要根据需求自己深入学习。
关于前面的step plot可以用下面的代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | libname sg 'D:\SGplot92\'; ods graphics / reset noborder imagename='sgplot_example' width=1024px height=480px; ods listing gpath='D:\SGplot92'; proc sgplot data=sg.step; title 'This is a' color=blue ' Step Plot ' color=black 'example'; footnote justify=right "This is a footnote"; step x=PSTRES y=GRP1 / markers; step x=PSTRES y=GRP2 / markers; step x=PSTRES y=GRP3 / markers; step x=PSTRES y=GRP4 / markers; xaxis label='D G S 1 T(1/dil)' type=log logbase=10 logstyle=logexpand minor; yaxis grid label='P of S(%)' values=(0 to 100 by 10 ) offsetmin=0.1 offsetmax=0.1; refline 4000/ axis=x label='mark' labelloc=inside labelpos=min lineattrs=(color=brown pattern=2); keylegend / border across=1 noborder title='legend label:'; inset 'SGplot in SAS 9.2 :-)' / border textattrs=graphdata3 position=top; run; |
注意,其中的offsetmax和offsetmin在SAS9.22以后才有效。
未完待续,剩余内容:
- 第二部分中的SGPANEL和SGSCATTER
- 第三部分
很认真啊,你把blog和weibo绑定在一起吧。这样就可以在微博自动同步了~
[回复]
hssnow 回复:
10月 22nd, 2011 at 21:17
我当时在weibo上做了,但这个域名好像连接不上
[回复]
请问x轴上面的MINOR怎么使用?
[回复]
能不能帮忙示例一下,minor在linear的Xaxis上面怎么使用?有劳您~
[回复]
hssnow 回复:
5月 1st, 2012 at 21:42
呵呵,是指在type=linear还是logtype=linear的情况啊?不过我都试了试,貌似单纯用minor选项,没有特殊效果啊,以前还没仔细注意过这个问题。
[回复]
很有用!感谢!!
[回复]
請問想換掉x軸的每個刻度名稱該怎麼做?
謝謝
[回复]