Logo
Section 1 / 7

ggplot2 中的内置主题

了解 ggplot2 中不同的内置主题及其自定义方法,以提升图表的视觉效果。

导入

ggplot2 中的内置主题

了解 ggplot2 中不同的内置主题及其自定义方法,以提升图表的视觉效果。

ggplot2 中的主题介绍

主题(Theme)在数据可视化中指的是应用于图表的整体视觉风格和外观。应用主题不会影响几何对象(geoms)的数据展示方式或比例尺(scales)的数据转换方式。虽然主题不改变数据本身,但它们有助于提升图表的美观性、可读性和清晰度。我们可以使用主题来控制图表外观的多个方面。

R 语言中的 ggplot2 包提供了多种主题,有助于改善数据可视化的外观。ggplot2 的主题系统允许我们自定义图表中非数据元素的样式,例如字体、刻度线、标签和背景。

在使用 base graphics 包创建图表时,需要在函数中提供大量参数来设置数据和非数据元素的外观,这使得使用起来较为复杂。而 ggplot2 提供了一种更优的绘图方式:我们只需确定要使用的数据,之后再通过主题系统进行美化。这种方式使 ggplot2 比其他图形系统更容易学习和使用。

ggplot2 的主题系统

ggplot2 的主题系统包含四个主要部分:

1. 主题元素:ggplot2 的主题元素是指可以修改的非数据元素,例如图例或坐标轴标签。

2. 元素函数:每个主题元素都有对应的元素函数,用于定义其视觉属性,例如 element_blank() 可以移除坐标轴的刻度线、标签和网格线。

3. 主题函数:ggplot2 的 theme() 函数允许我们通过调用元素函数来自定义默认的主题元素,例如 theme(axis.text.x = element_text(angle = 45)) 可将 x 轴标签旋转 45 度。

4. 完整主题:ggplot2 提供了一系列内置主题,如 theme_classic(),这些主题将所有主题元素设置为协调一致的值。

ggplot2 包自带多个内置主题,可用于自定义图表的外观。这些主题为所有主题元素预设了值,使创建美观图表变得简单。

ggplot2 中的不同主题

为了探索 ggplot2 中的内置主题,我们首先使用 Cars93 数据集创建一个基础条形图,代码如下:

1ggplot(Cars93) + 2 geom_bar(aes(x = Type, fill = Origin)) + 3 scale_fill_manual(values = c("#5DA9E9", "#03045E"))
  • 第 1 行:我们使用 ggplot() 函数初始化一个新的 ggplot 对象,并传入 Cars93 数据集名称。通过 + 运算符,向该对象添加图层。
  • 第 2 行:我们使用 geom_bar() 函数创建条形图。接着使用 aes() 函数将 Type 变量映射到 x 轴。同时将 fill 参数设置为 Origin 变量,表示绘制时按 Origin 分组。
  • 第 3 行:我们使用 scale_fill_manual() 函数指定图表的颜色方案。

现在,我们可以将生成的条形图保存为新对象,之后每次想要应用不同的内置 ggplot2 主题时,只需调用该对象的名称即可。

1chart <- ggplot(Cars93) + 2 geom_bar(aes(x = Type, fill = Origin)) + 3 scale_fill_manual(values = c("#5DA9E9", "#03045E")) 4chart
  • 第 1 行:我们将条形图存储在一个名为 chart 的新对象中。
  • 第 4 行:我们调用对象名称以显示图表。

注意:当我们将任何图表赋值给 ggplot 对象时,只有在显式调用该对象名称时才会显示出来。

以下是几个在创建可视化图表时非常有用的 ggplot2 内置主题简要说明:

theme_gray() 主题

这是 ggplot2 包中的一个内置主题,为所有主题元素设置了预设值,可创建具有浅灰色背景和白色网格线的协调且美观的图表。它是 ggplot2 的标志性主题,常作为默认主题使用,因其简洁易读而广受欢迎。

1chart + theme_gray()
  • 第 1 行:我们初始化 chart 对象,并使用 + 运算符添加图层。
  • 第 2 行:我们使用 theme_gray() 函数应用 ggplot2 的默认主题。

由于 theme_gray() 是默认主题,因此对原始图表不会产生可见变化。

theme_bw() 主题

该主题专为黑白图表设计,具有白色背景和细黑网格线。适合需要打印为黑白格式的图表。可通过以下代码应用此主题:

1chart + theme_bw()
  • 第 2 行:我们使用 theme_bw() 函数将黑白主题应用于图表。

theme_dark() 主题

该内置主题具有深色背景和浅灰色网格线,适用于在深色背景下展示图表。可通过以下代码应用该主题:

1chart + theme_dark()
  • 第 2 行:我们使用 theme_dark() 函数将深色主题应用于图表。

theme_minimal() 主题

该主题具有白色背景和浅色网格线,是一种极简风格,能有效突出数据本身而不引入干扰。可通过以下代码应用该主题:

1chart + theme_minimal()
  • 第 2 行:我们使用 theme_minimal() 函数将极简主题应用于图表。

theme_classic() 主题

该主题具有白色背景,带有 x 轴和 y 轴线条,但无网格线。适合希望获得简洁经典风格数据可视化的用户。

1chart + theme_classic()
  • 第 2 行:我们使用 theme_classic() 函数将经典主题应用于图表。

theme_void() 主题

这是 ggplot2 中另一种极简风格的主题,也可视为空白主题。它会移除所有非数据元素,如坐标轴标签和刻度标记,仅保留数据点或线条。该主题有助于创建专注于数据本身、无多余干扰的图表。

1chart + theme_void()
  • 第 2 行:我们使用 theme_void() 函数将空白主题应用于图表。

theme_linedraw() 主题

该内置主题旨在创建类似素描的图表效果,具有白色背景和不同粗细的黑色线条。可通过以下代码应用该主题:

1chart + theme_linedraw()
  • 第 2 行:我们使用 theme_linedraw() 函数将该主题应用于图表。

theme_light() 主题

该主题与 theme_linedraw() 类似,也具有白色背景,但配有细灰网格线、浅灰坐标轴线和刻度标记。

1chart + theme_light()
  • 第 2 行:我们使用 theme_light() 函数将轻盈主题应用于图表。

综合应用

现在,让我们将上述所有主题以聚类形式展示:

1charts

这些是 ggplot2 中常用的一些内置主题。此外,还可以使用其他多种主题来进一步控制图表的外观。

高级图表

ggplot2 中的其他主题