最佳 ggplot2 主题的完整指南


本教程提供了最佳 ggplot2 主题的完整指南,包括:

  • 如何使用内置 ggplot2 主题更改绘图的外观。
  • 如何使用ggthemes库中的预定义主题更改绘图的外观。
  • 如何编辑主题的特定组件,包括路径面板背景和网格线。

如何使用内置 ggplot2 主题更改绘图外观

对于以下每个示例,我们将使用嵌入式 R 数据集中的 iris:

 #view first six rows of iris dataset
head(iris)

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

首先,我们将加载ggplot2库并创建一个散点图,该散点图在 x 轴上显示Sepal.Length ,在 y 轴上显示 Sepal.Width ,并根据物种着色:

 #load ggplot2 library
library(ggplot2)

#create scatterplot
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point()

接下来,我们将展示每个内置 ggplot2 主题如何影响绘图的外观。

灰色主题

默认主题,灰色背景和白色网格。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_gray()

bw_主题

黑白主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_bw()

主题_linedraw

白色背景上只有不同宽度的黑色线条的主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_linedraw()

主题灯

theme_linedraw类似的主题,但具有灰色线条和轴,旨在吸引更多人对数据的关注。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_light()

黑暗主题

theme_light类似的主题,但背景为深色。一个有用的主题,可以呈现精美的彩色线条。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_dark()

最小主题

没有背景注释的主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_minimal()

经典主题

没有网格的主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_classic()

主题无效

一个完全空洞的主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_void()

如何使用 ggthemes 库中的预定义主题更改绘图的外观

除了使用内置的 ggplot2 主题之外,我们还可以使用 ggthemes 库中的预定义主题来改变绘图的美观性。

首先,我们将加载 ggthemes 库:

 library(ggthemes)

然后,我们将展示一些使用预定义主题来修改绘图美感的示例:

主题_WSJ

《华尔街日报》的主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_wsj()

主题_簇

极简主义主题的灵感源自统计学家爱德华·塔夫特 (Edward Tufte) 的作品。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_tufte()

日晒主题

使用基于Solarized Palette 的颜色的主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_solarized()

请注意,我们还可以使用light = FALSE参数在绘图上使用深色背景:

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_solarized( light = FALSE )

主题_gdocs

默认带有 Google Docs Chart 的主题。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_gdocs()

主题_ Fivethirtyeight

主题灵感来自Fivethirtyeight.com的情节。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_fivethirtyeight()

主题经济学家

主题灵感来自《经济学人》。

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme_economist()

如何编辑绘图的特定组件

我们可以使用theme()element_rect()函数来更改绘图面板的背景颜色:

 theme(panel.background = element_rect(fill, color, size))
  • fill:矩形的填充颜色
  • 颜色:边框颜色
  • 尺寸:边框尺寸

我们还可以使用element_line()函数来更改网格的大小和外观:

 theme(panel.grid.major = element_line(color, size, linetype),
      panel.grid.minor = element_line(color, size, linetype))
  • 颜色:边框颜色
  • 尺寸:边框尺寸
  • linetype:线型(“空白”、“实线”、“虚线”、“点线”、“点划线”、“长划线”、“双划线”)

以下代码演示了如何删除绘图面板边框和网格线:

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme(panel.border = element_blank(),
  panel.grid.major = element_blank(),
  panel.grid.minor = element_blank())

以下代码演示了如何更改绘图面板背景和网格线:

 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  theme(
    panel.background = element_rect(fill = "powderblue",
    color = "powderblue",
    size = 0.5, linetype = "solid"),
    panel.grid.major = element_line(size = 0.5, linetype = 'solid', color = "white"),
    panel.grid.minor = element_line(size = 0.25, linetype = 'solid', color = "white")
  )

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注