• 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=1);
    AXIS2 MINOR=(COLOR=BLUE HEIGHT=0.25 NUMBER=1);
    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=(1990 TO 2012 BY 5) MINOR=(NUMBER=1);
    AXIS2 ORDER=(13000 TO 20000 BY 1000) MINOR=(HEIGHT=5 NUMBER=1);
    SYMBOL INTERPOL=JOIN VALUE=DOT HEIGHT=10;
    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=跟着的变量中);

    以上代码画出来的图如下:

    本博文由博主原创,不得在非博主允许情况下用作商业用途。 如需转载请注明博客地址:http://www.cnblogs.com/immaculate
  • 相关阅读:
    sql-字符串拼接单,双引号及$
    SQL-SQLServer数据库查询
    SQL-数据库不能以127.0.0.1登录
    Excel-VBA-ActiveX编译错误:用户定义类型未定义
    Excel-VBA中,取:存储过程时,报:对象关闭时,不允许操作!
    JS
    小程序(Wepy)--生成海报图片
    小程序--时间处理(显示几分钟前,,几小时前,,几天前...)
    小程序--wepy省市区三级联动选择
    对于 wepy 不是内部或外部命令 -- 的解决办法
  • 原文地址:https://www.cnblogs.com/immaculate/p/6250428.html
Copyright © 2020-2023  润新知