sas学习系列17.绘图ⅲ—散点图,时间序列图,拟合曲线图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17. 绘图Ⅲ—散点图,时间序列图,拟合回归图
三、散点图
以两个定量变量的数值在二维坐标系中描点,生成的图形就是散点图。散点图能直观地显示出因变量随自变量变化而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。
基本语法:
PROC SGPLOT;
SCATTER X=自变量Y=因变量/ options;
可选项:
(1)DATALABEL = variable-name
指定该变量的值作为各个数据点的标签,若不指定变量
名,则使用Y变量的值;
(2)GROUP = variablename
指定分组变量,按其值对数据分组分别处理;
(3)NOMISSINGGROUP
指定不包含分组变量缺省值的观测;
(4)TRANSPARENCY = n——指定透明度。
例1关于鸟类的数据(C:\MyRawData\),变量包括名称、种类(S-鸣禽,R-猛禽)、身长(cm)、翼展(cm),注意每行有多组数据:
读入数据,绘制散点图,要求按类型分组。
代码:
data wings;
infile'c:\MyRawData\';
input Name $12. Type $ Length Wingspan @@;
run;
* Plot Wingspan by Length;
proc format;
value $birdtype
'S' = 'Songbirds'
'R' = 'Raptors';
run;
proc sgplot data = wings;
scatter X = Wingspan Y = Length / GROUP = Type;
format Type $birdtype.;
title'Comparison of Wingspan vs. Length';
run;
运行结果:
四、时间序列图
时间序列图,是以时间为X轴,变量为Y轴的一种图(数据点之间依次用线段连接),观察变量是否随时间变化而呈现某种趋势。
基本语法:
PROC SGPLOT;
SERIES X=时间变量Y=因变量/ options;
注:X变量必须事先排好序。
可选项:
(1)CURVELABEL = 'textstring'
给曲线添加标签,若不指定标签文本,则使用Y变量;
(2)DATALABEL = variable-name
指定该变量的值作为各个数据点的标签,若不指定变量
名,则使用Y变量的值;
(3)MARKERS
给每个数据点加上标签;
(4)GROUP = variablename
指定分组变量,按其值对数据分组分别处理;
(5)NOMISSINGGROUP
指定不包含分组变量缺省值的观测;
(6)TRANSPARENCY = n——指定透明度。
例2 某作家记录了某天的用电量数据(C:\MyRawData\),变量包括时间(24个时刻)、用电量(千瓦时):
读取数据,绘制用电量随时间变化的曲线图,画一条用电量=的基准线。
代码:
data electricity;
infile'c:\MyRawData\';
input Time kWh @@;
run;
* Plot temperatures by time;
proc sgplot data = electricity;
series X = Time Y = kWh / MARKERS;
REFLINE / LABEL = (' kh') TRANSPARENCY = ;
xaxis values = (0TO24BY1);
yaxis label = 'Electricity (kWh)';
title'Hourly Use of Electricity';
run;
运行结果:
例3 2013-2014年股票代码为sh600000的股票数据如下:(部分)(C:\MyRawData\)
读入数据,日期只选择2014年,只保留变量date, open(开盘价), high(最高价), low(最低价), close(收盘价)。按日期从小到大排序,并绘制该股票2014年的开盘价和收盘价的变化趋势图。
代码:
proc import datafile = 'C:\MyRawData\'DBMS=CSV OUT = sh600000 REPLACE;
getnames = YES;
datarow = 2;
run;
data sh600000_2014;
set sh600000;
keep date open high low close;
where'1Jan2014'D <= date <= '31Dec2014'D;
proc sort data = sh600000_2014;
by date;
run;
proc print data = sh600000_2014;
title'sh600000股票2014年的数据';
run;
proc sgplot data = sh600000_2014;
series X = date Y = open / name = 'kaipan'legendlabel='开盘价';
series X = date Y = close / name = 'shoupan'legendlabel='收盘价';
title'股票(sh600000)2014年开盘价、收盘价的变化趋势';
keylegend'kaipan''shoupan' / LOCATION = INSIDE POSITION = TOP;
xaxis label = '日期';