Logo
Section 1 / 6

从 base graphics 到 ggplot2

了解 ggplot2 包是什么以及它为何受欢迎。

导入

从 base graphics 到 ggplot2

了解 ggplot2 包是什么以及它为何受欢迎。

R 中的 base graphics 包概述

base graphics 包包含在基础 R 分发的 graphics 包中。它常用于创建数据图形,系统提供了许多可设置和操作的全局参数,以生成数据图表。

在介绍 ggplot2 包之前,我们先快速了解如何使用 base graphics 包创建图表。R 中的 base graphics 包提供了一系列高级函数,例如:

  • plot():这是一个通用函数,可用于绘制多种类型的图表。
  • boxplot():用于创建单个或并排的箱线图。
  • hist():用于创建直方图。
  • qqplot()、qqnorm() 和 qqline():用于构建分位数图。
  • dotchart() 和 stripchart():用于创建点图。
  • image()、contour() 和 persp():用于创建三维图形。
  • pairs():用于绘制散点图矩阵。

此外,base graphics 包中还包含许多简单函数,如 lines()、points()、symbols()、arrows() 等,可用于数据可视化。

现在,让我们通过几个示例来理解如何使用 base graphics 包创建数据可视化。

首先,我们使用以下代码生成一个包含随机数的数据集:

1# 通过设置种子以获得相同的结果 2set.seed(1) 3# 定义 x、y、z 列并填充随机数据 4x <- round(runif(100, min = 10, max = 45)) 5y <- round(runif(100, min = 5, max = 65)) 6z <- round(runif(100, min = 15, max = 85)) 7# 生成包含五个类别的 cat 列 8cat <- rep(c('A', 'B', 'C', 'D', 'E'), times = 20) 9# 根据生成的列创建数据框 10data <- data.frame(x, y, z, cat) 11# 打印数据框的前几行 12data

直方图

可以使用 graphics 包中的 hist() 函数从上述数据集 data 绘制一个简单的直方图。

运行以下代码以生成直方图:

1# 生成一个简单的直方图 2hist(data$x)

散点图

另一个可以尝试的例子是使用 data 数据集绘制散点图。以下示例将使用 plot() 命令绘制 y 和 z 列中的数据点。

1# 生成一个简单的散点图 2with(data, plot(y, z))

上述散点图可以重新绘制,以通过颜色包含不同类别的信息。我们还可以通过单独的一行代码添加图例。

1# 按组绘制散点图 2mycol <- c(A = "blue", B = "red", C = "green") 3plot(y ~ z, data = data, col = mycol[cat]) 4# 添加图例 5legend("bottomright", 6 legend = c("A", "B", "C"), 7 col = c(4, 2, 3), 8 pch = c(17, 18, 20), 9 bty = "n", 10 pt.cex = 2, 11 cex = 1.2, 12 text.col = "black", 13 horiz = FALSE, 14 inset = c(0.1, 0.1, 0.1))

base graphics 包的绘图过程分为两个阶段:

  • 初始化新图表
  • 对已有图表进行标注

R 中的通用 plot() 函数接受两个向量(分别对应 x 轴和 y 轴坐标)。

接下来,我们来看一些用于 base graphics 绘图的重要全局参数:

  • pch:绘图符号参数(默认为开放圆圈)。
  • lty:线条类型参数(默认为实线,也可为虚线、点线等)。
  • lwd:线条宽度参数(以整数倍定义)。
  • col:绘图颜色参数(可为数字、字符串或十六进制代码)。
  • xlab:x 轴标签的字符字符串。
  • ylab:y 轴标签的字符字符串。

尽管 base graphics 包有助于创建简单可视化,但自定义这些图表需要额外的代码行,增加了复杂性和时间成本。此时,ggplot2 包对初学者以及已使用基础 R 图形的用户来说是一个更好的选择,因为它减少了为相同类型的图表编写多行代码的需求。

我们已经了解了在 R 的 base graphics 包中构建简单可视化的思路。

接下来,我们将探索 ggplot2 包,并学习如何使用该包生成不同的数据可视化。

tidyverse 包简介

tidyverse 包是一组专为数据科学设计的 R 包集合,它们共享相同的设计理念。这些包服务于不同的数据科学需求,如数据探索、数据处理、可视化等。在核心 tidyverse 包中,我们可以找到以下知名包:

  • readr 包用于导入和读取矩形(表格)数据。
  • tidyr 包用于整理数据。
  • dplyr 包用于数据转换。
  • tibble 包用于处理数据框。
  • stringr 包用于字符串操作。
  • purrr 包用于函数与向量的操作。
  • forcats 包用于处理因子及数据集中的分类变量。
  • ggplot2 包用于数据探索与可视化。

除了上述包之外,tidyverse 包还提供了多个协同工作的其他包。有关 tidyverse 包的更多信息可参考其官方网站。

至此,我们已具备了 R 中数据可视化的必要背景知识。这引出了本课程的核心——ggplot2 包。

什么是 ggplot2 包?

ggplot2 包是一个广受欢迎的数据可视化工具,被视为 R 中 base graphics 包的替代方案。它是由 Hadley Wickham 于 2005 年开发的一个开源声明式包,用于在 R 中生成各种类型的数据可视化。ggplot2 中的“gg”代表“图形语法”(grammar of graphics),这是一种用语法描述图表的概念。ggplot2 包是 Leland Wilkinson 所著《图形语法》一书中概念的应用,其目标是建立一套广泛统一的数据呈现原则。

ggplot2 包包含几个基本函数,使其易于理解和使用。这些函数可以通过不同方式组合,基于图形语法创建多种视觉效果。

为什么 ggplot2 包如此流行?

ggplot2 包能够快速设定合理的默认值,使用户可以轻松创建美观且无需繁琐操作的数据可视化,例如自动添加图例。这些默认设置让用户无需掌握底层图形语法即可使用 ggplot2。

总体而言,这种设计意味着用户可以专注于构建最能揭示数据故事的图表,而无需担心如何让图表看起来美观吸引人。

然而,掌握图形语法的知识有助于基于概念构建图表,而非依赖记忆命令和选项。这有助于创建更优、更高质量的图表。

ggplot2 包的声明式风格表明,数据可视化可以逐步构建,即逐层添加。例如,可以从包含原始数据的一层开始,然后逐步添加注释层等。这种思维方式与我们分析数据的方式相似。因此,ggplot2 包使得构建复杂图形变得容易且具有迭代性。

欢迎来到本课程

R 中的图形语法