抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

数据可视化是 R 的主要应用之一。有许多 R 包可以实现该功能,ggplot2 是其中之一。ggplot2 实现了图形语法,即用来描述和构建图形的连贯性语法规则。而 ggplot2 包是 tidyverse 包的核心 R 包,因此需要下载并加载该包才能使用对应函数。

介绍

可以使用 package::function() 语法来使用 package 包中的 function() 函数。

可以访问 ggplot2 速查表 来查看详细信息。

绘图模板

ggplot2 绘图模板为:ggplot(data = <DATA>) + <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>)) 。多个几何图像叠加可以使用 + 来实现,形如:ggplot(data = <DATA>) + <GEOM_FUNCTION1>(mapping = aes(<MAPPINGS1>)) + <GEOM_FUNCTION2>(mapping = aes(<MAPPINGS2>)) + ...

模板中各部分使用加号 + 串联的形式很容易联想到 a + b + c + … 的格式,因此在实际应用中可以把各个部分赋值给 R 对象来实现分层管理

数据集

当使用的映射相同时,可以将映射写在 ggplot 函数中。即 ggplot(data = <DATA>, mapping = aes(<MAPPINGS>)) + <GEOM_FUNCTION1>() + <GEOM_FUNCTION2>() + ...ggplot(data = <DATA>) + <GEOM_FUNCTION1>(mapping = aes(<MAPPINGS>)) + <GEOM_FUNCTION2>(mapping = aes(<MAPPINGS>)) + ... 是相同的。

可以在 ggplot 函数中定义相同的映射,而不同的映射可以分别在各自的几何对象函数中定义,进而实现类似图层的表现效果。

se 参数的逻辑值可以决定是否添加置信区间数据,默认为 TRUE 。在 se = TRUE 的前提下,可以使用 value 参数指定置信水平,默认为 0.95 。

几何对象函数

几何对象函数决定了图的类型,几何对象是图中用来表示数据的几何图形对象。

函数 geom_point 可以创建点几何对象(散点图)。

函数 geom_smooth 可以创建平滑曲线几何对象(平滑曲线拟合图)。

函数 geom_bar 可以创建条几何对象(条形图)。

函数 geom_ablinegeom_hlinegeom_vline 可以分别创建斜参考线、水平参考线和竖直参考线。斜参考线的斜率和截距由参数 slopeintercept 给定,水平参考线和竖直参考线的截距由参数 yinterceptxintercept 给定。

函数 geom_freqpoly 可以创建频数多边形几何对象(频数多边形图)。binwidth 参数决定频数多边形的宽度。

函数 geom_histogram 可以创建矩形几何对象(直方图)。 binwidth 参数决定矩形的宽度。

函数 geom_boxplot 可以创建分箱几何对象(箱线图)。

函数 geom_count 可以创建计数重叠点几何对象(计数点图)。

函数 geom_bin2d 可以创建二维分箱计数几何对象(二维分箱计数热度图)。

图形属性映射

当数据集中的数据在某些属性上具有差别,并且想将它们稍作区分展示于同一图中时,可以根据指定的属性,进行图形属性映射。这一过程也可以被称为标度变换图形属性是指图中对象的可视化属性,包括数据点的大小、形状和颜色。

形状和颜色没有所谓的比较关系,因此属于无序图形属性;而大小具有比较关系,因此属于有序图形属性。将无序变量映射为有序图形属性时,R 会给出警告信息。

名称功能适用几何对象
color颜色映射(图例)point, smooth
size尺寸映射point, smooth
alpha透明度映射point, smooth
shape形状映射point
linetype线型映射smooth
group分组映射smooth
fill填充映射bar

其中,透明度和尺寸是有序图形属性,颜色和形状是无序图形属性,并且形状映射的数量为 6 个。

当图形属性想具体指定而不是使用映射方式时,图形属性变量的赋值需放置在 aes 函数外,与 mapping 参数并列,并用逗号隔开

手动设置图形属性,需要按照名称进行设置:

