一、可视化数据
1. ODS图形概述
在统计过程中使用图形: ods图形选项默认是开启的,若你发现是关闭的,则在将要运行的程序之前用以下语句开启:ods graphics on;
则支持ods图形的统计过程将绘制相应的图形。
一般情况下没有必要关闭ods图形选项,如果要关闭,用以下语句:ods graphics off;
注意,ods图形并不是目标(如HTML或PDF),打开或关闭ods输出目标,也就打开或关闭ods图形。
使用ods图形绘制单独图形: ods图形还包括一系列旨在创建单独图形(图形没有嵌入在统计过程的输出结果中)的程序,sgplot和sgpanel是其中的两个过程。并不是总是要用ods graphics on;
语句,因为这些过程产生图形,但有些情况下要用。
sgplot过程绘制单框图,而sgpanel过程可绘制基于分类变量的多框图。图形可分为三大类:
ods输出目标
保存图形: 图形默认存到work临时逻辑库。
图形样式: ods样式模板控制输出的整体外观,用style=指定图样式。
对于listing输出目标,style=仅适用于图形输出,表格输出仍为文本。
查看ods图形
2. ods图形绘制
2.1 绘制条形图
条形图显示分类变量的分布,每个条形长度与该类别的观测频数成正比。用vbar语句可以创建条形图:
proc sgplot;
vbar variable-name / option;
创建水平条形图用hbar替换vbar即可。条形图选项包括:
例:A,Pear,A,80%Cacao,A,EarlGrey,C,80%Cacao,A,Ginger,C,Pear
C,80%Cacao,C,Pear,C,Pear,A,EarlGrey,A,80%Cacao,C,80%Cacao
A,Ginger,A,Pear,C,EarlGrey,C,80%Cacao,A,80%Cacao,A,EarlGrey
A,80%Cacao,C,Pear,C,Pear,A,80%Cacao,C,Pear,C,80%Cacao
变量为:年龄组(A表示成人,C表示儿童),喜欢的味道(四种类型)。
data survey;
infile 'E:\SAS\sas\sas数据\第8章\8.2巧克力.csv' dlm=',';
input agegroup $ favorite $ @@;
run;
proc format;
value $AGEgroup 'A'='adult'
'C'='Children';
run;
proc sgplot;
vbar favorite / group=agegroup barwidth=0.5; #这里是默认的条形方式,cluster的方式是第二个图
format agegroup $AGEgroup.;
run;
2.2 绘制直方图和密度曲线
直方图显示连续数据的分布。数据分成的离散间隔成为直条(bin),条形图的条形间通常有间隙,直方图没有。
直方图: 用histogram语句绘制,基本形式如下:
proc sgplot;
histogram variable-name / options;
可能的选项包括:
密度曲线: density语句基本形式如下:
proc sgplot;
density variable-name / options;
常见的选项有:
histogram语句和densuty语句可以一起使用,但不能和其他类型的图形一起用。
例:Bella,4,Anthony,9,Joe,10,Chris,6,Beth,5,Danel,2
David,7,Emily,7,Josh,7,Will,9,Olivia,7,Matt,8
Maddy,8,Sam,13,Jessica,6,Jose,6,Mia,12,Elliott,8
Tyler,15,Lauren,10,Cate,14,Ava,11,Mary,9,Eric,10
Megan,13,Michael,9,John,18,Alex,5,Cody,11,Amy,4
data centest;
infile 'E:\SAS\sas\sas数据\第8章\8.3四年级.csv' dlm=',';
input name $ books @@;
run;
proc sgplot;
histogram books / binwidth=2 showbins scale=count;
density books; #这里生成两个密度曲线,一个type是默认的normal,即正太曲线,
一个是核密度曲线
density books / type=kernel;
run;
如果代码是
proc sgplot;
histogram books / binwidth=2 showbins scale=count;
proc sgplot;
density books;
run;
则两个曲线会分别在两张图上。
2.3 绘制盒形图(箱线图)
显示连续数据的分布。盒形图用vbox语句绘制,其基本形式如下:
proc sgplot;
vbox variable-name / options;
绘制水平盒形图用hbox替换vbox,盒形图选项包括:
group的用法我还不知道。
vbox和hbox语句不能跟创建其他图形的语句一起使用。
例:Adult,44,Adult,33,Youth,33,Masters,38,Adult, ,
Masters,32,Youth,32,Youth,38,Youth,33,Adult, ,
Masters,37,Masters,46,Youth,34,Adult,42,Youth, ,
Masters,33,Adult,44,Youth,35,Adult,49,Adult, ,
Adult,39,Adult,42,Adult,32,Youth,42,Youth, ,
Masters,33,Adult,33,Masters,32,Youth,37,Masters, ,
变量为:年龄组,自行车圈数。画盒形图。
data bicycle;
infile 'E:\SAS\sas\sas数据\第8章\8.4自行车比赛.csv' dlm=',';
input agegroup $ numberslap @@;
run;
proc sgplot;
vbox numberslap / category=agegroup ;
run;
2.4 绘制散点图
散点图是展示两个连续变量之间关系的有效方式。用scatter绘制,基本形式如下:
proc sgplot;
scatter x=horizontal-variable y=vertical-variable / options;
选项包括:
例:Robin,S,28,41,Bald Eagle,R,102,244,Barn Owl,R,50,110
Osprey,R,66,180,Cardinal,S,23,31,Goldfinch,S,11,19
Golden Eagle,R,100,234,Crow,S,53,100,Magpie,S,60,60
Elf Owl,R,15,27,Condor,R,140,300,
变量为:名字,类型,长度,翼展。画翼展和长度的散点图,将类型格式化,R是Raptors S是Songbirds。
data bird;
infile 'E:\SAS\sas\sas数据\第8章\8.5鸟.csv' dlm=',';
input name :$12. type $ length winspan @@;
run;
proc format;
value $typ 'R'='Raptors' 'S'='Songbirds';
proc sgplot;
scatter x=winspan y=length / group=type;
format type $typ.;
run;
2.5 绘制序列图
序列图与散点图类似,但序列图会对数据点标记,然后用直线连起来。当数据需要按照特定顺序显示时,适合用序列图,如时间序列。序列图用series语句绘制,一般形式为:
proc sgplot;
series x=horizontal-variable y=vertical-variable / options;
选项包括:
sas会按照数据点在数据集中的顺序连接每个数据点,所以要确保数据按照水平轴变量排序。
例:0,0.22,1,0.15,2,0.17,3,0.18,4,0.19,5,0.23
6,0.5,7,0.63,8,0.61,9,0.6,10,0.48,11,0.45
12,0.44,13,0.44,14,0.39,15,0.35,16,0.42,17,0.47
18,0.7,19,0.66,20,0.7,21,0.69,22,0.6,23,0.4
变量为:时间(24小时制),千瓦时数。画序列图,并对每个数据点做标记。
data electric;
infile 'E:\SAS\sas\sas数据\第8章\8.6用电量.csv' dlm=',';
input time kwh @@;
run;
proc sgplot;
series x=time y=kwh / markers;
run;
2.6 绘制拟合曲线
散点图绘制了两个变量的关系,