ggplot2中stat_summary继承机制解析及绘图需求咨询
搞定ggplot2折线图+理解继承机制
嘿,作为刚接触ggplot2的新手,搞不懂它的继承机制真的太正常啦!我来一步步帮你搞定这个随时间变化的空气污染总量折线图~
第一步:补全数据处理代码
你已经完成了数据集的下载和读取,接下来我们要筛选巴尔的摩市的数据,再按年份和污染类型分组计算总排放量:
# 先加载需要的工具包(如果没安装过,先跑install.packages(c("dplyr", "ggplot2"))) library(dplyr) library(ggplot2) # 筛选巴尔的摩(fips编码24510)的数据,按年份和污染类型分组求和 baltimore_pm25 <- NEI %>% filter(fips == "24510") %>% # 锁定巴尔的摩地区数据 group_by(year, type) %>% # 按年份、污染类型做分组 summarise(total_emissions = sum(Emissions), .groups = "drop") # 计算每组的总排放量
第二步:搞懂ggplot2的继承机制
ggplot2的核心逻辑就是图层继承,说人话就是:
- 你在最外层
ggplot()里指定的data(数据集)和aes()(美学映射,比如x轴、y轴、颜色对应什么字段),会被后续所有图层(比如geom_line()、geom_point())自动复用。 - 只有当某个图层需要用不同的数据集或特殊映射时,才需要单独指定,否则完全不用重复写相同内容——这就是它代码简洁的关键!
第三步:绘制折线图(用上继承机制)
直接看代码,我会在注释里标注哪里用到了继承:
# 顶层指定数据集和全局映射,后续所有图层都自动继承这个设置 ggplot(data = baltimore_pm25, aes(x = year, y = total_emissions, color = type)) + geom_line(size = 1) + # 自动继承x、y、color的映射,不用再重复写! geom_point(size = 2) + # 同样继承映射,点的颜色自动对应污染类型 labs( title = "巴尔的摩市4类PM2.5排放量随时间变化", x = "年份", y = "总排放量(吨)", color = "污染类型" ) + theme_minimal() # 换个清爽的主题,让图表更好看
运行这段代码后,你就能得到一张清晰的折线图:四种污染类型各对应一条颜色不同的线,点标记出每年的具体数值,完美展示总量随时间的变化趋势。
内容的提问来源于stack exchange,提问作者Carlton Lee
相关产品推荐
相关产品推荐

