高级篇 03

ggplot2 绘图系统完整指南

图层叠加美学系统,让你的图表焕然一新

📚
学习提示: 本教程内容仅供学习参考,实际应用时请结合具体数据和场景进行调整。 代码和方法可能需要根据实际情况进行修改。
🎨

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() 主题系统

打造个性化图表风格