🎨
ggplot2 是 R 语言最强大的绘图系统。
它的核心思想是图层叠加——每个元素都是一个图层,
通过 + 号连接,
构建出精美的统计图表。
1. ggplot2 的绘图逻辑
🎯 核心概念:一句语句代表一张图,最小的单元是图层。图层之间用 "+" 号叠加,越后面图层越高。
library(ggplot2) x <- rnorm(100, 14, 5) y <- x + rnorm(100, 0, 1) ggplot(data = NULL, aes(x = x, y = y)) + geom_point(color = "darkred") + annotate("text", x = 13, y = 20, parse = TRUE, label = "x[1] == x[2]")
绘图结构示意:
ggplot()
+
geom_*()
+
annotate()
+
scale_*()
+
theme()
2. ggplot2 函数分类
初始化命令
ggplot, plot, print 等
分组命令
facet_* 等分面函数
核心绘图
stat_*, geom_*, annotate
微调图形
scale_*, coord_*, guides, theme
3. 美学映射 aes() 详解
💡 关键规则:任何与数据向量顺序相关、需要逐个指定的参数都必须写在 aes 里。想统一整个图层就放到 aes 外!
p <- ggplot(mtcars, aes(wt, mpg)) # 颜色分组:放在 aes 内 p + geom_point(aes(colour = qsec)) # 统一颜色:放在 aes 外 p + geom_point(color = "green")
常用几何类型 (geom_*)
geom_point
— 散点图
geom_line
— 折线图
geom_bar
— 柱状图
geom_boxplot
— 箱线图
geom_histogram
— 直方图
geom_smooth
— 平滑曲线
geom_text
— 文本标签
geom_tile
— 热力图块
4. 完整绘图流程
# 极具诚意的作图模板 ggplot(data = your_data, aes(x = , y = )) + # ========== 绘图图层 ========== geom_XXX(...) + stat_XXX(...) + annotate(...) + # ========== 微调图形 ========== scale_XXX(...) + # 标尺调整 coord_XXX(...) + # 坐标调整 guides(...) + # 图例调整 theme(...) # 主题调整
5. theme 的设计理念
🎨 核心思想:将数据相关的美学调整和与数据无关的调整分离!
例如改变 x 轴颜色、panel 底色等与数据处理无关的内容,用 theme() 调整。而颜色映射、坐标范围等与数据相关的内容,用 scale_*() 调整。
theme 四大调整函数
element_text()
调整字体
element_line()
调整线条
element_rect()
调整矩形块
element_blank()
清空元素
6. ggplot2 的优缺点
✅ 优点
- • 图层叠加概念清晰
- • 数据/美学分离
- • 主题系统灵活
- • 丰富的扩展包
- • 社区支持强大
❌ 缺点
- • 公式支持不完善
- • 多图例调整困难
- • 绘图速度较慢
- • 学习曲线较陡
"ggplot2 最妙的地方是将数据处理与数据美学分开,数据美学与数据无关的调整分开。"
— 领学人-Angus-心内科
📝 ggplot2 学习路径
1
掌握 ggplot() 初始化
理解数据和美学映射
2
学习 geom_* 绘图函数
点、线、柱状图等基础图形
3
掌握 scale_* 标尺函数
颜色、坐标轴范围等调整
4
精通 theme() 主题系统
打造个性化图表风格