R - 散点图
R - 使用 ggplot2 绘制现代散点图
Section titled “R - 使用 ggplot2 绘制现代散点图”散点图对于可视化两个连续变量之间的关系至关重要。图上的每个点代表一个观测值,根据其在水平(x)和垂直(y)轴上的值进行定位。虽然 R 的基础图形包(plot())可以创建简单的散点图,但现代、强大且推荐的方法是使用 ggplot2 包。
ggplot2 基于“图形语法”(Grammar of Graphics),这是一种允许您逐层构建图表的理念。关键组成部分包括:
data(数据):包含要绘制变量的数据集。aesthetics(aes)(美学映射):变量如何映射到视觉属性,例如 x/y 轴、颜色、大小或形状。geoms(几何对象):表示数据的几何对象,例如点(geom_point)、线(geom_line)或条(geom_bar)。
创建基本散点图
Section titled “创建基本散点图”我们将使用内置的 mtcars 数据集来探索车辆重量(wt)和燃油效率(mpg)之间的关系。
设置与数据检查
Section titled “设置与数据检查”# 如果尚未安装 ggplot2 (tidyverse 的一部分),请安装# install.packages("tidyverse")
library(ggplot2)library(dplyr)
# 选择相关列以提高清晰度input_data <- mtcars %>% select(wt, mpg, cyl, gear)
print(head(input_data))执行上述代码会产生以下结果:
wt mpg cyl gearMazda RX4 2.620 21.0 6 4Mazda RX4 Wag 2.875 21.0 6 4Datsun 710 2.320 22.8 4 4Hornet 4 Drive 3.215 21.4 6 3Hornet Sportabout 3.440 18.7 8 3Valiant 3.460 18.1 8 3示例:重量与里程
Section titled “示例:重量与里程”以下脚本将创建一个精美的散点图。我们可以使用 + 运算符向图中添加图层。
# 创建散点图对象scatterplot <- ggplot(data = input_data, aes(x = wt, y = mpg)) + geom_point() + # 添加点层 labs( # 添加信息性标签 title = "Vehicle Weight vs. Fuel Efficiency (MPG)", subtitle = "Heavier cars tend to have lower mileage", x = "Weight (1000 lbs)", y = "Miles Per Gallon" ) + theme_minimal() # 应用简洁的现代主题
# 将图表打印到查看器print(scatterplot)
# 将图表保存到文件# ggsave 会自动保存最后显示的图表ggsave("scatterplot.png", width = 8, height = 5)此代码会生成一个名为 scatterplot.png 的文件,其中包含一个标注清晰的散点图。该图表也会显示在 RStudio 的绘图面板中。
ggplot2 的强大之处在于它能够将其他变量映射到美学属性。例如,我们可以将 cyl(汽缸数)变量映射到 color 美学属性,以观察它如何影响变量间的关系。
# 创建增强型散点图enhanced_plot <- ggplot(data = input_data, aes(x = wt, y = mpg, color = factor(cyl))) + geom_point(size = 3, alpha = 0.8) + # 使点更大,并略微透明 geom_smooth(method = "lm", se = FALSE) + # 为每个组添加一条线性回归线 labs( title = "Vehicle Weight vs. Fuel Efficiency by Cylinder Count", x = "Weight (1000 lbs)", y = "Miles Per Gallon", color = "Cylinders" # 这会重命名图例标题 ) + theme_light()
print(enhanced_plot)ggsave("scatterplot_enhanced.png", width = 8, height = 5)注意: 我们使用 factor(cyl) 将汽缸数视为离散分类变量,这适用于颜色映射。
使用 GGally 绘制现代散点图矩阵
Section titled “使用 GGally 绘制现代散点图矩阵”为了同时可视化多个变量之间的关系,基础 R 的 pairs() 函数虽然功能齐全但已过时。现代的、基于 ggplot2 的替代方案是 GGally 包中的 ggpairs() 函数。
# install.packages("GGally")library(GGally)
# 为选定变量创建散点图矩阵matrix_plot <- ggpairs( input_data, columns = c('mpg', 'wt', 'cyl'), aes(color = factor(gear), alpha = 0.5), # 全局美学映射 title = "Scatterplot Matrix of Car Performance Metrics")
print(matrix_plot)ggsave("scatterplot_matrix.png", width = 10, height = 10)ggpairs 图表信息量巨大,显示了:
- 每对连续变量的散点图。
- 对角线上的密度图。
- 连续变量与分类变量配对的箱线图。
- 相关值。