R 绘图实战:散点图从入门到精通

发布时间:2026/7/18 4:39:53
R 绘图实战:散点图从入门到精通 1. 引言为什么选择散点图散点图Scatter Plot是数据可视化中最基础、最强大的工具之一。它通过在二维坐标系中绘制点来展示两个连续变量之间的关系能够直观地揭示数据的分布模式、趋势、异常值和相关性。在 R 语言中绘制散点图不仅简单高效而且拥有极高的定制化能力能够满足从探索性数据分析到学术出版的各种需求。本文将带你从零开始掌握在 R 中绘制散点图的完整流程涵盖基础绘图系统base R、ggplot2 以及 plotly 等主流工具并提供丰富的代码实例。2. 环境准备与数据加载首先确保你已安装 R 和 RStudio。我们将使用 R 内置的mtcars数据集和iris数据集作为示例。# 查看数据基本信息 data(mtcars) head(mtcars) # mpg cyl disp hp drat wt qsec vs am gear carb # Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 # Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 # Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 data(iris) 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 setosa3. 基础绘图系统Base R绘制散点图R 自带的绘图系统功能强大语法直接。3.1 最简单的散点图# 绘制汽车马力hp与每加仑英里数mpg的关系 plot(mtcars$hp, mtcars$mpg, main 汽车马力与油耗关系Base R, xlab 马力hp, ylab 每加仑英里数mpg, pch 16, # 点的形状16为实心圆点 col steelblue)参数解释pch: 点的形状1-25。col: 点的颜色。cex: 点的大小倍数。3.2 添加回归线与图例# 绘制散点图 plot(mtcars$wt, mtcars$mpg, main 车重与油耗关系及线性趋势, xlab 车重wt, 千磅, ylab 每加仑英里数mpg, pch 17, col darkred, cex 1.2) 添加线性回归线 abline(lm(mpg ~ wt, data mtcars), col blue, lwd 2) 添加图例 legend(topright, legend c(数据点, 线性拟合), pch c(17, NA), # NA表示图例中不显示点 lty c(NA, 1), # 1表示实线 col c(darkred, blue), lwd c(NA, 2))4. 使用 ggplot2 绘制精美散点图ggplot2基于图形语法能创建更复杂、更美观的图形。请先安装并加载包install.packages(ggplot2)。library(ggplot2)4.1 基础 ggplot2 散点图# 使用 iris 数据集绘制花萼长度与宽度的关系 ggplot(iris, aes(x Sepal.Length, y Sepal.Width)) geom_point(size 3, alpha 0.7) # alpha 控制透明度 labs(title 鸢尾花花萼尺寸关系ggplot2, x 花萼长度cm, y 花萼宽度cm) theme_minimal()4.2 按分类变量着色并添加平滑曲线# 按鸢尾花种类Species着色并添加局部回归平滑线 ggplot(iris, aes(x Sepal.Length, y Sepal.Width, color Species)) geom_point(size 3) geom_smooth(method loess, se FALSE) # seFALSE 不显示置信区间 scale_color_brewer(palette Set1) # 使用 ColorBrewer 调色板 labs(title 按种类着色的花萼尺寸关系, x 花萼长度cm, y 花萼宽度cm, color 鸢尾花种类) theme_bw()4.3 复杂分面与自定义主题# 创建一个包含多个变量关系的分面网格 ggplot(iris, aes(x Petal.Length, y Petal.Width, color Species)) geom_point(alpha 0.8) geom_smooth(method lm, se TRUE) # 线性拟合显示置信区间 facet_wrap(~ Species, scales free) # 按种类分面坐标轴自由缩放 labs(title 鸢尾花花瓣尺寸关系按种类分面, x 花瓣长度cm, y 花瓣宽度cm) scale_color_manual(values c(setosa #E41A1C, versicolor #377EB8, virginica #4DAF4A)) # 自定义颜色 theme(legend.position none, # 隐藏图例 plot.title element_text(hjust 0.5, face bold)) # 标题居中加粗5. 创建交互式散点图plotlyplotly可以将静态图表转换为交互式图表支持缩放、悬停查看数据等。# 安装并加载 plotly # install.packages(plotly) library(plotly) 基于 ggplot2 对象创建交互式图表 p - ggplot(iris, aes(x Sepal.Length, y Sepal.Width, color Species, text Species)) # text 用于悬停提示 geom_point(size 3, alpha 0.7) labs(title 交互式鸢尾花散点图) ggplotly(p, tooltip text) # 将 ggplot2 对象转换为 plotly 对象6. 高级技巧与实战案例6.1 气泡图用点的大小表示第三个变量# 使用 mtcars 数据用点的大小表示气缸数cyl ggplot(mtcars, aes(x wt, y mpg, size cyl)) geom_point(alpha 0.6, color darkgreen) scale_size_continuous(range c(3, 10), # 控制点的大小范围 name 气缸数) labs(title 气泡图车重、油耗与气缸数的关系, x 车重千磅, y 每加仑英里数mpg)6.2 添加文本标签与注释# 为部分极端值添加车名标签 library(dplyr) mtcars_labeled - mtcars %% mutate(car_name rownames(mtcars)) %% filter(mpg 30 | mpg 15) # 筛选出油耗极高或极低的车型 ggplot(mtcars, aes(x wt, y mpg)) geom_point(color gray70) geom_point(data mtcars_labeled, color red, size 3) # 高亮特殊点 geom_text(data mtcars_labeled, aes(label car_name), hjust -0.1, vjust 0.5, size 3, color red) # 添加文本 geom_hline(yintercept mean(mtcars$mpg), linetype dashed, color blue) # 平均线 annotate(text, x 4.5, y mean(mtcars$mpg)1, label paste(平均 mpg , round(mean(mtcars$mpg), 1)), color blue) # 添加注释文本 labs(title 带标签和注释的散点图)7. 总结与最佳实践探索关系散点图是探索两个连续变量相关性的首选。选择合适的工具快速探索用 Base R出版级图形用 ggplot2演示汇报用 plotly。注重细节合理设置坐标轴标签、标题、图例和颜色让图表“不言自明”。避免过度绘制数据点过多时使用透明度alpha或抽样。结合统计图形适时添加回归线、置信区间、分布边缘图等增强信息量。希望本文丰富的代码实例能帮助你快速上手 R 中的散点图绘制并将其灵活应用到自己的数据分析项目中。