利用R语言绘制散点图
绘制散点图
本文利用R语言内置数据集mtcars绘制不同类型的散点图,并提供了详细的代码。这些可视化结果帮助我们直观理解汽车各项性能指标之间的关系,为汽车设计和选购提供数据支持。
欢迎大家在评论区留言或私信,交流学习心得或学习R的过程中遇到的问题。感谢大家的支持和关注,您的支持是我创作的最大动力。
目录
- 绘制散点图
- 1.mtcars数据集介绍
- 2.绘制重量与油耗的散点图
- 3.按气缸数分组绘制散点图
- 4.多变量散点图矩阵
- 5.三维散点图
- 6.带数据标签的散点图
- 7.多图组合展示
1.mtcars数据集介绍
mtcars(Motor Trend Car Road Tests)是R语言中最经典的内置数据集之一,包含了32辆汽车在1974年左右的性能测试数据。这个数据集源自1974年的《Motor Trend》杂志,常用于统计教学和数据分析演示。
mtcars数据集包含11个数值变量:
主要性能指标:
mpg: Miles/(US) gallon - 油耗(英里/加仑)
cyl: Number of cylinders - 气缸数
disp: Displacement (cu.in.) - 排量(立方英寸)
hp: Gross horsepower - 马力
传动系统:
drat: Rear axle ratio - 后轴比率
wt: Weight (1000 lbs) - 重量(千磅)
qsec: 1/4 mile time - 1/4英里加速时间
发动机和变速箱:
vs: Engine (0 = V-shaped, 1 = straight) - 发动机类型
am: Transmission (0 = automatic, 1 = manual) - 变速箱类型
gear: Number of forward gears - 前进档位数
carb: Number of carburetors - 化油器数量
#加载并查看数据
data("mtcars")
head(mtcars)
返回结果如下:
2.绘制重量与油耗的散点图
# 设置图形参数
par(mar = c(5, 5, 4, 2) + 0.1) # 调整边距# 基本散点图
plot(mtcars$wt, mtcars$mpg,main = "汽车重量与油耗关系",xlab = "重量 (千磅)",ylab = "油耗 (英里/加仑)",pch = 16, # 实心圆点col = "blue", # 点的颜色cex = 1.2, # 点的大小cex.main = 1.5, # 标题大小cex.lab = 1.2, # 坐标轴标签大小font.main = 2, # 粗体标题grid() # 添加网格线
)# 添加回归线
abline(lm(mpg ~ wt, data = mtcars), col = "red", lwd = 2, lty = 1)# 添加图例
legend("topright", legend = "线性回归线",col = "red",lwd = 2,lty = 1,bty = "n")
出图效果如下:
3.按气缸数分组绘制散点图
# 按气缸数设置颜色和形状
cyl_colors <- c("red", "green3", "blue")[as.factor(mtcars$cyl)]
cyl_shapes <- c(16, 17, 18)[as.factor(mtcars$cyl)] # 圆形、三角形、菱形# 创建分组散点图
plot(mtcars$wt, mtcars$mpg,main = "汽车重量与油耗关系(按气缸数分组)",xlab = "重量 (千磅)",ylab = "油耗 (英里/加仑)",pch = cyl_shapes,col = cyl_colors,cex = 1.3,bg = "lightgray", # 背景色cex.main = 1.4,cex.lab = 1.1
)# 添加网格线
grid(col = "yellow", lty = 1)# 添加图例
legend("topright",legend = paste(levels(as.factor(mtcars$cyl)), "缸"),title = "气缸数",pch = c(16, 17, 18),col = c("red", "green3", "blue"),pt.cex = 1.3,bg = "white",box.col = "gray")
出图效果如下:
4.多变量散点图矩阵
# 选择四个关键变量创建散点图矩阵
selected_vars <- mtcars[, c("mpg", "wt", "hp", "qsec")]pairs(selected_vars,main = "汽车性能特征散点图矩阵",pch = 16,col = cyl_colors,gap = 0.5, # 图形间距cex.labels = 1.2, # 对角线标签大小cex = 0.8 # 点的大小
)
出图效果如下:
5.三维散点图
使用颜色和大小表示第三个变量
# 使用点的大小表示排量大小
disp_size <- (mtcars$disp - min(mtcars$disp)) / (max(mtcars$disp) - min(mtcars$disp)) * 2 + 0.5plot(mtcars$wt, mtcars$mpg,main = "重量、油耗与排量关系\n(点大小表示排量)",xlab = "重量 (千磅)",ylab = "油耗 (英里/加仑)",pch = 21,bg = heat.colors(32)[rank(mtcars$disp)], # 热力图颜色表示排量col = "black",cex = disp_size, # 点大小表示排量cex.main = 1.3,lwd = 0.5
)# 添加图例说明排量范围
legend("topright",legend = c("小排量", "中排量", "大排量"),pch = 21,pt.cex = c(0.8, 1.5, 2.2),pt.bg = "orange",col = "black",title = "排量大小")
出图效果如下:
6.带数据标签的散点图
# 创建基本散点图
plot(mtcars$wt, mtcars$mpg,main = "汽车重量与油耗关系(带车型标签)",xlab = "重量 (千磅)",ylab = "油耗 (英里/加仑)",pch = 16,col = "darkblue",cex = 1.1
)# 添加车型标签(只显示部分有代表性的车型)
selected_cars <- c("Mazda RX4", "Datsun 710", "Hornet Sportabout", "Ferrari Dino", "Toyota Corolla", "Lincoln Continental")for (car in selected_cars) {if (car %in% rownames(mtcars)) {x_pos <- mtcars[car, "wt"]y_pos <- mtcars[car, "mpg"]text(x_pos, y_pos, labels = car, pos = 3, # 文字在点的上方cex = 0.7, # 文字大小col = "darkred")}
}# 添加参考线
abline(h = mean(mtcars$mpg), lty = 2, col = "gray") # 平均油耗线
abline(v = mean(mtcars$wt), lty = 2, col = "gray") # 平均重量线
出图效果如下:
7.多图组合展示
# 设置2x2的图形布局
par(mfrow = c(2, 2), mar = c(4, 4, 3, 2))# 图1:重量 vs 油耗(按气缸数)
plot(mtcars$wt, mtcars$mpg, col = cyl_colors, pch = 16,main = "重量 vs 油耗", xlab = "重量", ylab = "油耗")# 图2:马力 vs 油耗(按变速箱类型)
plot(mtcars$hp, mtcars$mpg, col = am_colors, pch = am_shapes,main = "马力 vs 油耗", xlab = "马力", ylab = "油耗")# 图3:排量 vs 油耗
plot(mtcars$disp, mtcars$mpg, pch = 15, col = "darkgreen",main = "排量 vs 油耗", xlab = "排量", ylab = "油耗")# 图4:加速时间 vs 油耗
plot(mtcars$qsec, mtcars$mpg, pch = 17, col = "darkred",main = "加速时间 vs 油耗", xlab = "1/4英里时间", ylab = "油耗")# 恢复单图布局
par(mfrow = c(1, 1))
出图效果如下:
大家在使用的时候遇到任何问题欢迎留言,您的支持是我创作的最大动力。