搜索
查看: 572|回复: 0

[R] <R for Data Science> 读书笔记2 | 数据可视化

[复制链接]

12

主题

18

帖子

151

积分

注册会员

Rank: 2

积分
151
发表于 2018-9-10 09:20:54 | 显示全部楼层 |阅读模式
本帖最后由 冒刷 于 2018-9-16 21:37 编辑

每次须加载相应的R包,这里加载tidyverse包
[AppleScript] 纯文本查看 复制代码
library(tidyverse)

问题:大引擎的汽车是否较小引擎汽车更耗油?

mpg数据结构(mpg data frame)
[AppleScript] 纯文本查看 复制代码
ggplot2::mpg
命令调用mpg数据集,每一列是变量,每一行对应变量的观测值(标准数据结构)。displ是汽车的引擎大小,hwy是汽车引擎的燃油效率,效率越高,同等距离下油耗越低。

作图ggplot:
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy))
使用ggplot2包作图的通用语句结构
[AppleScript] 纯文本查看 复制代码
ggplot(data = <DATA>) + <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))

语句中依次填入数据,几何形状(geom_point()功能用于创建散点图scatterplot),最后输入展示图形所需参数。

针对此例填充语句得到的引擎大小和引擎燃油效率关系如下,可以看到,引擎越大,燃油效率越低,即同等距离下,大引擎汽车耗油更多。

上述关系图中试图分析右下角部分数据点离散于整体数据群的原因,
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x=displ, y=hwy, color=class))
使得每个数据点根据车子所属类别被分配不同颜色,而后可以从关系图中发现离散的点大多均为2-seater class
这些运动车系因车体小,引擎大而较大车体大引擎的车有相对高的燃油效率,符合实际。上述针对class赋予某变量特定特征便于离散变量区分比较的值称为scaling process by mapping it to an aesthetic的过程。类似地,class还可以通过赋予color,size, alpha, shape进行区分,但是离散型数据不建议使用这三种进行比较,且默认情况下,ggplot2一次只赋予6种不同shape对数据进行区分,若有多于6种数据类展示,则shape不够用。如下图的SUV没有相应的shape进行展示。
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x=displ, y=hwy, shape=class))

仔细区分两种语句格式
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x=displ, y=hwy, color=class))
ggplot(data = mpg) + geom_point(mapping = aes(x=displ, y=hwy), color="blue"))
语句1对应的关系图如下

语句2对应的关系图如下

通过比较两幅图可见,语句1是针对class变量分配不同颜色;语句2则是分配了全局变量,所有数据均为蓝色。即通过在aes()括号外指定color = "a character string", size = "xx mm", or shape = "number"指定特定属性的全局变量进行图形展示,可指定的shape number列表如下(ref. <R for Data Science> Fig 3.1):

补充:摘自www.biotrainee.com/thread-2736-1-1.html 小洁详解,stroke aesthetic变量用于指定轮廓特征,适用于散点图,21-24号形状。如
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x=displ, y=hwy, stroke = 1), shape=23)

3.5 分面:同一数据根据分类按不同画布展示数据,每一幅画布展示一个分类的数据亚集,称为facet。可以依据单个变量或组合变量进行分面展示。
使用单个变量展示,调用facet_wrap,格式如下
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point (mapping = aes(x =displ, y = hwy) ) + facet_wrap(~ class, nrow = 2)

注意:传递给facet_wrap的须为离散型变量。


使用两个变量展示,调用facet_grid,格式如下
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point (mapping = aes(x =displ, y = hwy) ) + facet_grid(drv ~ cyl)




亦可使用facet_grid按单个变量展示,只需将variable1 ~ variable2的格式改为. ~ variable2,即
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point (mapping = aes(x =displ, y = hwy) ) + facet_grid(. ~ cyl)




3.6 几何属性 Geometric, geom:用于分配图形属性,如散点图geom_point,直线geom_abline,曲线geom_smooth,箱式图geom_boxplot,柱形图geom_bar等,还有geom_text功能用于添加标注。
作图的示例
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))


[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_smooth(mapping = aes(x = displ, y = hwy, color = drv), show.legend = FALSE)

[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy)) + geom_smooth(mapping = aes(x = displ, y = hwy))


[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + geom_point(mapping = aes(color = class)) + geom_smooth()


[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + geom_point(mapping = aes(color = class)) + geom_smooth(data = filter(mpg, class == "subcompact"), se = FALSE)


注意:
se=FALSE时,置信区间不显示,默认情况下会显示,即在图形周围形成一段阴影。

这周时间上不太够用,这章争取明天补完!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:基因突变种类和癌症的关系
下一篇:R数据科学啃书团-readr
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-6-16 19:43 , Processed in 0.029793 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.