mpg的绘图实例

使用 ggplot2 制作一幅信息丰富、样式统一的图表,展示不同类型车辆的引擎排量(displ)对高速油耗(hwy)的影响,具体要求如下:


📋 问题要求(共 11 点)

  1. 数据源:使用内置数据集 mpg
  2. 图类型
    • 主要为散点图(geom_point())。
    • 添加线性拟合线(geom_smooth() + stat_smooth())。
    • 使用透明度处理点重叠。
  3. 美学映射(aes)
    • 横轴:displ,纵轴:hwy
    • 颜色:根据 class 分类
    • 点大小:设置为 3,透明度 0.6
  4. 颜色控制:为不同车辆类型手动指定 3 种颜色。
  5. 分面(Faceting):使用 facet_wrap(),根据 drv 分面(前驱/后驱/四驱)。
  6. 主题
    • 应用 theme_minimal() 基础主题
    • 修改背景色为浅蓝色
    • 设置标题居中加粗
    • X、Y 轴标签字号为 12
    • 图例位置放底部
  7. 标题与标签:包含主标题、副标题、坐标轴名称。
  8. 坐标系控制
    • 翻转坐标(coord_flip()
    • 限制横轴范围为 1 到 7
  9. 比例尺(scales)
    • 横轴采用 scale_x_continuous() 设置 limits
    • 颜色使用 scale_color_manual()
  10. 添加平均值线(stat_summary):在每个子图中加上平均线。
  11. 最终导出图形:保存为 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() 等),也可以继续增强。需要我帮你修改为更高级风格版本吗?

posted @ 2025-05-23 23:24  tomorgen  阅读(17)  评论(0)    收藏  举报