SAS(Statistical Analysis System)作为一款功能强大的统计分析软件,其作图命令(主要通过GRAPH模块和ODS图形系统实现)能够满足从基础统计图表到高级可视化分析的需求,掌握SAS作图命令的核心语法与参数配置,是高效输出专业图形的关键,以下从基础命令、高级定制及常用图表类型三个维度展开说明。

SAS作图基础命令与流程
SAS作图主要通过PROC SG系列过程(如SGPLOT、SGSCATTER、SGRENDER等)和传统PROC GPLOT实现,其中SG系列过程基于ODS(Output Delivery System)输出,语法更简洁且支持现代图形样式,基础作图流程通常包括:
- 启用ODS输出:通过
ODS GRAPHICS ON语句设置图形输出环境(如尺寸、分辨率); - 调用过程步:选择对应的过程步并指定数据集;
- 绘图语句:如
XAXIS、YAXIS定义坐标轴,SERIES绘制折线,SCATTER绘制散点等; - 输出图形:通过
ODS GRAPHICS OFF关闭图形输出,并指定输出格式(如PNG、PDF)。
使用PROC SGPLOT绘制简单散点图的基本代码如下:
ods graphics on / width=640px height=480px imagename="scatter_plot";
proc sgplot data=sashelp.class;
scatter x=height y=weight / markerattrs=(symbol=circle size=10px color=blue);
xaxis label="身高(英寸)" grid;
yaxis label="体重(磅)" grid;
run;
ods graphics off;常用图表类型及对应命令
基础统计图表
- 散点图与折线图:
SCATTER语句搭配SERIES语句可展示变量间趋势,在PROC SGPLOT中同时绘制散点和拟合直线:proc sgplot data=sashelp.class; scatter x=height y=weight; reg x=height y=weight / lineattrs=(color=red thickness=2); run; - 柱状图与条形图:
VBAR(垂直柱状图)或HBAR(水平条形图)语句用于分类数据统计,按性别统计平均身高:proc sgplot data=sashelp.class; vbar sex / response=height stat=mean datalabel; xaxis label="性别"; yaxis label="平均身高(英寸)"; run; - 直方图与密度图:
HISTOGRAM语句绘制直方图,DENSITY语句叠加密度曲线,适用于数据分布分析:proc sgplot data=sashelp.class; histogram weight / scale=count binwidth=10; density weight / type=kernel lineattrs=(color=green); run;
高级可视化图表
- 箱线图:
BOXCHART或VBHBOX语句展示数据分布与异常值,支持分组(如按性别分组):proc sgpanel data=sashelp.class; panelby sex / layout=columns 2; vbox height / category=sex; run; - 散点图矩阵:
PROC SGSCATTER的MATRIX语句可快速展示多变量两两关系:proc sgscatter data=sashelp.class; matrix height weight age / diagonal=(histogram normal); run; - 时间序列图:
SERIES语句结合XAXIS的type=time参数处理时间数据,data time_data; input date:date9. value; format date date9.; cards; 01JAN2023 10 02JAN2023 12 03JAN2023 15 ; run; proc sgplot data=time_data; series x=date y=value / lineattrs=(color=blue); xaxis type=time label="日期" interval=day; run;
图形定制与美化参数
SAS作图支持丰富的定制选项,通过语句参数调整图形细节:
- 颜色与样式:
color指定颜色(如color=cyan),markerattrs设置散点样式(如symbol=star size=8px); - 坐标轴与标题:
XAXIS/YAXIS的label、grid、values等参数调整坐标轴属性,TITLE/FOOTNOTE添加全局标题; - 图例与注释:
LEGEND语句控制图例位置(如position=topright),INSET添加文本注释框。
通过以下代码增强柱状图的可读性:

proc sgplot data=sashelp.class;
vbar sex / response=weight stat=sum datalabel datalabelattrs=(size=12px)
fillattrs=(color=lightblue) transparency=0.3;
xaxis label="性别" valueattrs=(size=11px);
yaxis label="体重总和(磅)" valueattrs=(size=11px) grid;"不同性别体重总和对比" textattrs=(size=14px weight=bold);
keylegend / position=top title="性别分布";
run;图形输出与格式控制
通过ODS GRAPHICS的全局语句可统一控制图形输出格式,
ODS GRAPHICS ON / width=800px height=600px imagefmt=png:设置输出尺寸为800×600像素,格式为PNG;ODS LISTING CLOSE; ODS PDF FILE="report.pdf";:将图形输出至PDF文件,避免在输出窗口显示。
相关问答FAQs
Q1:如何在SAS图形中添加参考线(如均值线)?
A:在PROC SGPLOT中,使用REFLINE语句可添加参考线,为散点图添加Y轴的均值参考线:
proc sgplot data=sashelp.class;
scatter x=height y=weight;
refline 100 / axis=y label="参考值(100)" lineattrs=(color=red pattern=dash);
run;Q2:如何将多个子图合并为一张复合图?
A:可通过PROC SGRENDER结合GRAPH模板语言(GTL)实现,或使用PROC SGSCATTER的MATRIX语句绘制散点图矩阵,更简单的方式是PROC SGPANEL的PANELBY语句,例如按性别分面绘制多组箱线图:
proc sgpanel data=sashelp.class;
panelby sex / columns=2 novarname;
vbox height / category=age;
colaxis label="年龄";
rowaxis label="身高";
run;
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/413816.html<
