SAS 画折线图PROC GPLOT
虽然最后做成PPT里的图表会被要求用EXCEL画,但当我们只是在分析的过程中,想看看数据的走势,直接在SAS里画会比EXCEL画便捷的多。
修改起来也会更加的简单,,不用不断的修改程序然后刷新EXCEL里的透视表,,甚至有时还是需要重新插入图表等等麻烦的操作。
以下将介绍折线图(PROC GPLOT的用法):
先看代码:
AXIS1 ORDER=(1990 TO 2012 BY 5) MINOR=(NUMBER=1);
AXIS2 ORDER=(13000 TO 20000 BY 1000) MINOR=(HEIGHT=5 NUMBER=1);
AXIS3 MAJOR=(height=10 NUMBER=20) MINOR=(NUMBER=1);
SYMBOL INTERPOL=JOIN VALUE=DOT HEIGHT=10;
PROC GPLOT DATA=EX.SALES_YEAR;
TITLE 'YEARLY AMOUNT IN NORTH AMERICA';
PLOT N_AMOUNT*YEAR/LEGEND HAXIS=AXIS1 VAXIS=AXIS2;
PLOT2 N_Transactions*YEAR/LEGEND VAXIS=AXIS3;
RUN;
QUIT;
GOPTIONS RESET=ALL;
以上的例子几乎可以满足所有画折线图的需求。画一个简单的折线图必须用到的关键有SYMBOL、PLOT、QUIT;
1、关键字SYMBOL,是设置折线的样式的。其中INTERPOL=join表示将散点用线连接起来,VALUE=dot规定数据点的样式(dot表示用点表示),HEIGHT 表示数据点的大小(一般这里不写HEIGHT,使用默认大小为1)。另外若在一张图里画多条折线的话,不同折线的样式要求不用则是SYMBOL1对应PLOT1 即,设置多个SYMBOLN对应PLOTN;
2、关键字PLOT,规定画折线图的数据字段(纵坐标字段*横坐标字段)。LEGEND表示要表明图例(不写则没有图例);
3、QUIT,PROC GPLOT过程虽然有RUN结尾,但只有RUN是不够的,,SAS会一直运行下去,导致不能运行PROC GPLOT以外的代码,在RUN后面应该加上QUIT;语句来终止SAS运行proc gplot过程。
除了以上提到的关键字还有一些在画复杂点的折线图也是必须要的:
4、AXISN、规定坐标轴的样式和PLOT语句中的HAXIS和VAXIS连用才有效。ORDER=()规定坐标轴的上下限及跨度,MAJOR=()也可以代替ORDER=()规定坐标轴的主刻度如:MAJOR=(HEIGH=1 NUMBER=8)HEIGHT=1规定主刻度先的长度,NUMBER=8规定有8跟主刻度线;还有MINOR=()同理规定坐标轴的副刻度线如:MINOR=(HEIGHT=0.5 NUMBER=5)表示副刻度线的长度为主刻度线的一半,且相邻的两根主刻度线中有5跟副刻度线;
5、GOPTIONS RESET=ALL;以上的每一个关键设置的格式一旦运行生成,除非用新的同关键字的格式覆盖或者SAS重启,格式是不会改变的。又因为每一个图表用的格式可能会不一样,为了不需要每一条覆盖可以用GOPTIONS RESET=ALL;运行一下,,所有格式都归为默认值,可重新设置。当然有时并不是所有的格式都要重置比如只需要重置SYMBOL,这时可以把这句改成GOPTIONS RESET=SYMBOL;即可,其余的同理。
上面代码运行完后的折线图如下(为了清楚的认识各个关键字的功能,此折线图设置的参数有点夸张,嘻嘻。。。。):

另外若要画多条折线还可以用以下写法:
AXIS1 MINOR=(COLOR=BLUE NUMBER=);
AXIS2 MINOR=(COLOR=BLUE HEIGHT=0.25 NUMBER=);
SYMBOL1 INTERPOL=JOIN VALUE=DOT C=BLUE;
SYMBOL2 INTERPOL=JOIN VALUE=# C=GREEN;
PROC GPLOT DATA=EX.SALES_YEAR;
TITLE 'YEARLY AMOUNT IN NORTH AMERICA';
PLOT N_AMOUNT*YEAR E_AMOUNT*YEAR/OVERLAY LEGEND HAXIS=AXIS1 VAXIS=AXIS2 ;
RUN;
QUIT;
GOPTIONS RESET=ALL;
只用一个PLOT但是必须加一个关键字OVERLAY表示重叠表现。
还有一种利用三个字段的数据作为三个维度画多条折线:
GOPTIONS RESET=ALL;
AXIS1 ORDER=( TO BY ) MINOR=(NUMBER=);
AXIS2 ORDER=( TO BY ) MINOR=(HEIGHT= NUMBER=);
SYMBOL INTERPOL=JOIN VALUE=DOT HEIGHT=;
PROC GPLOT DATA=EX.SALES_YEAR_by_area;
TITLE 'YEARLY AMOUNT IN NORTH AMERICA';
PLOT AMOUNT*YEAR=area/overlay LEGEND HAXIS=AXIS1 VAXIS=AXIS2;
RUN;
QUIT;
画出的图就是关于area的多条折线,(area有几个不同的就有几条折线)
通常单一的折线图恐怕不能满足需求,接下来是折线柱形图:
PROC GBARLINE DATA=MYFAIL;
VBAR CAUSE/SUMVAR=COUNT TYPE=SUM;
PLOT /SUMVAR=COUNT FREQ=COST;
RUN;
折线柱形图的过程名叫:GBARLINE,其中必须的关键字有:vbar plot sumvar
VBAR说明画的是纵向的柱形图,
通常VBAR后面的选项会加一个discrete表示以横坐标变量的每一个不同的值为一个柱子
sumvar指明统计变量,,
type指明统计方式(默认是求和sum,还可以求别的)
plot说明画的是折线图
FREQ这里不是必须的,按需写即可(功能是给之前的统计变量乘以一个权重值后再求和,权重值就储存在freq=跟着的变量中);
以上代码画出来的图如下:

