数据可视化是指对原始数据或数据分析结果的展示,可以帮助读者更加直观地理解数据与统计结果。Stata提供了一整套绘图工具与选项,读者可以自由地选择满足要求的绘图工具。Stata的绘图命令主要包括二维绘图命令族(graph twoway),以及非二维绘图命令族(如条形图、直方图等)。常规图形在Stata中的绘制命令相当简单,通过本章的学习读者可以轻松掌握使用Stata进行绘图的方法。
在Stata中,graph twoway是二维绘图命令族,包含多种二维绘图命令,其语法格式为:
其中,plot的语法格式为:
在二维绘图命令中,每种图形被称为一个绘图类型(plottype),常用绘图类型如表3-1所示。
表3-1 常用绘图类型
续表
说明
前导[graph]为可选项。如果第一个(或唯一一个)图是散点图(scatter),那么也可以省略[graph],此时的语法格式为:
通常,不同的命令之间可以用“||”作为分隔符或用“()”括起来,以便将所要绘制的图形重叠绘制在同一个图形中,以下三条命令语句是等价的:
scatter命令是二维绘图命令中最基本的一个,其他二维绘图命令都是基于scatter命令的。
同样地,多个绘图类型的二维绘图命令可以放在一起,以绘制重叠的复合图形,以下两条命令语句是等价的:
其中,scatter、line、lfit是不同的二维绘图命令。
【例3-1】 二维绘图命令的应用示例。
在命令窗口中输入:
图3-1 二维绘图命令的应用示例
散点图多用于表示因变量随自变量的变化而变化的大致趋势,由此可以选择合适的函数进行经验分布的拟合,进而找到变量之间的函数关系。散点图在探索变量之间的函数关系,为进一步的统计分析做准备工作中得到非常广泛的运用。
在Stata中,散点图是最基础的二维图形,掌握散点图的绘制方法,再学习其他图形的绘制方法也就变得简单了。scatter命令语法格式为:
其中,varlist可以为:
在Stata的实际应用中,以下3种形式都是可以识别的:
当命令后紧跟两个变量时,Stata默认第一个变量为y轴变量,第二个变量为x轴变量;当命令后紧跟两个以上变量时,Stata会将除最后一个变量以外的变量作为y轴变量,而将最后一个变量作为x轴变量。例如:
scatter命令的选项非常复杂,此处首先给出这些选项的分类,如表3-2所示。后文中会对其进行详细的介绍,以帮助读者掌握这些选项的使用方法。
表3-2 scatter命令的选项分类
散点显示设置(marker_options)包括散点的形状、颜色、大小等10个选项,如表3-3所示。
表3-3 散点显示设置选项
下面对散点的形状、颜色、大小进行简单的介绍,其余选项说明请参考帮助文件。
1.散点的形状
散点的形状选项可以简写为ms(),括号内为散点的形状参数,根据实际需要可以选择合适的散点显示符号,如表3-4所示。
表3-4 散点显示符号
续表
注意
利用不显示符号(none)选项可以隐藏散点。部分散点显示符号示意图如图3-2所示。
图3-2 部分散点显示符号示意图
2.散点的颜色
在Stata中,mcolor()选项用于设置图形组件(如线条、背景和条形图)的颜色和不透明度。颜色包括从黑到白的灰阶、蓝色、黄色、红色等,读者也可以使用RGB或CMYK进行数字调色。Stata中可用的颜色如表3-5所示。
表3-5 Stata中可用的颜色
续表
注意
在设定RGB或CMYK时,需要将相关的设定参数放在双引号内,如"30 30 30"。
如果需要查看完整的颜色清单,则可在Stata的命令窗口中输入:
运行后可得到颜色清单的详细列表,这里不再列出。
利用palette命令可以查看某种颜色的具体情况,其调用格式为:
同样地,利用palette命令还可以对比两种颜色的情况:
其中,[,scheme(schemename)]选项用来制定某种图形的显示格式,限于篇幅,这里不再介绍。
【例3-2】 颜色对比示例。
在命令窗口中输入:
运行后,输出结果如图3-3所示,可以查看两种颜色的对比显示效果,包括颜色的名称、RGB数值、实心点、直线及空心点的对比显示效果。
图3-3 两种颜色的对比显示效果
3.散点的大小
在Stata中,msize()选项用于控制散点的大小,该选项的取值范围为vtiny~ehuge,如表3-6所示,具体效果需要读者在使用过程中测试。
表3-6 散点大小参数
如果需要查看完整的尺寸清单,则可在Stata的命令窗口中输入:
运行后可得到尺寸清单的详细列表,这里不再列出。
【例3-3】 根据数据集uslifeexp.dta提供的预期寿命与年份的比较数据绘制不同显示样式的散点图。
在命令窗口中输入:
图3-4 不同显示样式的散点图绘制
图3-4 不同显示样式的散点图绘制(续)
散点标签一般是指位于每个散点旁的、用于说明该散点所代表个体的文字。在Stata中,利用散点标签设置(marker_label_options)设定散点标签,散点标签设置包括如表3-7所示的10个选项。
表3-7 散点标签设置选项
表3-8 标签角度取值
【例3-4】 散点标签设置示例。
在命令窗口中输入:
由图3-5(b)可以发现,标签United States超界,显示不完整;标签Honduras与标签EI Salvador重叠,辨识困难。通过xscale调整x轴显示边界,通过mlabv调整标签方向,具体如下:
图3-5 散点标签设置示例
当需要将散点图上的各点通过线连接起来时,就需要使用散点连线设置(connect_options),以便更加清晰地查看散点变化趋势。散点连线设置包括如表3-9所示的8个选项。
表3-9 散点连线设置选项
续表
1.连线方式
connect(connectstylelist)选项用于确定是否以及如何将相邻的两点连接起来,其参数如表3-10所示。
表3-10 connect(connectstylelist)选项参数
2.线型
lpattern(linepatternstylelist)选项用于确定连线的类型,是实线还是虚线,是长虚线还是短虚线后接着圆点等,其参数如表3-11所示。
表3-11 lpattern(linepatternstylelist)选项参数
说明
符合组合"formula"为下列符号的组合,实线“l”、长虚线“_”、中虚线“-”、点虚线“.”,或者一个点及空格“#”(#表示空格数量)。
当数据点过于密集或重叠,使得观察数据变化趋势受到影响时,需要将这些数据点挪动到适当的位置,使得过于密集或重叠的数据点相互分开。此时就需要用到Stata中的散点振荡设置(jitter_options),以实现振荡数据点的目的。
当设定振荡选项jitter(#)后,scatter命令会在绘图前向数据中增加白噪声,#用来指定一个数字,表明振荡的程度占绘图区域的百分比。若设定为jitterseed(#),则表示通过随机数设定jitter(#)。
【例3-5】 散点振荡设置示例。
在命令窗口中输入:
说明
jitter(7)表明对散点振荡的程度为整个绘图区域的7%。由图3-6可知,通过设置散点振荡选项,重叠的数据点被分开,读者通过调整数字可以查看振荡的效果。
图3-6 散点振荡设置示例
3.2节主要介绍了绘制散点图的部分特有选项(其他绘图类型类似),本节继续以散点图为例介绍各种二维绘图命令的共有选项,包括坐标轴设置、图标题设置、图例设置、by()选项控制、图形显示格式控制等。
坐标轴设置是二维绘图中最复杂的一环,包括坐标轴尺度设置(axis_scale_options)、坐标轴刻度设置(axis_label_options)及坐标轴标题设置(axis_title_options)。
下面首先介绍坐标轴尺度设置(axis_scale_options),其包括如表3-12所示的4个选项。坐标轴尺度设置决定了坐标轴是采用正常的算术坐标、对数坐标还是采用反向坐标,坐标轴的数值范围,以及轴线的显示等。
表3-12 坐标轴尺度设置选项
子选项axis_suboptions的内容如表3-13所示。
表3-13 子选项axis_suboptions的内容
【例3-6】 坐标轴尺度设置示例1。
在命令窗口中输入:
图3-7 坐标轴尺度设置示例1
【例3-7】 坐标轴尺度设置示例2。
在命令窗口中输入:
说明
在Stata中,plotregion()为页边选项。
图3-8 坐标轴尺度设置示例2
坐标轴的刻度和刻度标识是通过坐标轴刻度设置(axis_label_options)来控制的,其包括如表3-14所示的4个选项。
表3-14 坐标轴刻度设置选项
坐标轴刻度设置选项中的子选项rule_or_values的定义如下:
说明
在使用坐标轴刻度设置选项时至少需要定义rule或numlist,也可以两者同时定义。
rule的定义说明如表3-15所示,子选项suboptions的内容如表3-16所示。
表3-15 rule的定义说明
表3-16 子选项suboptions的内容
【例3-8】 坐标轴刻度设置示例。
在命令窗口中输入:
图3-9 坐标轴刻度设置示例
图3-9 坐标轴刻度设置示例(续)
坐标轴的标题通过坐标轴标题设置(axis_title_options)选项设定,其包括如表3-17所示的4个选项。
表3-17 坐标轴标题设置选项
坐标轴标题设置选项中的子选项axis_title的定义如下:
子选项suboptions的内容如表3-18所示。
表3-18 子选项suboptions的内容
1.默认轴标题
默认轴标题使用相应变量的标签,如果没有标签,则使用变量名。例如:
此时,默认y轴标题为yvar的标签或变量名自身,默认x轴标题为xvar的标签或变量名自身。对于某些绘图类型则并非如此。例如,对于如线性拟合图形:
此时,默认y轴标题为Fitted values,这不取决于变量yvar的标签或变量名。
当一个坐标轴上需要关联多个变量时,相应地该坐标轴的标题将是这几个变量的组合标题。例如:
此时,y轴的默认标题为ylvar_title/y2var_title/Fitted values。
2.自定义轴标题
通过ytitle()命令、xtitle()命令可以改变x轴和y轴的标题。例如:
上述命令语句将x轴标题设定为Dingjb x title,将y轴标题设定为Dingjb y title。设定时需要使用双引号,并将设定的标题放置在括号内。例如:
上述命令语句将x轴标题设定为Quantity,将y轴标题设定为Price。
当需要放置多行标题时,需要将每一行标题放在一个双引号内,并将几个双引号接连放在括号内。例如:
当不需要显示任何标题时,可以使用两个紧接着的双引号。例如:
3.轴标题的替换与组合设置
在同一条命令语句中,选项xtitle()和ytitie()可能会被重复设定,此时位于最右边的选项将决定最终的设定结果。例如,默认x轴标题为Analysis Results,若执行下面的命令:
则x轴标题Analysis Results会被替换为New Analysis。
若执行下面的命令:
则x轴标题变为Analysis Results(第1行)与Calculate Time(第2行)的组合标题。
若执行下面的命令:
则x轴标题变为Time to Failure(第1行)与Analysis Results(第2行)的组合标题。
为标明绘制的图形所表达的含义,需要对图形添加图标题。在Stata中,通过图标题设置(title_options)选项设定图标题。图标题设置选项如表3-19所示。
表3-19 图标题设置选项
图标题设置选项中的子选项tinfo的定义如下:
子选项suboptions的内容如表3-20所示。
表3-20 子选项suboptions的内容
1.多行图标题设置
在Stata中,图标题可以设置成很多行,只需要将放在括号内的多行图标题分别用双引号隔开即可。例如:
此时,图标题第一行为My Title,第二行为Second Line,第三行为Third Line,依次类推。
每个图标题设置选项都可以重复设置多次。例如:
此时,只有图标题Two出现在最终绘制的图形中,图标题One会被忽略。
使用子选项prefix或suffix可以将不同的设置合并起来。例如:
此时,输出结果第一行为One,第二行为Two。若输入命令:
则输出结果第一行为Two,第二行为One。
2.图标题位置设置
在Stata中,图标题位置由scheme选项设定。子选项position(clockposstyle)与ring(ringposstyle)可以覆盖scheme选项的选择,其中子选项position()根据钟表的12个方向来设定标题的方向,而子选项ring()则用于设定标题距绘图区域的远近。
子选项position()的设定类似于钟表,如图3-10所示,其中内圈是ring(0)时的设定,外圈是ring(k),k>0时的设定。
图3-10 position()设定示意图
子选项ring()的设定和标题的默认位置如图3-11所示。当ring(k)中的k=0时,标题位于绘图区域(plot region)内;当ring(k)中的k>0时,标题位于绘图区域之外,k越大标题距离绘图区域越远。
图3-11 ring()设定示意图
图例表示图形中不同符号所对应的内容,它能够帮助读者轻松地读懂图形中不同符号的含义,通常Stata自动生成的图例基本符合要求。legend选项的语法格式为:
图例设置包括图例内容(contents)设置和图例位置(location)设置两部分。其中,图例内容设置选项如表3-21所示,图例位置设置选项如表3-22所示。
表3-21 图例内容设置选项
续表
表3-22 图例位置设置选项
【例3-9】 图例设置应用示例。
在命令窗口中输入:
上述最后一条命令语句的功能等同于以下三条命令语句的组合:
继续在命令窗口中输入:
图3-12 图例显示设置示例
图3-12 图例显示设置示例(续)
在图形控制中,by()选项设置的依据通常是分类变量,如性别、民族、班级、地区等,一旦设定了by()选项,Stata就会根据括号中变量的不同取值重复绘图。by()选项的语法格式为:
其中,varlist是绘图的依据变量。子选项byopts的内容如表3-23所示。
表3-23 by()子选项的内容
【例3-10】 by()选项设置应用示例。
在命令窗口中输入:
图3-13 by()选项设置应用示例
图3-13 by()选项设置应用示例(续)
图形显示格式(整体外观)通过scheme选项进行控制,包括图形的各个方面。图形的底色、字体大小、轴线自动分段、坐标轴位置等,在不同的图形显示格式中各不相同。scheme选项指定用于此特定图形命令的图形方案,而不更改默认值。
查看可供选择的图形显示格式的命令为:
设置绘图显示格式的语法格式为:
使用permanently选项后,图形显示格式将被永远设置为所选格式,直到下一次重新设定。
【例3-11】 修改图形显示格式设置方案示例。
在命令窗口中输入:
前文基于散点图详细介绍了二维绘图命令族,下面将对常见图形的绘制方法进行介绍,包括曲线标绘图、连线标绘图、拟合图形、直方图和条形图。其中,曲线标绘图和连线标绘图是二维绘图命令族中直接来源于散点图的图形。
曲线标绘图实际上是指将散点图中的点用线段连接起来并将散点隐藏,是散点图的拓展,散点图中控制添加坐标轴标签、刻度和刻度标识等的相关选项对曲线标绘图同样适用,只是增加了可以控制曲线本身特征的选项。
曲线标绘图的命令语法格式为:
此处参与绘图的变量varlist的定义为:
其中,twoway可以省略;varlist为参与绘图的变量名称;选项options包括connect_options、axis_choice_options及其他twoway_options,如坐标轴设置、图标题设置、图例设置、增加线和文本、by()选项控制、图形显示格式控制等。
以下3条命令语句对曲线标绘图是等价的:
曲线标绘图作为二维绘图命令族中的一员,可以与其他二维绘图命令混合使用。例如:
也可以写成
曲线标绘图可以说是散点图的拓展,即将各点通过线段连接起来且不显示散点。因此,以下两条命令语句是等价的:
注意
在使用时,可以用scatter选项代替line选项,但不可以用line选项代替scatter选项,这是因为line选项可以设定marker option msymbol()。
【例3-12】 曲线标绘图示例。
在命令窗口中输入:
折线图适用于时间序列数据。对于其他数据集,线通常用于显示预测值和置信区间。在命令窗口中输入:
图3-14 曲线标绘图示例
在命令窗口中输入:
图3-15 绘制复合图形
由图3-15可知,图例的文本说明超出边框,改变图例名称及调整图例位置可以使得图形整体更加美观。此时的程序变为:
图3-16 调整图例后的效果
连线标绘图是指将每个散点连接起来,与曲线标绘图不同的是,连线标绘图会显示各个散点。连线标绘图的命令语法格式为:
此处参与绘图的变量varlist的定义为:
其中,twoway可以省略;varlist为参与绘图的变量名称;选项scatter_options的含义与散点图的选项完全一致。
以下三条命令语句对连线标绘图是等价的:
连线标绘图作为二维绘图命令族中的一员,可以与其他二维绘图命令混合使用,绘制复合图形。例如:
也可以写成
连线标绘图本质上与散点图是一致的,以下两条命令语句是等价的:
同样,以下两条命令语句也是等价的:
Stata提供了包括一次拟合图形、二次拟合图形、局部加权回归平滑拟合图形等多种图形拟合,通过这些拟合图形可以快速判读数据背后的关系,对于探索数据关系有着重要的意义。
1.一次拟合图形
在绘制一次拟合图形时,首先通过因变量yvar与自变量xvar进行一元线性回归,其次通过得到yvar的拟合值(如hat)对xvar进行曲线标绘图,并复合原始数据的散点图。其命令语法格式为:
其中,选项options含义如表3-24所示。
表3-24 选项options含义
【例3-13】 一次拟合图形绘制示例。
绘制散点图(mpg与weight)及一次拟合图形(mpg和weight)的复合图形。在命令窗口中输入:
上述命令语句的功能也可以由以下命令语句实现:
根据分类变量foreign绘制复合图形,在命令窗口中输入:
图3-17 一次拟合图形绘制示例
2.二次拟合图形
在绘制二次拟合图形时,首先通过因变量yvar与自变量xvar及xvar的平方进行二次回归,其次通过得到yvar的拟合值(如hat)对xvar进行曲线标绘图,并复合原始数据的散点图。其命令语法格式为:
其中,选项options含义同一次拟合图形。
【例3-14】 二次拟合图形绘制示例。
在命令窗口中输入:
上述命令语句的功能也可以由以下命令语句实现:
根据分类变量foreign绘制复合图形,在命令窗口中输入:
图3-18 二次拟合图形绘制示例
3.局部加权回归平滑拟合图形
局部加权回归(lowess)平滑拟合图形是一种非参数拟合图形。其命令语法格式为:
其中,选项options含义如表3-25所示。
表3-25 选项options含义
续表
【例3-15】 局部加权回归平滑拟合图形绘制示例。
在命令窗口中输入:
图3-19 平滑拟合图形绘制示例
直方图又称柱状图,是一种统计报告图。在Stata中,绘制直方图的命令为histogram,其语法格式为:
二维绘图命令族中的直方图绘制命令语法格式为:
其中,discrete_options为分类变量可用选项;continuous_options为连续变量可用选项;common_options为命令通用选项。各选项含义如表3-26所示(针对twoway)。
表3-26 各选项含义
【例3-16】 直方图绘制示例1。
在命令窗口中输入:
图3-20 直方图绘制示例1
图3-20 直方图绘制示例1(续)
【例3-17】 直方图绘制示例2。
在命令窗口中输入:
图3-21 直方图绘制示例2
条形图可以直观地显示包括均值、中位数、各种分位数等在内的众多描述性统计量,在同一个条形图中可以显示多个变量的统计量。在Stata中,绘制条形图的命令为bar及hbar,其语法格式为:
此处变量yvars的定义为:
其中,stat为mean(均值)、median(中位数)、p1,p2,…,p99(各种分位数)、sum(和)、count(计数,不含缺失值的观测样本数)、percent(百分比)、min(最小值)、max(最大值)或其他统计量。percent是默认统计量,百分比通过varname来计算。
二维绘图命令族中的条形图绘制命令语法格式为:
其中,选项options比较复杂,可分为6类,如表3-27所示。
表3-27 选项options分类说明
【例3-18】 条形图绘制示例。
在命令窗口中输入:
图3-22 条形图绘制示例
图3-22 条形图绘制示例(续)
限于篇幅,其他常见图形的绘制命令(如area、contour、pie、dot等)及其具体选项含义可参考前文或帮助文件,这里不再展开介绍。
图形绘制完成之后,需要将图形保存并输出。在对当前图形进行保存前,所绘制的图形均暂存在内存中。如果要绘制另外一个图形,那么Stata会自动清除之前保留在内存中的图形。
保存的Stata图形文件的后缀为gph,文件中包含图形、数据甚至绘制该图形的命令。对保存在内存中的图形的基本信息进行显示,可以使用如下命令:
保存激活模式下的图形文件,可以使用如下命令:
例如,将图形文件保存为dingjbfile文件:
在绘图过程中保存图形文件,可以使用saving()选项:
将当前目录和当前内存中所有的图形文件与已命名的图形列出来,可以使用如下命令:
在Stata中,利用图形输出工具可以将图形输出到打印设备或将图形输出为其他格式的图形,以便于生成的图形与其他设备或图形、文字处理软件等的交互处理。
1.打印图形
对于已保存在存储介质中的图形文件,需要先读取图形,再打印;对于结果窗口中的图形,可以直接使用打印命令graph print将其输出到打印机中进行打印,命令如下:
查看打印参数的设置情况,可以使用如下命令:
2.输出为其他格式的图形
同其他常用软件一样,Stata也可以将生成的图形输出为多种格式。图形输出命令为:
其中,filename为要保存的图形文件名;suffix为图形文件名后缀,包括ps、eps、wmf、emf、pict、pdf、png、tif等。
当输出为其他格式的图形时,也可以直接在结果窗口中通过菜单命令或工具按钮进行保存,这与其他常用软件的操作相同,这里不再赘述。
Stata拥有强大的绘图功能,可以通过图形展示数据的分析结果,以便于操作者直观地理解数据的特点。在Stata中,常见图形的绘制命令相当简单。本章重点介绍了二维绘图命令族、非二维绘图命令族(如条形图、直方图等)的功能,这些功能是Stata的基本绘图功能,读者应熟练掌握。此外,本章还对图形的输出进行了简单介绍。