3.3 条形图、饼图和箱线图的绘制
条形图、饼图与箱线图是较为基本的统计图形。本节将利用zichan.dta数据讲解这3种图形的绘制。
3.3.1 条形图的绘制
条形图是用矩形的长度来表示相互独立的变量大小取值的统计图形,它与直方图虽然看着相似,但是含义和用法相差甚远。条形图主要有两种:一种是横向的条形图;另一种是纵向的条形图。
绘制条形图的基本命令语句为:
graph baryvars [if] [in] [weight] [, options] graph hbaryvars [if] [in] [weight] [, options]
在这两个命令语句中,第一个命令语句用于绘制纵向条形图,第二个命令语句用于绘制横向条形图。yvars是将要绘制图形的变量,if是条件语句,in是范围语句,weight是权重语句。
在绘制条形图的过程中,需要指明所要展示的统计量,如果不指明统计量,就会默认显示均值(mean)统计量。绘制条形图可使用的统计量如表3.6所示。
表3.6 条形图统计量
下面着重讲述条形图的options选项的内容。
(1)stack选项
在绘制条形图时,默认采用并排形式,然而有时可将具有多个y变量的统计量上下堆积而形成堆积条形图。Stack选项通常与percentage选项连用,这时纵轴的统计量默认是比例,总和通常为100%,即百分比堆积条形图。
(2)blabel选项
blabel选项有两个作用:一个是通过为条柱增添数值标签增加图形所显示的信息量;另一个是可以改变bar的名称和组合。blabel选项的命令语句如下:
blabel(what [, where_and_how])
其中,what表示blabel选项定义的内容,详细内容显示在表3.7中;[, where_and_how]定义blabel选项的位置和显示方式,具体如表3.8所示。
表3.7 what内容
表3.8 whereandhow内容
例如,利用zichan.dta数据进行条形图的绘制。此数据为根据中国某市历年统计年鉴得到的自来水产业资产构成数据(2000—2007年)。其中,year代表年份,current代表流动资产,solid代表固定资产,gross代表资产总额。完整的数据位于本书下载资源\data\第3章\zichan.dta工作文件中。
图3.12是运用zichan.dta数据文件中的数据绘制的流动资产current、固定资产solid和资产总额gross随时间变化的条形图,所有设置均使用默认设置。命令语句为:
graph bar current solid gross, over(year)
over(year)表示图形按时间year进行分组绘制。
图3.12 默认条形图
为了改观图表的阅读性及突显主题,我们可以对图3.12进行一些改进:
- 将纵向条形图改成横向条形图。
- 为每个条柱增加标签,内容为条柱的高度,位置在条柱的右方。
- 在300 000数值处画一条标识线。
重新输入绘制图形的命令如下:
graph hbar current solid gross, over(year) blabel(bar, position(outside)) yline(300000)
在这个命令语句中,“graph hbar”表示绘制横向条形图,“blabel(bar, position(outside))”表示给条柱添加标签,位置在条柱的右方,“yline(300000)”用于绘制一条标识线。绘制完成后的图形如图3.13所示。
为了更加清楚地看到资产的结构,我们也可以将条形图绘制成层叠的形式,命令如下:
graph bar current solid gross, over(year)blabel(bar, position(outside)) stack
这个命令与前面命令的最大不同就是加了stack选项,生成的层叠条形图如图3.14所示。
图3.13 横向条形图
图3.14 层叠条形图
3.3.2 饼图的绘制
饼图是用圆形及圆内扇形的大小表示总体中各部分所占比例的统计图,通常用来表示各部分在总体中所占的份额。绘制饼图的基本命令为:
graph pie varlist [if] [in] [weight] [, options] graph pie varname [if] [in] [weight], over(varname) [options] graph pie [if] [in] [weight], over(varname) [options]
这3个命令语句表达的含义基本是一致的,只是在饼图具体绘制时有所区别。varlist/varname表示将要绘制图形的变量,if是条件语句,in是范围语句,weight是权重语句,options选项的具体内容显示在表3.9中。
表3.9 options选项的具体内容
例如,运用zichan.dta数据文件中的数据绘制资产构成的饼图,所有设置均使用默认设置,需要输入的命令语句为:
graph pie current solid,by(year)
current、solid是饼图的变量,by(year)是将饼图按时间分类绘制。命令执行以后,将绘制出如图3.15所示的资产构成饼图。
默认的饼图不仅美观性较差,而且反映的信息也不是特别清楚,用户可以进行以下修饰和改进:
- 添加图形名称为“资产构成图”。
- 在每一个扇面上加上所占比例的标签。
- 将代表流动资产的扇面突出显示,且颜色设置为黄色。
重新输入绘制图形的命令如下:
graph pie current solid,plabel(_all percent, gap(9)) pie(1, explode color(yellow)) title(资产构成图) by(year)
plabel(_all percent, gap(9))为每个扇面添加比例标签,同时设定了相对位置;pie(1, explode color(yellow))使得第一个扇面向外凸出,且颜色设定为黄色;“title(资产构成图)”命名了标题。改进后的饼图如图3.16所示。
图3.15 饼图
图3.16 改进后的饼图
3.3.3 箱线图的绘制
顾名思义,箱线图是由箱子和线段组成的图形,用一条线段的两端分别代表变量的最小值和最大值,中间一个箱子分别标明第1个四分位数、中位数和第3个四分位数,因此一个箱线图是5个统计量的汇总。箱线图反映了数据的中心、分布、极端值的情况,所以在比较不同的数据集时较为常用。箱线图有两种:一种是纵向的箱线图;另一种是横向的箱线图。绘制箱线图的基本命令如下:
graph box yvars [if] [in] [weight] [, options] graph hboxyvars [if] [in] [weight] [, options]
graph box用来绘制纵向箱线图,graph hbox用于绘制横向箱线图。yvars是将要绘制箱线图的变量,if是条件语句,in是范围语句,weight是权重语句。
例如,运用数据文件usaauto中的数据绘制价格(Price)和重量(Weight)的箱线图,所有设置均使用默认设置,需要输入的命令语句为:
graph box price weight
命令执行以后,将绘制出如图3.17所示的反映Price和Weight情况的箱线图。
我们可以进行以下修饰和改进:
- 按国产车和进口车分别显示这两个变量的信息。
- 将分组后x轴的组名分别命名为“国产车”和“进口车”。
重新输入绘制图形的命令如下:
graph box price weight,over(foreign,relabel(1"国产车" 2"进口车"))
“over(foreign, relabel(1 "国产车" 2 "进口车"))”实现了按foreign变量分组,且将组命名,显示的结果如图3.18所示。
图3.17 箱线图
图3.18 改进箱线图