作者:丁点helper 


上篇文章利用泰坦尼克号沉船事件中乘客的存活情况介绍了描述性数据分析,计算了不同舱位乘客的幸存率,今天我们来看看如何用图像来直观表达。

我们先来简单复习一下titanic.csv的内容。


# 导入数据
titanic <- read.csv("//Users//Desktop//titanic.csv",header = TRUE) 
names(titanic) # 查看titanic中的变量名
head(titanic)  # 查看titanic前6行


上篇文章计算的不同舱位乘客的死亡与幸存人数如下:


table(titanic$survived,titanic$pclass)
                1st 2nd 3rd  
died         123 158 528  
survived   200 119 181


不同舱位生存率:


survpct=paste(round(tab1[2, ]/apply(tab1,2,sum)*100,2),"%",sep="")
survpct
[1] "61.92%" "42.96%" "25.53%"


如果我们想直观地描述不同舱位乘客的幸存率,可以用下面的做法:

绘制柱状图


barplot(table(titanic$survived,titanic$pclass))


barplot()是绘制柱状图的函数,该函数括号中的命令为绘图所需的数据,就是前面我们计算过的不同舱位死亡及幸存者人数。

r语言泰坦尼克号数据获取 r语言titanic数据集_图例

柱状图的颜色也可调整,下面的代码中,col是更改柱状图颜色的命令:


barplot(table(titanic$survived,titanic$pclass), 
        col=c("yellow","dark blue"))


r语言泰坦尼克号数据获取 r语言titanic数据集_图例_02

每个舱位死亡与幸存人数柱子的排列方式也可调整,beside为改变柱状图排列方式的命令;beside=T意为两个柱子并排,beside=F意为两个柱子上下叠放。


barplot(table(titanic$survived,titanic$pclass),
        col=c("yellow","dark blue"), beside=T)


r语言泰坦尼克号数据获取 r语言titanic数据集_图例_03

至此,我们已经可以将数字转变为直观的图像了,但是黄色和蓝色的柱子分别代表幸存者还是死亡者呢?此外,图像的标题等重要信息也未标示出来,图像的可读性还需要通过下面的步骤来提升:

设置图例、标题、坐标轴标签等

做法比较简单,在上面代码的基础上,增加一些命令即可:


barplot(table(titanic$survived,titanic$pclass), 
        col=c("yellow","dark blue"),
        beside=T, legend=T, args.legend=list(x="topleft"),
        main="Survival (Pct) by Passenger Class", 
        xlab="Class",ylab="Count",
        ylim=c(0,600))


legend为设置图例的命令;args.legend为设置图例位置的命令;

main为设置图标题的命令;

xlab、ylab分别为设置x轴和y轴名称的命令;

ylim为设置y轴范围的命令。

r语言泰坦尼克号数据获取 r语言titanic数据集_ide_04

从这个图像可以清晰地看出,一等舱的幸存者人数为三个舱位中最多的,而三等舱的死亡者人数远高于其他两个舱位。但是这个图像还缺少一个信息,就是各舱位的存活率,我们可以在每个舱位的柱子上面标记一下:


text(c(2,5,8),c(250,250,570),survpct, cex=1.2)


text()为给图片中增加文字的函数。

其中前两个命令为文字的位置信息,第一个命令为文字设置x轴方向的位置信息,c(2,5,8)表示将文字分别放置在x取值为2,5,8处。

第二个命令为文字增加y轴方向的位置信息,c(250,250,570)表示将其分别放置在y取值为250,250,570处。

第三个命令为文字的具体内容,survpct是之前程序的运行结果,为一、二、三等舱乘客的幸存率。

第四个命令cex为文字字号,默认值为1,此处设置为1.2,意为比默认字号大20%。

r语言泰坦尼克号数据获取 r语言titanic数据集_柱状图_05

以上代码默认标题、x轴、y轴的文字均为英文,但有时我们也需要将其设置为中文,此时只需在上面这段代码中增加一个『字体 (family)』命令:将图片中的文字设置成中文。


barplot(table(titanic$survived,titanic$pclass), col=c("red","blue"), beside=T, legend=T, args.legend=list(x="topleft"), main="不同舱位乘客幸存数(率)", xlab="舱位",ylab="人数",family = "SimHei", ylim=c(0,600))


family命令需要赋值字体的英文名称,本文将字体设置为"SimHei",即黑体。

r语言泰坦尼克号数据获取 r语言titanic数据集_ide_06

此处还可设置其他字体,以下链接中总结了常见中文字体的英文名,大家可根据自己的需要选择。

r语言泰坦尼克号数据获取 r语言titanic数据集_ide_07

部分字体中英文名称