【数据科学笔记】第四章 数据可视化

【数据科学笔记】第四章 数据可视化


文章目录

  • 【数据科学笔记】第四章 数据可视化
  • 前言
  • 4.1 高阶绘图工具————ggplot2
    • 4.1.1 快速绘图
    • 4.1.2 使用图层构建图像
    • 4.1.3 分面
  • 总结

前言

博客已上传为PDF资源,系统没办法直接开源,只有关注帅气的不二程序猿才能下载。(不想关注可以私信或评论,备注资源名称可以获取)

资源链接 (PDF格式):【数据科学笔记】第四章 数据可视化.pdf 983KB

资源链接 (HTML格式):【数据科学笔记】第四章 数据可视化rstudio.html 1.68MB

数据可视化是指将结构的或非结构的数据转换成适当的可视化图表,可视化能够将数据更加直接的方式展示出来,使得数据从客观更有说服力。
R语言有自己的基础图形系统,如 graphics 包、 grid 包或者 lattice 包。相比于R语言自带的基础作图函数,如 plot() 能表现出更加丰富化、 多样化。

4.1 高阶绘图工具————ggplot2

ggplot2 包是一个有着一套完整图形语法支持的软件包,该绘图包的特点在于定义各种底层组件来合成复杂的图形,而不是直接定义的图形。

通常 ggplot2 生成图形的必须步骤如下:

  1. 定义和出土数据,采用 ggplot2 生成一个空的绘图对象。
  2. 确定图形形状。
  3. 采用 aes() 函数指定用来表示数据值的形状特征。

4.1.1 快速绘图

ggplot2 中的函数 qplot() 和传统绘图中的 plot() 功能类似。

(一)散点图
基本的散点图绘制可以用 qplot()

library(ggplot2)
data(mpg)
# qplot(displ , cty , data = mpg) 
# qplot(displ, cty, data = mpg, colour=class)
# qplot(displ,cty, data = mpg,shape= fl)
qplot( displ , cty , data = mpg , colour = class , shape = fl )

【数据科学笔记】第四章 数据可视化_第1张图片 mpg数据集,发动机排量(升)和每加仑英里数的散点图

(二)条形图和箱线图

对于离散型变量,频数一般使用条形图来绘制,这里直接使用 geom = 'bar' 即可。
例如,汽车气缸数目的条形图:

qplot(cyl , data = mpg , geom = 'bar')

【数据科学笔记】第四章 数据可视化_第2张图片 汽车气缸数目的条形图

如果想要描述持续变量在不同类别下的变化情况可以使用箱线图,只需要设置参数 geom = 'boxplot'

qplot(as.factor(cyl), displ, data = mpg, geom = 'boxplot')

【数据科学笔记】第四章 数据可视化_第3张图片

不同气缸数目下发动机排量箱线图

对于连续型数据,我们最常见的是直方图和密度曲线图,只需要修改参数 geom = 'histogramgeom = 'density' 在此不做举例说明。

(三)时间序列图

对于时间序列的数据所绘制的图形称为线条图, 它只通过添加参数 geom = 'line'

# 使用economics 数据集绘制一个关于个人存储的时间序列图
qplot (date , psavert , data = economics , geom = 'line')

【数据科学笔记】第四章 数据可视化_第4张图片

4.1.2 使用图层构建图像

上面介绍了使用 qplot() 函数绘制基础图形, 但是 qplot() 有它的局限性,因为它只能使用一个数据集和一组图形属性映射。可以使用图层来解决这个问题,每个图层都可以有自己的数据集和图形属性映射,附加的数据元素可以通过图层添加到图形中。

一个图层由五个部分组成:
(1)数据,必须是一个数据框 (dataframe) ,在绘图结束后可以修改。
(2)图形属性映射,设定数据集中变量如何映射到改图层的图像属性。
(3)几何对象,指定使用那种几何来绘图。
(4)统计变换,对原数据做一些有用的统计变换。
(5)位置调整,通过调整元素位置避免图像重合。
主要讲解前三个部分

(一) 数据
ggplot2 对于数据集的邀请是必须是一个数据框。 ggplot2 会从我们指定的数据框中提取绘图所需变量,生成新的数据集。用 mpg 数据集为例。

(二) 图形属性映射
1. 创建绘图对象
当我们调用 ggplot2 函数时,可以手动创建图层对象。主需将图层属性和变量放到 aes() 函数的括号里。

# 设定了默认映射, 但这个图层未添加图层。
p <- ggplot ( mpg , aes ( displ , cty , colour = class ) )

