如何在R中绘制多列表格数据:按ID连线展示年份与数值关系
在R语言中制作分组折线图的步骤
嘿,我来帮你搞定这个需求!要做出每一行(ID)对应数据组的折线图,我们可以用ggplot2包来实现,不过首先得把你的宽格式表格转成更适合绘图的长格式数据,下面一步步来:
1. 准备数据(模拟或导入你的数据)
先模拟一份和你表格结构一致的数据(如果是从Excel/CSV导入,用read_excel()或read.csv()就行):
# 模拟你的表格数据 df <- data.frame( ID = c("A", "B", "C", "D"), "2016" = c(10, 15, 8, 12), "2017" = c(12, 18, 9, 14), "2018" = c(15, 20, 11, 16), "2019" = c(14, 19, 10, 15), "2020" = c(16, 22, 12, 17) )
2. 把宽格式转成长格式
你的表格是每列对应一个年份,我们需要把年份和数值合并成两列,用tidyr包的pivot_longer函数就能轻松搞定:
# 加载需要的包(如果没安装先运行 install.packages("tidyverse")) library(tidyverse) df_long <- df %>% pivot_longer( cols = -ID, # 除了ID列之外的所有列都要转换 names_to = "Year", # 原列名(年份)存到Year列 values_to = "Value" # 原单元格数值存到Value列 ) %>% mutate(Year = as.numeric(Year)) # 把Year转成数值型,确保x轴正确排序
3. 绘制分组折线图
现在用ggplot2来画图,让每个ID对应一条折线:
ggplot(df_long, aes(x = Year, y = Value, color = ID, group = ID)) + geom_line(linewidth = 1) + # 绘制折线,设置线条粗细 geom_point(size = 2) + # 添加数据点,让数值位置更清晰 labs( title = "各ID年度数值变化趋势", x = "年份", y = "数值", color = "ID" ) + theme_minimal() + # 使用简洁清爽的主题 theme(plot.title = element_text(hjust = 0.5)) # 让标题居中显示
额外小技巧
- 如果想自定义折线颜色,可以加一行
scale_color_manual(values = c("#FF0000", "#00FF00", "#0000FF", "#FFA500")),把颜色代码换成你喜欢的就行。 - 如果年份是连续的时间序列,也可以把Year转成日期格式,比如
mutate(Year = as.Date(paste(Year, "01", "01", sep = "-"))),这样x轴会更贴合时间轴的展示逻辑。
内容的提问来源于stack exchange,提问作者WoeIs
相关产品推荐
相关产品推荐

