SAS(Statistical Analysis System)是一款功能强大的统计分析软件,其在数据可视化方面提供了丰富的绘图命令,能够帮助用户将复杂的数据转化为直观、易懂的图形,SAS的绘图功能主要通过SAS/GRAPH模块实现,支持多种图形类型,如散点图、折线图、柱状图、饼图、热力图等,适用于不同场景的数据展示需求,以下将详细介绍SAS中常用的绘图命令及其应用方法。

在SAS中,绘图通常通过PROC步实现,结合不同的过程名和语句参数可以生成多样化的图形,PROC SGPLOT是SAS中最常用的绘图过程之一,适用于生成统计图形,支持多种绘图类型,如散点图(SCATTER)、折线图(SERIES)、柱状图(VBAR)等,使用PROC SGPLOT时,需要通过XAXIS和YAXIS语句定义坐标轴,通过选项语句调整图形的样式和细节,绘制一个简单的散点图,可以使用以下代码:
proc sgplot data=sashelp.class; scatter x=height y=weight; xaxis label="身高(英寸)"; yaxis label="体重(磅)"; run;
这段代码中,data=sashelp.class
指定了数据集,scatter
语句定义了散点图的变量,xaxis
和yaxis
语句分别设置了坐标轴的标签,通过调整scatter
语句的选项,如markerchar
可以在散点上添加字符标签,group
变量可以实现分组散点图。
对于更复杂的图形需求,PROC SGSCATTER(散点图矩阵)和PROC SGRENDER(自定义图形模板)也是常用的工具,PROC SGSCATTER可以生成多个变量之间的散点图矩阵,便于观察变量间的相关性。
proc sgscatter data=sashelp.class; plot height*weight=sex / grid; run;
这里,plot
语句指定了绘图变量,后面的sex
表示按性别分组绘制散点,grid
选项添加了网格线。

柱状图和条形图是展示分类数据分布的常用图形,SAS中通过PROC SGPLOT的VBAR
(垂直柱状图)和HBAR
(水平条形图)语句实现,绘制不同性别的平均身高柱状图:
proc sgplot data=sashelp.class; vbar sex / response=height stat=mean; xaxis label="性别"; yaxis label="平均身高(英寸)"; run;
response=height
指定响应变量,stat=mean
表示计算均值,通过group
选项可以实现分组柱状图,category
选项可以指定分类变量。
折线图常用于展示数据随时间或其他连续变量的变化趋势,PROC SGPLOT中的SERIES
语句可以轻松实现,绘制某地区月度销售额折线图:
proc sgplot data=sales_data; series x=month y=sales; xaxis label="月份"; yaxis label="销售额(万元)"; run;
若需添加多条折线,可通过group
变量实现,如series x=month y=sales / group=product
。

对于地理空间数据,SAS提供了PROC GMAP和PROC GPROJECT等过程,可以绘制地图并填充数据,绘制各省份的人口密度地图:
proc gmap map=maps.china data=population_data; id province; choro density / levels=5; run;
这里,map=maps.china
指定了地图数据集,id
语句关联地图与数据,choro
语句表示填充地图颜色,levels=5
设置颜色分级数量。
SAS还支持图形的精细定制,如通过options
语句设置图形输出格式(如PNG、PDF),通过style
语句调整颜色、字体等样式。
ods graphics on / width=6in height=4in imagename="custom_plot"; proc sgplot data=sashelp.class; scatter x=height y=weight / markerattrs=(symbol=circlefilled size=8); styleattrs datasymbols=(circlefilled squarefilled); run;
ods graphics on
启用高质量图形输出,width
和height
设置图形尺寸,markerattrs
调整散点样式。
PROC TEMPLATE和ODS(Output Delivery System)结合使用可以实现图形的批量输出和自定义布局,将多个图形输出到一个PDF文件中:
ods pdf file="output_graphs.pdf"; proc sgplot data=sashelp.class; scatter x=height y=weight; run; proc sgplot data=sashelp.class; vbar sex; run; ods pdf close;
在实际应用中,选择合适的绘图命令需要根据数据类型和分析目的决定,探索性分析适合用散点图和箱线图,展示分类比例适合用饼图(PROC GCHART),而时间序列数据则更适合折线图或面积图(PROC SGAREA),SAS的图形功能不仅限于基础绘图,还支持交互式图形(通过ODS HTML5)和动态图形(PROC GREDUCE),满足现代数据分析的多样化需求。
相关问答FAQs
-
如何调整SAS图形的颜色和样式?
SAS中可通过styleattrs
语句和options
语句调整图形样式,在PROC SGPLOT中使用styleattrs
设置颜色主题和符号样式:proc sgplot data=sashelp.class; styleattrs datasymbols=(circlefilled squarefilled) datacolors=(blue red); scatter x=height y=weight / group=sex; run;
可通过
ODS PATH
指定自定义模板,或使用PROC TEMPLATE
创建个性化样式。 -
SAS如何将多个图形合并到一个输出窗口中?
利用ODS(Output Delivery System)可以将多个图形输出到同一文件或窗口中,将两个图形输出到一个HTML文件:ods html file="combined_graphs.html"; proc sgplot data=sashelp.class; scatter x=height y=weight; run; proc sgplot data=sashelp.class; vbar sex; run; ods html close;
若需在同一页面中分栏显示,可使用
PROC GREPLAY
或ODS LAYOUT
实现复杂布局。