名称可选取值备注
color“red”, “blue”等grDevices::colors() 定义的字符串
size数值型值单位为毫米
alpha[0, 1]中的值数值越低越透明
shape0~25中的整数值0~14为空心形状,15~20为实心形状,21~24为填充形状,除了填充颜色由 fill 指定,其他颜色均由 color 指定

x 和 y 可以看做是不占用图例的图形属性映射,而是分别占用 x 轴和 y 轴

附加函数

除了标准模板,还可以向其中添加附加函数以实现某些功能,其结构为 ggplot(data = <DATA>) + <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>)) + <ADDTIONAL_FUNCTION> 。其中,<ADDTIONAL_FUNCTION> 为指定的附加函数。

分页

可以使用 facet_wrap 函数来创建表格的单变量分页,使用 facet_grid 函数来创建表格的双变量分页。例如 ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy)) + facet_wrap(~ class, nrow = 2)ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy)) + facet_grid(drv ~ cyl) 的输出分别为以下两图:

Rplot1

Rplot2

可以使用 . 来忽略掉对应维度的分页,例如 facet_grid(. ~ cyl) 和 facet_grid(drv ~ .) 分别对应一行多列和多行一列

坐标系

ggplot2 中默认的坐标系是笛卡尔平面直角坐标系,可以使用附加函数来实现其它坐标系。

  • coord_flip 函数可以交换 x 轴和 y 轴,常用于水平箱线图和 x 轴标签较长的情况。
  • coodr_polar 函数可以构建极坐标系。
  • coord_quickmap 函数可以为地图设置合适的纵横比。
  • coord_fixed 函数可以实现固定比例尺。

统计变换

统计图除了使用数据集中的原始数据作图之外,也有部分统计图使用经过处理的数据作图,例如条形图的计数(计数是通过统计计算获得的,不是数据集自带的)。这种转换处理原始数据以作图的算法被称为统计变换(stat)。常见的统计变换有:

  • 条形图、直方图、频率多边形图的分箱
  • 平滑曲线图的拟合
  • 箱线图的摘要统计量

几何对象函数使用的统计变换可以通过 stat 参数查看。由于每个几何对象函数都有默认的统计变换函数(反之亦然),因此可以使用对应的统计变换函数来替换几何对象函数。例如 geom_bar()stat_count() 在用法上一般是一样的,起到的效果也是一样的。但一般不会显式使用统计变换,除非有以下考量:

  • 需要覆盖默认的统计变换,这通过给 stat 变量赋值实现
  • 需要覆盖从统计变换生成的变量到图形属性的默认映射,这通过特定参数实现(具体查看几何对象函数帮助页的计算变量一节的内容)
  • 需要在代码中强调统计变换

位置调整

图标元素除了默认的排列方式外,也可以通过参数 position 来调整。常用的位置参数有:

  • "identity" 值表示直接显示,组内各元素前后重叠
  • "fill" 值表示等高堆叠,各元素组高度相等,组内各元素按数据值的相对大小前后堆叠
  • "dodge" 值表示并列放置,各元素组并排显示,各组内的元素也并排显示
  • "jitter" 值表示数据抖动,将具有相同 x 和 y 值的数据相互错开

jitter 的作用是向数据点添加一个微小的随机扰动,进而实现重叠点的分离。该操作用途广泛,因此 ggplot2 中有 geom_jitter() 来实现 geom_point(position = jitter)

图形分层语法

完整的图形分层模板如下:

1
2
3
4
5
6
7
8
ggplot(data = <DATA>) +
<GEOM_FUNCTION>(
mapping = aes(<MAPPINGS>),
stat = <STAT>,
position = <POSITION>
) +
<COORDINATE_FUNCTION> +
<FACET_FUNCTION>

其中七个 <> 包裹的部分是常用参数,从前到后分别为:数据集、几何对象函数、映射集合、统计变换、位置调整、坐标系函数和分面函数。

评论



This is a picture without description

This is a picture without description This is a picture without description This is a picture without description