在利用SAS进行分析时,proc步中的plots=options可以绘制不同图形,但是有时在proc步中绘制出来的图形都较为粗糙,还有一些细节需要进行修饰和调整,在这里可以使用的解决思路是:将proc步中生成的用于绘制图形的数据进行导出,再利用proc sgplot语句进行图形重绘和增添细节。
拿最近分析的数据举例(数据已进行过修改处理),利用PROC步进行分析,用plots=options得到下图,但是因为想要图片更细致更清楚,所以将绘制图示的数据进行导出,用proc sgplot进行绘制。proc步生成的图如下:

假设需要这张图:横坐标调整为时间格式,并在横坐标上标注出2:00,5:00,8:00,20:00,23:00时间点(调整时间格式较为简单,使用format语句即可)。具体步骤如下:
1)首先导出绘制这个图形的数据,可以在proc 步前运行
ods trace on;
找到相应的数据,用output导出成数据集。
2)观察这个图的结构,由一条曲线,两条宽度不同的band和散点图构成,是一个复合图,根据导出的数据集的数据用proc sgplot进行绘制,具体代码和含义如下:
proc sgplot data=fitplot;
/*分别绘制两条band,分别加标签“95% Confidence Limits”和
“95% Prediction Limits”,fillattrs=设置清晰度,让这一个图的颜色与另一个区分开*/
band x=xgrid lower=lcmgrid upper=ucmgrid /
legendlabel="95% Confidence Limits" name="band1";
band x=xgrid lower=lcigrid upper=ucigrid /
fillattrs=(transparency=0.5)
legendlabel="95% Prediction Limits" name="band2";
/*原始数据是5个时间段的数据,利用原始数据绘制散点图*/
scatter x=hour y=Observed;
/*中间的曲线绘制*/
series x=xgrid y=ygrid;
/*设置标签的顺序以及位置,这里设置的是在
图外面(outside)居中(bottom,底部右侧是bottomright)*/
keylegend "band1" "band2" /location=outside
position=bottom;
/*为X轴和Y轴加标签*/
label xgrid='Time of day(hr)';
label ygrid='pg/ml';
label Hour='Time of day(hr)';
/*选择要标注的时间点*/
xaxis grid values=(2,5,8,20,23);
/*proc format里设置好的格式*/
format xgrid time_fmt. Hour time_fmt.;
run;
再次运行代码,得到的结果就是下图啦

还有更多的细节都可以在proc sgplot上进行修改。
将自己在学习SAS过程中遇到的问题和最后使用的解决方法记录下来,如果有错漏或者更好的解决方法欢迎大家一起讨论哦~
5061

被折叠的 条评论
为什么被折叠?



