如何用ggplot绘制对比两数据框Langzeitarbeitslose的箱线图
解决方案
要实现你想要的箱线图对比,核心是先把两个数据框合并,并给每个数据框添加一个标识列用来区分分组(对应X轴的"Ost_Data"和"West_Data")。以下是两种可行的实现方式:
方法1:使用dplyr(推荐,代码更简洁)
# 加载依赖包 library(ggplot2) library(dplyr) # 为每个数据框添加分组标识列 Ost_Data <- Ost_Data %>% mutate(Group = "Ost_Data") West_Data <- West_Data %>% mutate(Group = "West_Data") # 合并两个数据框 combined_data <- bind_rows(Ost_Data, West_Data) # 绘制箱线图 ggplot(combined_data, aes(x = Group, y = Langzeitarbeitslose)) + geom_boxplot(fill = "#4292c6", alpha = 0.6) + # 自定义填充色和透明度 labs( title = "东、西德长期失业数据对比", x = "数据源", y = "长期失业人数" ) + theme_bw()
方法2:使用基础R(无需额外加载dplyr)
# 仅需加载ggplot2 library(ggplot2) # 添加分组列 Ost_Data$Group <- "Ost_Data" West_Data$Group <- "West_Data" # 合并数据框 combined_data <- rbind(Ost_Data, West_Data) # 绘制箱线图 ggplot(combined_data, aes(x = Group, y = Langzeitarbeitslose)) + geom_boxplot() + labs( x = "数据源", y = "长期失业人数" )
原代码失效原因
ggplot要求数据必须是单一数据框格式,并且需要明确的分组变量来映射X轴。你之前的代码没有把两个数据框整合,也没有给每个观测值标记所属的数据源,导致ggplot无法识别X轴的分组信息,自然无法生成对比箱线图。
内容的提问来源于stack exchange,提问作者GeoNerd
相关产品推荐
相关产品推荐

