通过实例学SAS(12)--产生高质量图形

1.基本概念

有一些形的全局选项,如SYMBOL,PATTERN.在你改变这置之前,置会一直起作用。有可能会忘了以前的置,那生新形之前,加入RESET=all会将所有置修改缺省,当然也会修改TITLEFOOTNOTE缺省。例如下面是一个形的基本置。

goptions reset=all
            ftext='arial'
            htext=1.0
           ftitle='arial/bo'
           htitle=1.5
           colors=(black);

2.使用GCHART生条形

下面是一个示例如何blood的分布

title "Distribution of Blood Types";
pattern value=empty;
proc gchart data=learn.blood;
   vbar BloodType;
run;
quit;

PATTERN置条形填充空。而VBAR生垂直条形,当然有其它选项

HBAR       水平放置的条形

VBAR3D    垂直条形

HBAR3D    水平条形

PIE           饼图

PEE3D      维饼图

DONUT     圆环图

STAR      

对连续变量也能生条形SAS对每bar动产生分点(midpoint),大多数情况下,是自已置分点的好。例如

pattern value=L2;
title "Distribution of WBC's";
proc gchart data=learn.blood;
         vbar WBC / midpoints=4000 to 11000 by 1000;
         format WBC comma6.;
run;

另外一情况,是将个数当作一,即将连续变量当作分类变量,作的方式

title "Visits by Month of the Year";
pattern value=R1;
proc gchart data=day_of_week;
    vbar Day / discrete;
run;

Gchart建条形,其高度代表某些统计量的。例如,下述代码统计各地区的总额

title "Total Sales by Region";
pattern1 value=L1;
axis1 order=('North' 'South' 'East' 'West');
proc gchart data=learn.sales;
    vbar Region / sumvar=TotalSales
                      type=sum
                      maxis=axis1;
    format TotalSales dollar8.;
run;
quit;

其中sumvar=指定统计变量,type=指定统计类型,若设为mean则统计的是平均了。

有两方式在中加入另外一个量。一方式是使用Group=选项。例如

title "Average Cholesterol by Gender";
pattern1 value=L1;
proc gchart data=learn.blood;
vbar Gender / sumvar=Chol
                   type=mean
                   group=BloodType;
run;
quit;

相当于是在x对变行了再一次分

另一方式是加入subgroup=,个条形上用不同的案表示分例如

title "Average Cholesterol by Gender";
pattern1 value=L1;
pattern2 value=R3;
proc gchart data=learn.blood;
    vbar BloodType / subgroup=Gender;
run;
quit;

image

3.散布

使用proc gplot生散布scatter plot),以表明xy系。加入SYNBOL表达式,选择符号以接点,可以是直线,曲线,甚至可以是回线下面代码产生一个简单的散布

title "Scatter Plot of SBP by DBP";
proc gplot data=learn.clinic;
      plot SBP * DBP;
run;

image

修改xy及点的形式

title "Scatter Plot of SBP by DBP";
symbol value=dot;
proc gplot data=learn.clinic;
    plot SBP * DBP / haxis=70 to 120 by 5
    vaxis=100 to 220 by 10;
run;

image

symbol句将各点以直线或曲线连接起来。例如

title "Scatter Plot of SBP by DBP";
title2 h=1.2 "Interpolation Methods";
symbol value=dot interpol=join width=2;
proc gplot data=learn.clinic;
      plot SBP * DBP;
run;

image

join表明以直线连接,width控制线度。将joinsm(代表smooth),表明将以光滑曲线连接各点。在作前,一般要数据排序。将smsms就省了。例如

title "Scatter Plot of SBP by DBP";
title2 h=1.2 "Interprelation Methods";
symbol value=dot interpol=sms line=1 width=2;
proc gplot data=learn.clinic;
     plot SBP * DBP;
run;

image

 

 

posted on 2008-08-25 16:37  zgw21cn  阅读(1593)  评论(0)    收藏  举报

导航