2. 图形属性
aes() 函数用来将数据变量映射到图形中,在上面例子中 aes ( displ , cty , colour = class )x 坐标映射到 disply 坐标映射到 ctycolour 映射到class ,这和 qplot() 用法一致。

3. 图和图层
默认的图层属性映射可以在图形对象初始化的时候设定,后可以通过 + 进行修改。

>>>p <- ggplot( mpg )
>>>summary( p )
data: manufacturer, model, displ, year, cyl, trans, drv, cty,
  hwy, fl, class [234x11]
  
  
>>>p <- p + aes ( displ , hwy )
>>>summary( p )
data: manufacturer, model, displ, year, cyl, trans, drv, cty,
  hwy, fl, class [234x11]
mapping:  x = ~displ, y = ~hwy
faceting: <ggproto object: Class FacetNull, Facet, gg>

4. 设定和映射
我们还可以在图层参数里设置一个单一值, 如 colour = 'green' 。 下面举例用图层里的 colour 参数设定颜色。

p <- ggplot( mpg , aes(displ, hwy))
p + geom_point( colour = 'green')

【数据科学笔记】第四章 数据可视化_第5张图片

这里将 colour 映射到 green ,实际上首先创建了只有green 字符的变量,然后将colour 映射到新的变量上。 因为这个新变量的值是离散的,所以默认的颜色标度将使用色轮上等距的颜色,并且此处新变量就一个值,因此这个颜色就是桃红色。

p + geom_point( aes(colour = 'green'))

【数据科学笔记】第四章 数据可视化_第6张图片

(三) 几何对象
几何图形对象( 简称geom ),它决定了生成的图像类型。
有些几何对象主要在它们参数化的方式上有所不同。例如,矩阵几何对象( rect geom ), 设定的是它的上( ymax )、 下( ymin )、 左( xmin )、 右( xmax )位置。
下面列出部分常用几何对象的图形属性。

几何对象 描述 图形属性
geom_point() 数值符号 x , y , sahpe , file
geom_line() 直线(按x排序) x , y , linetype
geom_path() 直线(按原始排序) x ,y , linetype
geom_text() 文本标签 x , y , angle , hjust , vjust
geom_rect() 矩阵 xmin , xmax , ymin , ymax , fill , linetype
geom_polygon() 多边形 x , y , fill , linetype
geom_segment() 线段 x , y , xend , yend , linetype
geom_bar() 条状图 x , fill , linetype , weight
geom_histogram() 直方图 x , fill , linetype , weight
geom_boxplot() 箱线图 x , y , fill , weight
geom_density() 密度图 x , y , fill , linetype
geom_contour() 等高线图 x , y , fill , linetype
geom_smooth() 光滑曲线 x , y , fill , linetype
All color , size , group

4.1.3 分面

分面能够帮我们快速分析出数据各子集模式的异同。ggplot2 提供两种分面类型,网格型( facet_grid ) 和封装型( facet_wrap ) 。
分面生成一个二维的网格面板, 面板的行与列通过变量来定义。本小结使用 mpg 数据集的子集来进行展示。

(一)网格分面
1. 不分面
这里因为 mpg 数据集中气缸数目 cyl 的值为 5 的观测数目极少,暂时舍去, 将其余的数据作为进行分析的子集

submpg <- subset( mpg , cyl != 5 )
qplot (cty , hwy , data = submpg ) + facet_null() # 不进行分面

【数据科学笔记】第四章 数据可视化_第7张图片

2. 一行多列

qplot (cty , hwy , data = submpg ) + facet_grid( . ~ cyl)

【数据科学笔记】第四章 数据可视化_第8张图片

3. 一列多行

qplot(cty , data = submpg, geom = 'histogram' , binwidth = 2 ) + facet_grid(cyl ~. ) # 一列多行

【数据科学笔记】第四章 数据可视化_第9张图片

4. 多行多列

qplot( cty , hwy , data = submpg ) + facet_grid( drv ~ cyl ) # 多行多列

【数据科学笔记】第四章 数据可视化_第10张图片

(二) 封装分面
facet_wrap 首先生成一个唱的面板条块,然后将它封装在二维面板中。

ggplot(mpg ,aes(displ , cty )) + geom_point() + facet_wrap( ~ cyl , nrow = 2)

【数据科学笔记】第四章 数据可视化_第11张图片

总结

有的知识点比较抽象,需要多看、多试、多动手才能更好的理解代码的含义。

你可能感兴趣的:(数据科学-R语言,r语言,数据分析,数据可视化,恰饭,经验分享)