1.创建拟合曲线
可以利用PROC SGPLOT来绘制拟合曲线,常用的拟合曲线有线性回归线、非参拟合线(loess smooth)、B-样条曲线(penalized B-spline曲线).常用的基本命令是:
proc sgplot ;
statement x=horizontal-variable y=vertical-variable/options;
statement 有如下三个:reg \loess\pbspline,对应上述的三种拟合曲线
常用的选项有:
alpha=n 设置置信限,取值0-1.默认0.05(即95%置信区间)
CLI 计算个体预测值的置信区间,只适用于REG和PBSPLINE
CLM 计算均值预测值的置信区间
curvelabel="text-string" 为曲线加标签,如果不设置“text-string”,SAS默认使用Y变量的标签
group=variable-name 为每一个组别计算单独的拟合曲线
NOLEGCLI 不为个体预测值置信区间产生图例(CLI BAND)
NOLEGCLM 不为均值预测值置信区间产生图例(CLM BAND)
NOLEGFIT 不为拟合曲线产生图例
NOMARKERS 不为数据点添加标识
CLMTRANSPARENCY 为置信区间条带设置透明度,取值为0-1,0表示完全不透名,1-表示完全透明
2.自定义坐标轴
除了使用proc sgplot绘制图形外,还可以在proc sgplot中定义坐标轴或者参考线;定义坐标轴的命令如下:
proc sgplot;
xaxis options;(xaxis适用横轴,yaxis适用纵轴)
常用options
grid 在每个刻度上绘制一条线
label="text-string" 为坐标轴加上标签,该语句定义的标签优先级最高,可以覆盖其他形式定义的标签,如果变量没有标签将会使用变量名当做坐标轴标签
type= 定义坐标轴形式,discrete默认是字符变量坐标轴刻度形式,linear默认是数值变量坐标轴刻度形式,time默认是日期或时间格式坐标轴刻度形式,log表示坐标轴刻度为对数形式
value =(value list) 用于标记坐标轴刻度,必须用括号括起来,形式如下:(0 5 10 15 20) 或者(0 to 20 by 5)
3.创建参考线
增加纵向或横向参考线的命令如下:
proc sgplot ;
refline value/options;
value 是将要划参考线的点值,可以0 5 10 15 20 或者0 to 20 by 5的形式,
常用选项options是:
axis=X/Y 表示有参考线的坐标轴,默认是AXIS=Y表示Y坐标轴有横向参考线
labe=(label-list) 为参考线加标签,用空格隔开
transparency=n 设置参考线的透明图,0-1,0-表示完全不透明,1-表示完全透明
还可以使用LINEPARM语句来绘制带斜率的参考线
举例如下:
proc sgplot data=cities;
series x=month y=intfalls;
series x=month y=raleigh;
series x=month y=yuma;(每增加一个语句则是新增一个图层)
refline 32 75 /label=("32 degree" "75 degree") transparency=0.5;
xaxis type=discrete;(刻度轴是相互独立)
yaxis label="Average High Temperature(F)";
title "Temperature for International Falls,Raleigh,and Yuma";
run;
结果如下;
4.设置图例
proc sgplot和proc sgpanel会自动创建图例,以下是手动修改已创建图例的命令:
proc sgplot ;
keylegend /options;
常见选项options如下:
across=n 设置图例的列数;
down=n 设置图例的行数;
location= value 设置图例的位置,取值inside表示坐标轴内,取值outside表示坐标轴外,默认取值outside
noborder 表示图例不加边框
position=value 设置图例具体位置,取值TOP,TOPLEFT,TOPRIGHT,BOTTOM(默认),BOTTOMLEFT,BOTTOMRIGHT,LEFT,RIGHT
在proc sgplot 加上noautolegend则表示不自动生成图例,如 proc sgplot noautolegend;当同时存在keylegend和noautolegend,SAS会自动忽略后者;
可以在keylegend 后面加上“name-1”,"name-2" 来对多个图形的图例进行修改。
5.插入字符
还可以在坐标轴内插入文字, 基本形式如下:
inset "text-string-1" "text-string-2" "text-string-3" ......./options;
如果插入多个字符,则会把新的文字放于旧的文字下面
常见options选项如下:
BORDER 为文字加上边框
POSTION=value 设置插入文章的位置,取值有TOP,TOPRIGHT,TOPBOTTOM,BOTTOM(默认),BOTTOMLEFT,BOTTOMRIGHT,LEFT和RIGHT
举例如下:
proc sgplot data=olympic1500;
scatter x=Year y=OlympicTime;
series x=Year y=WorldRecord;
keylegend /location=inside postion=topright;
inset "Olympics not held in " "1940 and 1944" /position=bottomleft;
yaxis label="Time in Seconds";
title "Times for men's 1500 Meter Run";
run;
结果如下:
6.修改图形样式
基本格式如下:proc sgplot;
scatter x=score y=hour/makerattrs=(symbol=star);
斜杠后内的图形修饰选项对该图形进行修改,常用的选项如下:
fillattrs=(attribute=value) 设置图形填充区域颜色,使用形式:fillattrs=(color=);
labelattrs=(attribute=value) 设置坐标轴标签形式,attribute包括color=,size=,style=,weight=;
lineattrs=(attribute=value) 设置线条形式,attribute包括color=,patter=,thickness=,
markerattrs=(attribute=value) 设置数据点标记形式,attribute包括color=,size=,symbol=,
valueattrs=(attribute=value) 设置坐标值刻度值形式,attribute包括color,size=,style=weight=.
attribute的常用取值如下:
color= RGB三元色(#FF00000)形式或red等
pattern= 线条形式:solid,dash,shortdash,longdash,dot,dashdashdot,dashdotdot
size= 大小,单位有:cm,in,mm,pct,pt,px(默认px)
style= 字体形式,normal或者italic,(默认normal)
symbol= 数据点标记有circle,circlefilled,diamond,diamondfilled,plus,square,squarefilled,star,starfilled,triangle,trianglefilled
thickness= 线条宽度,单位有cm,in,mm,pct,pt,px(默认px)
weight= 字体加粗bold或者normal
举例如下:
proc sgplot data=Olympic1500;
scatter x=Year y=OlympicTime/markerattrs=(symbol=circlefilled size=2mm);
series x=Year y=WorldRecord/lineattrs=(thickness=2mm) transparency=0.75;
xaxis labelattrs=(weight=bold)
yaxis labelattrs=(weight=bold) label="Time in Seconds";
title bold "Times for men's 1500 meter run";
run;
结果如下:
7.同时创建多个图形
proc sgpanel与proc sgplot类似,每增加一个语句创建一个新的图层,可以创建几乎proc sgplot 创建的所有图形样式,但是proc sgplot 一次只能创建一张图形,proc sgpanel一次可以基于设定的分类变量取值创建多张图形。
基本格式如下:
proc sgpanel;
panel by variable-list /options;(设置图形的分类变量)
plot statement;
常用的选项options有:
columns=n 设置多个图形的列数
missing 当分类变量存在缺失值的时候缺失值作为单独的组别显示,不删除
novarname 在每张图标题上删除变量名
rows=n 设置每张图形的行数
spacing=n 设置单张图形行和列的像素值(px),默认是0;
uniscale=value 设置哪个坐标轴在各个图片间保持一致,取值column,row,和all
默认是all
相比于PROC SGPLOT 使用xaxis和yaxis来控制坐标轴,PROC SGPANEL使用COLAXIS和ROWAXIS来控制坐标轴。
举例如下:
proc format;
value $birdtype
"S"="songbirds"
"R"="Raptors";
run;
proc sgpanel data=wings;
panel type /novarname spacing=5;
scatter x=wingspan y=length;
format type $birdtype;
title "Comparison of Wingspan vs.Length";
run;
结果如下:
值得注意的是如果同时创建多个不同坐标轴的图形,可以使用proc sgscatter步来实现。
8.设置图形属性
基本格式如下:ods graphics/options;
常见的options选项如下:
HEIGHT=N 设置图形高度,单位有cm,in,pct,pt,px,mm
IMAGENAME="filename" 设置图形名称,每跑一次SAS会在名称后加数值,以避免覆盖上一个图形,如果想覆盖上一个图形,可以加reset
OUTPUTFMT=file-type 设置图形格式,取值有BMP,GIF,JPEG,PDF,PNG,PS,SVG,TIFF等
RESET 重置为默认格式
WIDTH=N 设置图形宽度,单位有cm,in,pct,px,mm
默认的图形是640px宽,480px高,如果只单独设置宽度或高度,SAS会自动调整另一个维度以维持图形4:3的比例。
9.保存图形
当使用ODS保存图形的时候,如果输出的格式是HTML和listing则图形会单独保存至文件中,如果输出格式是PDF或RTF时,图形会和表格一起输出至同一个文件内
基本格式如下:ODS destination-name options;
常见的选项有:
file="path/file-name" 设置输出至PDF或者RTF文件名,图形会和表格一起输出
graph="path" 设置输出至LISTING和HTML的地址,图形将会单独保存至该文件夹
dpi=n 设置输出至PDF的清晰度,默认是200
image_dpi 设置输出至html,listng,RTF的清晰度,默认100
style=style-name 设置输出的模式样版
值得注意的是如果只需要单独保存图形,那么listing是一个很好的格式,因为拥有很丰富图形设置,基本命令如下:
ods listing path="c:\mylib" image_dpi=300 style=statistical;