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 中常用的一些内置主题。此外,还可以使用其他多种主题来进一步控制图表的外观。