Logo
Section 1 / 6

散点图

学习如何构建散点图,并探索 ggplot2 中数据可视化各个方面的内容。

导入

散点图

学习如何构建散点图,并探索 ggplot2 中数据可视化各个方面的内容。

数据可视化的重要概念

要使用 ggplot2 创建数据可视化,我们需要熟悉以下内容:

  • 数据可视化的基本概念
  • 图形语法理论
  • 图形语法的组成部分
  • 用于在 R 中操作数据集的一些关键 dplyr 命令
  • 可用的 ggplot2 支持包

接下来,我们将学习如何在 ggplot2 中创建散点图并对其进行自定义。

在 ggplot2 中的散点图

散点图中的每个点表示两个不同数值变量的取值。每个点在横轴和纵轴上的位置代表该数据点的数值。散点图常用于揭示变量之间的关系以及识别数据中的模式。

以 R 内置数据集中的 mpg 数据集为例。

我们首先导入 ggplot2 包,并打印数据集的前10行,代码如下:

1library(ggplot2) 2head(mpg, n = 10)
  • 第1行: 使用 R 中的 library() 命令导入 ggplot2 包。
  • 第2行: 使用 R 中的 head() 命令,并指定行数 n = 10,以显示数据集的前10行。

以下是创建散点图的基本 ggplot2 代码:

1ggplot(mpg) + 2 geom_point(aes(x = displ, y = hwy))
  • 第1行: 使用 ggplot() 函数初始化一个新的 ggplot 对象,并传入 mpg 数据集名称。通过 + 操作符向 ggplot 对象添加图层。
  • 第2行: 使用 geom_point() 函数创建散点图。接着使用 aes() 函数将变量映射到视觉属性,其中 x 和 y 分别映射到 displ 和 hwy 变量。

注意: 以上两行代码的解释在后续示例中保持不变。

默认的散点图仅包含黑色点。我们可以通过在 color 参数中指定 十六进制颜色值 或 颜色名称 来更改点的颜色。

1ggplot(mpg) + 2 geom_point(aes(x = displ, y = hwy), 3 color = '#0b7a75')
  • 第3行: 使用 color 参数并提供十六进制颜色代码,以指定散点图上点的颜色。

注意: color 参数应放在 aes() 函数外部。

更改数据点的形状

我们还可以使用 shape 参数来更改数据点的形状。下面的代码尝试将散点图中点的形状进行更改:

1ggplot(mpg) + 2 geom_point(aes(x = displ, y = hwy), 3 shape = 4)
  • 第3行: 使用 shape 参数并指定形状编号 4。这决定了点的形状,即散点图上的所有点都将呈现为 十字 形状。

由于所有点使用单一颜色、相同大小和形状,此图形难以解读。

分组散点图

现在,我们将通过指定 drv 变量来创建分组散点图,该变量表示汽车是前轮驱动、后轮驱动还是四轮驱动(数据集中用 f、r 和 4 表示)。该图表将默认带有图例。

我们还将调整点的大小并指定自定义颜色,如下所示:

1ggplot(mpg) + 2 geom_point(aes(x = displ, y = hwy, 3 color = drv), 4 size = 2) + 5 scale_color_manual(values = c("#0b7a75", "#5DA9E9", "#03045E"))
  • 第3行: 使用 color 参数指定散点图上点的颜色。drv 变量决定点的颜色,即散点图上的点将根据 mpg 数据集中 drv 变量的值进行着色。
  • 第4行: 使用 size 参数并设为 2,通过数值改变点的大小。
  • 第5行: 使用 scale_color_manual() 函数指定自定义颜色。

注意: scale_color_manual() 和 scale_fill_manual() 两个函数都具有可选的美学参数,可用于通过一次函数调用定义 color 和 fill 参数的美学映射。

此处,我们通过在 geom_point() 函数中使用 size 参数指定数值来改变点的大小。我们也可以使用数值或根据另一个变量的值来调整点的大小。

例如,这里我们将 mpg 数据集的 drv 变量赋给 size,使点的大小根据 drv 变量的值变化。

1ggplot(mpg) + 2 geom_point(aes(x = displ, y = hwy, 3 color = drv, 4 size = drv)) + 5 scale_color_manual(values = c("#0b7a75", "#5DA9E9", "#03045E"))
  • 第3行: 使用 color 参数指定散点图上点的颜色。
  • 第4行: 使用变量而非数值作为 size 参数,以改变点的大小。drv 变量决定点的大小,即散点图上点的大小将基于 mpg 数据集中 drv 变量的值。
  • 第5行: 使用 scale_color_manual() 函数指定自定义颜色。

然而,由于数据点大小的变化,许多点出现重叠,导致可视化效果难以阅读。因此,我们可以使用图表中的 alpha 参数调整数据点的透明度,以减少重叠效应,并使底层点可见。

调整数据点的透明度

alpha 参数用于改变颜色的透明度。它接受 0 到 1 之间的数值(0 表示完全透明,1 表示不透明)。我们可以根据需求选择合适的 alpha 值。

1ggplot(mpg) + 2 geom_point(aes(x = displ, y = hwy, 3 color = drv), 4 alpha = 0.5, 5 size = 3) + 6 scale_color_manual(values = c("#0b7a75", "#5DA9E9", "#03045E"))
  • 第3行: 使用 color 参数根据 drv 变量指定散点图上点的颜色。
  • 第4行: 使用 alpha 参数调整点的透明度。值 0.5 表示点为半透明,有助于观察重叠的点。
  • 第5行: 使用 size 参数将点的大小固定设为 3。
  • 第6行: 使用 scale_color_manual() 函数指定自定义颜色。

向散点图添加趋势线

接下来,我们将使用 geom_smooth() 函数向图表添加趋势线。我们可以像使用 geom_point() 函数一样,将变量映射到这些美学属性。

1ggplot(mpg) + 2 geom_smooth(aes(x = displ, y = hwy, 3 color = drv)) + 4 scale_color_manual(values = c("#0b7a75", "#5DA9E9", "#03045E"))
  • 第2行: 使用 geom_smooth() 函数向散点图添加平滑曲线。接着使用 aes() 函数将变量映射到美学属性,其中 x 和 y 分别映射到 displ 和 hwy 变量。
  • 第3行: 使用 color 参数并将 drv 变量映射到颜色,以指定散点图上点的颜色。

如图所示,geom_smooth() 函数将 mpg 数据按 drv 变量的不同类别分组,并为每个类别生成一条独立的曲线。我们还可以将这条平滑曲线与散点图结合显示,只需重复使用 geom_point() 函数的代码即可。

1ggplot(mpg) + 2 geom_point(aes(x = displ, y = hwy, color = drv)) + 3 geom_smooth(aes(x = displ, y = hwy, color = drv)) + 4 scale_color_manual(values = c("#0b7a75", "#5DA9E9", "#03045E"))
  • 第2行: 使用 geom_point() 函数创建散点图。接着使用 aes() 函数将变量映射到美学属性,其中 x 和 y 分别映射到 displ 和 hwy 变量。drv 变量也决定点的颜色。
  • 第3行: 使用 geom_smooth() 函数向散点图添加平滑曲线。再次使用 aes() 函数将变量映射到美学属性,其中 x 和 y 分别映射到 displ 和 hwy 变量。使用 drv 变量决定平滑曲线的颜色。

注意: 在 ggplot2 中,还可以对主题、图例、网格线、标签和刻度、标题和副标题等进行多种自定义,以实现更丰富的数据可视化效果。

总结

折线图