如何在ggplot2中筛选变量,制作指定年份数据的散点图?
解决方案
要制作符合要求的散点图,首先需要从原始长格式数据中提取对应年份的变量并按城市ID匹配,再进行绘图。以下提供两种常用方法:
方法一:基础R绘图
- 提取2012年的变量A和2015年的变量B,保留城市ID用于匹配:
# 筛选2012年的A数据 a_2012 <- df[df$Year == 2012, c("CityID", "A")] # 筛选2015年的B数据 b_2015 <- df[df$Year == 2015, c("CityID", "B")] # 按CityID合并数据 plot_data <- merge(a_2012, b_2015, by = "CityID")
- 绘制散点图:
plot(plot_data$A, plot_data$B, xlab = "2012年变量A", ylab = "2015年变量B", main = "2012年A vs 2015年B散点图", pch = 16, # 设置点样式为实心圆 col = "steelblue") # 设置点颜色
方法二:ggplot2包绘图
如果习惯用ggplot2的语法,步骤如下:
- 先加载包并整理数据(数据整理逻辑和基础R一致):
library(ggplot2) plot_data <- merge( df[df$Year == 2012, c("CityID", "A")], df[df$Year == 2015, c("CityID", "B")], by = "CityID" )
- 绘制散点图:
ggplot(plot_data, aes(x = A, y = B)) + geom_point(color = "steelblue", size = 3) + # 设置点的颜色和大小 labs( x = "2012年变量A", y = "2015年变量B", title = "2012年A与2015年B的散点图" ) + theme_bw() # 使用简洁的黑白主题
说明
原始数据是长格式(每条记录对应单个城市的单个年份数据),因此必须先将2012年的A和2015年的B按CityID合并,确保每个城市的两个年份数据一一对应,这样x轴和y轴的长度才能匹配,顺利绘制散点图。
内容的提问来源于stack exchange,提问作者anrisakaki96
相关产品推荐
相关产品推荐

