mpg的绘图实例
使用 ggplot2
制作一幅信息丰富、样式统一的图表,展示不同类型车辆的引擎排量(displ
)对高速油耗(hwy
)的影响,具体要求如下:
📋 问题要求(共 11 点)
- 数据源:使用内置数据集
mpg
。 - 图类型:
- 主要为散点图(
geom_point()
)。 - 添加线性拟合线(
geom_smooth()
+stat_smooth()
)。 - 使用透明度处理点重叠。
- 主要为散点图(
- 美学映射(aes):
- 横轴:
displ
,纵轴:hwy
- 颜色:根据
class
分类 - 点大小:设置为 3,透明度 0.6
- 横轴:
- 颜色控制:为不同车辆类型手动指定 3 种颜色。
- 分面(Faceting):使用
facet_wrap()
,根据drv
分面(前驱/后驱/四驱)。 - 主题:
- 应用
theme_minimal()
基础主题 - 修改背景色为浅蓝色
- 设置标题居中加粗
- X、Y 轴标签字号为 12
- 图例位置放底部
- 应用
- 标题与标签:包含主标题、副标题、坐标轴名称。
- 坐标系控制:
- 翻转坐标(
coord_flip()
) - 限制横轴范围为 1 到 7
- 翻转坐标(
- 比例尺(scales):
- 横轴采用
scale_x_continuous()
设置 limits - 颜色使用
scale_color_manual()
- 横轴采用
- 添加平均值线(stat_summary):在每个子图中加上平均线。
- 最终导出图形:保存为 8x6 英寸、300 dpi 的 PNG 文件。
✏️ 请完成以下任务:
编写完整的 R 代码,满足上述所有要求,推荐使用
ggplot2
,patchwork
,scales
包等基础工具。
🧠 提示
- 检查是否同时应用了所有知识点:如
coord_flip()
与facet_wrap()
、theme()
自定义、scale_
控制等。 - 不需要添加 patchwork 布局,但如能自定义组合多个图,得分更高。
- 最终图表是否视觉统一、信息丰富又不过载,是评价重点。
参考代码
好的!下面是一个符合题目要求的完整 参考答案 R 代码,涵盖了你提供的所有 ggplot2 功能模块:
✅ 综合示例代码:使用 mpg
数据集绘制分面散点图分析
library(ggplot2)
library(dplyr)
# 自定义颜色
custom_colors <- c("compact" = "#1b9e77", "suv" = "#d95f02", "pickup" = "#7570b3")
# 绘图
p <- ggplot(data = mpg, aes(x = displ, y = hwy, color = class)) +
geom_point(size = 3, alpha = 0.6, position = position_jitter(width = 0.1)) +
stat_smooth(method = "lm", se = FALSE, linetype = "dashed", size = 0.8) +
stat_summary(fun = mean, geom = "line", aes(group = 1), color = "black", size = 1) +
facet_wrap(~drv) +
scale_color_manual(
values = custom_colors,
guide = guide_legend(title = "车辆类型")
) +
scale_x_continuous(limits = c(1, 7)) +
coord_flip() +
labs(
title = "不同驱动方式下的引擎排量与高速油耗关系",
subtitle = "数据来源:mpg 数据集(ggplot2 内置)",
x = "引擎排量(升)",
y = "高速公路油耗(mpg)"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 12),
axis.title.x = element_text(size = 12),
axis.title.y = element_text(size = 12),
panel.background = element_rect(fill = "lightblue", color = NA),
legend.position = "bottom"
)
# 显示图形
print(p)
# 保存图像为 PNG 文件
ggsave("mpg_scatter_plot.png", plot = p, width = 8, height = 6, dpi = 300)
🧠 分析说明
模块 | 实现方式 |
---|---|
数据集 | 使用 ggplot(data = mpg, ...) |
图层 | geom_point() + stat_smooth() + stat_summary() |
美学映射 | aes(x = displ, y = hwy, color = class) |
颜色控制 | scale_color_manual(values = ...) |
分面 | facet_wrap(~drv) |
坐标系 | coord_flip() + scale_x_continuous(limits = c(1, 7)) |
主题 | theme_minimal() + theme(...) 微调字体和背景 |
标题与图例 | labs() 设置标题,theme(legend.position = "bottom") 放置图例位置 |
统计变换 | stat_summary(fun = mean, geom = "line") 画平均线 |
保存图像 | ggsave() 保存为 PNG |
如需进一步定制(例如使用 viridis
颜色、facet_grid()
等),也可以继续增强。需要我帮你修改为更高级风格版本吗?