SAS 画折线图PROC GPLOT的更多相关文章
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- Matplotlib学习---用matplotlib画折线图(line chart)
这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevd ...
- echars画折线图的一种数据处理方式
echars画折线图的一种数据处理方式 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- 使用OpenCV画折线图
使用OpenCV画直方图是一件轻松的事情,画折线图就没有那么Easy了,还是使用一个库吧: GraphUtils 源代码添加入工程 原文链接:http://www.360doc.com/content ...
- gnuplot画折线图
之前尝试用jfreechart画自定义横坐标的折线图或时序图,发现很复杂,后来改用gnuplot了. gnuplot在网上一搜就能找到下载地址. 安装完成后,主要是命令行形式的交互界面,至少比jfre ...
- python的turtle模块画折线图
代码如下: import turtle yValues = [10.0,7.4,6.4,5.3,4.4,3.7,2.6] def main(): t = turtle.Turtle() t.hidet ...
- echarts入门基础,画折线图
注意:一定要自己引入echarts库 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- python用matplotlib画折线图
折线图: import matplotlib.pyplot as plt y1=[10,13,5,40,30,60,70,12,55,25] x1=range(0,10) x2=range(0,10) ...
- Jquery画折线图、柱状图、饼图
1.今天做了一个折线图,首先需要导js文件.这里有一个demo:http://files.cnblogs.com/files/feifeishi/jquery_zhexiantubingtuzhuzh ...
随机推荐
- 在svg中的line和path根据路径返回x,y
由于path有自带的api可获得总长度,和某个长度返回的坐标. var total = d.path.getTotalLength();//返回总长度 var point = d.path.getPo ...
- ECharts-基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表
ECharts http://ecomfe.github.com/echarts 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算 ...
- 关于有偿提供拼图响应式后台的通知---------pintuer ui的官方通知(www.pintuer.com)
拼图响应式前端框架版响应式后台正式发布. 考虑到目前拼图的状况,我们不打算免费开放下载,但也不会收各位朋友1分钱,该版后台将有偿提供给各位给予拼图贡献的朋友. 废话不多说,一切皆以有图有真相,下面上图 ...
- SQLSERVER进程CPU使用率100%
解决SQLSERVER2008 CPU使用率99%: 1.dbcc checkdb 重建索引 2.檢查有沒有死鎖 -- sp_lock SELECT request_session_id spid , ...
- 第五回. $e$ 的引入
假如你有 $1$ 块钱, 存银行, 利率为 $100\%$, 那么一年后本息和为$$1+1=2.$$ 如果你换种存法, 存半年, 把本息和取出来, 再存半年, 那么一年后本息和为$$\left(1+\ ...
- 安装memcache扩展
今天早上去公司打开新项目,结果提示"Class 'Memcache' not found",于是上网搜了下这是怎么回事?现在在这里记录一下解决过程,以备查询,也希望能帮助到遇到相同 ...
- spring aop实现
Spring 有如下两种选择来定义切入点和增强处理. 基于 Annotation 的"零配置"方式:使用@Aspect.@Pointcut等 Annotation 来标注切入点和增 ...
- PHP测试用例文档
PHP接口测试用例和文档 PHP在过程中的测试 采用写一个简单html表单做一个简单的post测试 PHP接口测试文档 Alpha部分主要的接口文档可查看 接口文档 功能模块 接口 登录注册模块 验证 ...
- [10]APUE:信号
[a] 常用信号 SIGABRT 调用 abort 函数时产生此信号,进程异常终止 SIGALRM 调用 alarm 或 setitimer 函数超时之后产生 SIGCHLD 子进程终止或 stop ...
- Jquery常用radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关设置
获取一组radio被选中项的值:var item = $('input[name=items][checked]').val(); 获取select被选中项的文本:var item = $(" ...