专栏首页百味科研芝士R语言系列第六期:②R语言基本绘图(下)

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

本文分享自微信公众号 - 百味科研芝士(keyanzhishi)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图解Kafka消息是被怎么存储的?

    在本文中,我们来了解下Kafka是如何存储消息数据的。了解了这些,有助于你在遇到性能问题的时候更好地调试,让你知道每个broker配置实际上所起的作用。那么,K...

    ImportSource
  • 人工智能、隐私和机器人

    全名叫做《爱,死亡和机器人》(Love, Death&Robots),每一集都是独立的动画短片,平均时长只有15分钟,我特别喜欢其中几集关于机器人的科幻短片。套...

    统计学家
  • 只有程序员才能读懂的西游记

    就如图中所示,真经所藏之处,在于云端。佛祖所管辖之下,有四个区域Region,称为四大部洲, 一是东胜神洲,二是南赡部洲,三是西牛贺洲,四是北俱卢洲。

    纯洁的微笑
  • Redis常用命令、5种数据类型的内部编码实现以及实用场景

    相信绝大部分人,应该是99%的人都知道Redis的5种的基本类型、它们分别是:字符串、哈希、列表、集合、有序集合,就如同下图这样:

    Java学习录
  • len(x) 击败 x.len(),从内置函数看 Python 的设计思想

    它们预先定义在内置命名空间中,开箱即用,所见即所得。Python 被公认是一种新手友好型的语言,这种说法能够成立,内置函数在其中起到了极关键的作用。

    Python猫
  • 面试题,如何在千万级的数据中判断一个值是否存在?

    当你看到这个标题的时候,你也许会想我可以使用hashmap之类的来存储值,然后get就是了。又或者把数据存在数据库里然后去判断就可以了。

    ImportSource
  • Spring Boot 中的响应式编程和 WebFlux 入门

    Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕。

    纯洁的微笑
  • Tomcat 性能调优之 JVM 调优

    Tomcat、Jetty、GlassFish 等等这系列 Web容器/应用服务器,虽然做为容器,提供的是一个 Java Web 的运行时环境,以支持Servle...

    纯洁的微笑
  • 从对ML一窍不通到斩获AT等special offer,拿下大厂算法岗就靠它了

    对于很多计算机专业的毕业生来说,大部分都还处于迷茫期,由于大学时的大部分时间都可能在划水,导致不知道现在如何准备就业面试,想去做 AI 但对自己的实力又没有信心...

    AI科技大本营
  • 如何写出你的第一个递归函数?

    但编程里面有一些术语或者思想或者理论,在现实中不容易找到类比的东西,此时初学者就很难理解了。

    青南

扫码关注云+社区

领取腾讯云代金券