苯人不生产教程,只是文档的搬运工。本文是基于ggplot2官方文档建立的最简明中文翻译,力图作为一个词典,适合于所有像我一样被ggplot2折磨到夜不能寐辗转反侧的人使用。
详细教程可参考ggplot2 book。
1. ggplot2原理简介

ggplot2绘图有7个组成部分,其中data、Mapping、Layers是必需的。
1.1 Data
顾名思义,这一层决定你绘图所需的数据来源:
ggplot(data = mpg)
mpg是你的数据集。
1.2 Mapping
这一层决定你的数据如何映射到图像的属性上。
ggplot(mpg, mapping = aes(x = cty, y = hwy))
此命令将mpg数据集中的cty和hwy列分别映射到x和y坐标。
1.3 Layers
这一层即图层,决定你的图像以何种方式被绘制。
ggplot(mpg, aes(cty, hwy)) +
# 创建散点图
geom_point() +
# 拟合并展示趋势线
geom_smooth(formula = y ~ x, method = "lm")

1.4 Scales
将图上的内容赋予不同的尺度,模板为scale_{aesthetic}_{type}()。根据映射{aesthetic}中的某种属性,按照{type}赋予尺度。
ggplot(mpg, aes(cty, hwy, colour = class)) +
geom_point() +
scale_colour_viridis_d()
即根据colour,将图像按照viridis调色板赋予尺度。

1.5 Facets
拆分数据集至不同的面板。
ggplot(mpg, aes(cty, hwy)) +
geom_point() +
facet_grid(year ~ drv)

1.6 Coordinates
指定图像的坐标。比如使用coord_fixed()自动设置图像横纵坐标比例。
ggplot(mpg, aes(cty, hwy)) +
geom_point() +
coord_fixed()

1.7 Themes
使用内置的theme_*()函数或theme()设置你的主题。
ggplot(mpg, aes(cty, hwy, colour = class)) +
geom_point() +
theme_minimal() +
theme(
legend.position = "top",
axis.line = element_line(linewidth = 0.75),
axis.line.x.bottom = element_line(colour = "blue")
)

2. 绘图基础
所有的图都开始于ggplot(),它提供了数据的来源和映射的方式。随后,你才能用+增加更多的内容。保存图像则使用ggsave()。
| API | Function |
|---|---|
ggplot() | 创建新图 |
aes() | 构建映射 |
add_gg();%+% | 增加组成部分 |
ggsave() | 保存图像 |
qplot();quickplot() | 快速画图 |
3. Layers
3.1 Geoms
施工中
感谢您的耐心阅读!如需交流,请留个评论吧!