最佳 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") )