R语言系列第六期:②R语言基本绘图(下)
点击蓝字关注我们
有许多类型的图形对描述两变量间的关系很有帮助。
先把上一节的数据展示一下,方便回顾和利用:
YEAR(1960-2010):数据收集的年代。
UNEMPLOY:居民失业率,按百分比计算。
SURPLUS:联邦财政预算的盈余(正向)或亏损(负向),按当年国民生产总值的百分比计算。
PARTY:数据收集年份中总统所代表的的政党,其中R代表共和党,D代表民主党。
> year
[1] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971
[13] 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983
[25] 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995
[37] 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
[49] 2008 2009 2010
> unemploy
[1] 5.5 6.7 5.5 5.7 5.2 4.5 3.8 2.8 3.6 3.5 4.9 5.9 5.6 4.9 5.6
[16] 8.5 7.7 7.1 6.1 5.8 7.1 7.6 9.7 9.6 7.5 7.2 7.0 6.2 5.5 5.3
[31] 5.6 6.8 7.5 6.9 6.1 5.6 5.4 4.9 4.5 4.2 4.0 4.7 5.8 6.0 5.5
[46] 5.1 4.6 4.6 5.8 9.3 9.6
> surplus
[1] 0.1 -0.6 -1.3 -0.8 -0.9 -0.2 -0.5 -1.1 -2.9 0.3
[11] -0.3 -2.1 -2.0 -1.1 -0.4 -3.4 -4.2 -2.7 -2.7 -1.6
[21] -2.7 -2.6 -4.0 -6.0 -4.8 -5.1 -5.0 -3.2 -3.1 -2.8
[31] -3.9 -4.5 -4.7 -3.9 -2.9 -2.2 -1.4 -0.3 0.8 1.4
[41] 2.4 1.3 -1.5 -3.5 -3.6 -2.6 -1.9 -1.2 -3.2 -10.0
[51] -8.9
> party
[1] "R" "R" "D" "D" "D" "D" "D" "D" "D" "D" "R" "R" "R" "R" "R"
[16] "R" "R" "R" "D" "D" "D" "D" "R" "R" "R" "R" "R" "R" "R" "R"
[31] "R" "R" "R" "R" "D" "D" "D" "D" "D" "D" "D" "D" "R" "R" "R"
[46] "R" "R" "R" "R" "R" "D"
A. 散点图
当两个变量均为定量变量时即可使用散点图。用两个变量分别记录物品的两个特征,散点图可在直角坐标图上描绘变量组成的有序数对。(回归模型使用过)
> plot(surplus,unemploy,type="p",ylab="unemployment")
#Tips:通过图形显示,unemploy和surplus之间的关系为:在盈余较大的年份中,伴有较低的失业率。但是不要急于下结论。这种关系并不一定是因果关系。可能这两个变量都是随其他的“潜”变量的变动而改变,也可能经济变量对政府政策的响应存在重要的时间滞后期。
可以说,散点图是科研中的战马,在原创科研报告中,常会出现大量的散点图及其他双变量图形。
B. 并列箱线图
下面我们来看一下总统的政党派别与经济变量之间的关系如何。若要依据属性进行分类后,对定量变量进行比较,那么绘制并列箱线图是一个有用的方法。对属性变量分类后,每个箱线图中仅包含特定类别中定量变量的几个数字。我们按变量party分类,绘制unemploy的并列箱线图。
> boxplot(unemploy~party,range=0,names=c("Democratic","Republican"),boxwex=0.5,ylab="Civilian unemployment")
#Tips:可发现民主党总统与共和党总统预算年份中,失业率有非常明显的差异。当然,两部分数据有部分重合,但民主党执政的年份中,其失业率整体低于共和党。图形展示了定量变量(unemploy)和属性变量(party)之间的关联。若不存在关联或几乎不存在关联,则每个箱线图的五个特征点的高度应该差不多。
#Tips:箱线图语句的参数如下,其关键参数为unemploy~party,它是R参数中常见语句,大致意思是“按照执政党划分失业率”得到的结果是,箱线图函数根据不同的政党类别分别绘制图形。参数range=0将图的末端(须)延长至最大值和最小值。有时由于产生机制可能不同于其他原始数据,数据集中会含有“离群值”或极端的数据点。根据离群点的判断准则,箱线图的另一种形式仅将末端延伸到准则所定义的位置,并在末端外将意思离群点用符号单独标记。参数names=可对输出图形中各分类型变量的类别命名,参数boxwex=0.5将箱子的宽度设置为默认宽度的一半。
C. 条形图
条形图普遍应用于商学和管理学中,而在自然科学中并不经常用到。在R中,条形图很容易绘制。在最简单情况下,这些绘制图形的命令仅需要一个数值型向量作为参数。
我们用条形图并列展示民主党和共和党预算年的失业率均值。在R中,条形图命令barplot()需要一个数值型变量来对其绘制条形图。如果有多个数值那么会绘制多条结果,所以首先要计算出两个变量的均值,并将其组成向量进行绘图。
下面要设法将全部民主党和共和党在预算年的失业率从unemploy中分离出来。我们可以通过下面的程序代码来实现:
> unemp.D=unemploy[party=="D"]
> unemp.R=unemploy[party=="R"]
> D.mean=mean(unemp.D)
> R.mean=mean(unemp.R)
> mns=c(D.mean,R.mean)
> mns
[1] 5.247619 6.463333
> barplot(mns)
得到一个看上去很单调的条形图。想要更窄的条形,或添加标签,或增大条形间距,或带标签的更长的纵轴的话,可以进行如下修改:
> barplot(mns,xlim=c(0,1),width=0.1,ylim=c(0,7),
+ ylab="average unemployment",names.arg=c("Dem","Rep"),space=2)
#Tips:xlim规定了x轴的起止点。当然,这里的x轴中没有标注数值。只是用来区分两组。Width设定条形宽度,使得条形的宽度为默认设置的0.1倍,参数ylim设定y轴的范围。names.arg为每个条形添加字符串作为标签。最后,参数space=2将条形的间距设置为条形宽度的2倍。
D. 饼图
饼图与条形图不同的是它重点展示的是组内的构成比,绘制饼图的pie()以向量为参数,其中向量中包含需要比较的数字。数字的相对大小由图中的扇形表示。饼图将总值作为整体,对各部分的百分比进行比较。在经济数据中,或许可看一下民主党和共和党在预算年中各自所占的百分比。
> num.yrs=c(length(unemp.D),length(unemp.R))
> num.yrs
[1] 21 30
> pie(num.yrs)
我们得到的图形看上去只提供了有限信息,可以在图形上加上一些描述性的标签。
> pie(num.yrs,labels=c("Democratic","Republican"))
小结
上一部分和这个部分是给大家介绍了简单的画图操作,包括各种常用的图形的展示,在本章基本的绘图中,没有讲解色彩的使用。只有在饼图中扇形会自动添加默认颜色,除此之外,其他的颜色大多都是黑白的。我们会在之后的内容中为大家介绍颜色的使用。当然各种图形的设定肯定不止我们所列出来的这些内容,更多的参数和设定需要大家自己查阅手册或检索。
我们作图系列的第一部分内容简单绘图功能就到此为止了。我们高级绘图见吧。
参考资料:
1.《R语言统计入门(第二版)》 人民邮电出版社 Peter Dalgaard著
2.《R语言初学者指南》 人民邮电出版社 Brian Dennis著
3. Vicky的小笔记本《blooming for you》by Vicky