ministep / SQL_DataAnalysis

SQL数据分析
9 stars 0 forks source link

【   】SAS9.3模板制图学习笔记 (graph template language) - SAS专版 - 经管之家(原人大经济论坛) #93

Open kemistep opened 4 years ago

kemistep commented 4 years ago

坚持每天写 1、2 页,慢慢积累。虽然,某一天当我熟练掌握 SAS,或许就是我不再需要使用 SAS 的时候。。。

     

  1. proc template;                        
  2.         define statgraph scatterplot;               
  3.         begingraph;                 
  4.         entrytitle "Weight and Age by Sex";                 
  5.         layout overlay;               
  6.                 scatterplot x=age y=weight /         
  7.                         group=sex name="abc";
  8.                         discretelegend "abc";
  9.         endlayout;               
  10.         endgraph;               
  11.         end;               
  12. run;                        
  13. ods html;                        
  14. proc sgrender data=sashelp.class template=scatterplot;                        
  15. run;

复制代码

  1. proc template;                        
  2.         define statgraph scatterplot;               
  3.         begingraph;
  4.         entrytitle "Weight and Age by Sex";
  5.         entrytitle halign=left "Weight and Age by Sex"
  6.                                 / border=true
  7.                                 opaque=true
  8.                                 backgroundcolor=lightgreen
  9.                                 textattrs=(color=blue
  10.                                                         family='Arial'
  11.                                                         size=14
  12.                                                         style=italic
  13.                                                         weight=bold);
  14.     entryfootnote halign=center 'SMOON Confidential'
  15.                               halign=right "MIB";
  16.         layout overlay;               
  17.                 scatterplot x=age y=weight /         
  18.                         group=sex name="abc";
  19.                         discretelegend "abc";
  20.         endlayout;               
  21.         endgraph;               
  22.         end;               
  23. run;                        
  24. ods html;                        
  25. proc sgrender data=sashelp.class template=scatterplot;                        
  26. run;

复制代码

————————————————————————————————————————————————————————————

从图形可以看到,设置 backgroundcolor=lightblue 后,背景颜色变成淡蓝色了;设置 border=true 和 borderattrs=(color=pink thickness=3) 后,边框变成粉红色并且加粗了;设置 designwidth=400px 和 designheight=400px 后,图表大小改变并且变成正方形了;设置 pad=(bottom=50 right=50) 后,下边和右边空白区域变大了。  
proc template;                        
        define statgraph scatterplot;               
        begingraph / backgroundcolor=lightblue
                            border=true
                            borderattrs=(color=pink thickness=3)
                            designwidth=400px
                            designheight=400px
                            pad=(bottom=50 right=50);                 
        entrytitle "Weight and Age by Sex";                 
        layout overlay;               
                scatterplot x=age y=weight /         
                        group=sex name="weight";
                        discretelegend "weight";
        endlayout;               
        endgraph;               
        end;               
run;
ods html;                        
proc sgrender data=sashelp.class template=scatterplot;                        
run;

————————————————————————————————————————————————————————————

对比上下 2 个图形,可以看到设置 aspecratio=0.7 后,绘图区域形状变了;设置 cycleattrs=true 后,图形颜色从 2 种颜色变成 4 种颜色。
proc template;
define statgraph seriesplot;
        begingraph / designwidth=360px designheight=260px;
        entrytitle "Tech Stock Trends";
        layout overlay / yaxisopts=(label='price')
                                aspectratio=0.7
                                cycleattrs=true;
                seriesplot x=date y=close / group=stock name="stocks"
                        lineattrs=(thickness=3);
                seriesplot x=date y=high / group=stock
                        lineattrs=(thickness=3);
                discretelegend "stocks";
        endlayout;        
        endgraph;
        end;
run;
proc sgrender data=sashelp.stocks template=seriesplot;
  where date > "31dec1999"d and stock^='IBM';
run;

————————————————————————————————————————————————————————————

对比上下 2 个图形,可以看到设置 opaque=true 和 backgroundcolor=lightyellow 后,布局背景颜色变成淡黄色;设置 border=true 和 borderattrs=(color=blue pattern=dash thickness=2) 后,布局区域显示边框,并且边框属性为蓝色、破折线、加粗;设置 pad=(top=50) 后,布局上方和图表距离变大了;设置 wallcolor=lightgray 和 walldisplay=(fill) 后,绘图区域背景颜色变成淡灰色。
proc template;
define statgraph seriesplot;
        begingraph / designwidth=360px designheight=260px;
        entrytitle "Tech Stock Trends";
        layout overlay / yaxisopts=(label='price')
                                aspectratio=auto
                                backgroundcolor=lightyellow
                                border=true
                                borderattrs=(color=blue pattern=dash thickness=2)  
                                cycleattrs=true
                                opaque=true
                                pad=(top=50)
                                wallcolor=lightgray
                                walldisplay=(fill);         
                seriesplot x=date y=close / group=stock name="stocks"
                        lineattrs=(thickness=3);
                seriesplot x=date y=high / group=stock
                        lineattrs=(thickness=3);
                discretelegend "stocks";
        endlayout;        
        endgraph;
        end;
run;
proc sgrender data=sashelp.stocks template=seriesplot;
  where date > "31dec1999"d and stock^='IBM';
run;

————————————————————————————————————————————————————————————


从图形对比左右 Y 轴,可以看到设置 display=(label tickvalues) 后,轴线和标记不显示了;设置 griddisplay=on 后,显示刻度线;设置 label="population (%)" 和 labelattrs=(color=blue weight=bold) 后,标签属性变成蓝色加粗;设置 xaxisopts=(display=none) 后,X 轴不显示了。
proc template;
        define statgraph y2axis;
        begingraph / designwidth=360px designheight=360px;
        layout overlay / walldisplay=none
                                yaxisopts=(display=(label tickvalues)
                                                    griddisplay=on
                                                    label="population (%)"
                                                    labelattrs=(color=blue weight=bold)
                                                    name="Y")
                                xaxisopts=(display=none);
                histogram height / scale=count yaxis=y2 name="height";
                histogram height / scale=proportion yaxis=y;
                densityplot height / normal();
                discretelegend "height";
        endlayout;
        endgraph;
        end;
run;
proc sgrender data=sashelp.class template=y2axis;
run;

https://bbs.pinggu.org/thread-2177218-1-1.html