在R语言中绘制带上下限的分组柱状图对比两组数据
合并数据并绘制带上下限的分组柱状图(R语言)
步骤1:合并数据
先给两个原始数据框添加分组标识,合并后转换为ggplot适配的长格式:
# 加载所需工具包 library(ggplot2) library(tidyr) library(dplyr) # 为原始数据添加分组标签 data1$group <- "组1" data2$group <- "组2" # 合并两个数据框 combined_data <- rbind(data1, data2) # 转换为长格式,将CO、PM转为统一的"污染物"列 combined_long <- combined_data %>% pivot_longer( cols = c(CO, PM), names_to = "污染物", values_to = "浓度值" )
步骤2:绘制分组柱状图
用ggplot2绘制以年份为X轴、污染物浓度为Y轴的分组柱状图,并添加指定的上下限误差线:
ggplot(combined_long, aes(x = factor(YOM), y = 浓度值, fill = 污染物)) + # 绘制分组柱状图,调整柱子间距 geom_col(position = position_dodge(width = 0.8), width = 0.7) + # 添加上下限误差线,与柱状图对齐 geom_errorbar( aes(ymin = lowerlim, ymax = upperlim), width = 0.2, position = position_dodge(width = 0.8) ) + # 设置图表标签 labs( x = "年份", y = "浓度值", title = "不同年份CO与PM浓度对比(含上下限)", fill = "污染物类型" ) + # 使用简约主题 theme_minimal() + # 设置填充色配色方案 scale_fill_brewer(palette = "Set2")
关键说明
- 用
factor(YOM)将年份转换为离散型变量,确保X轴按年份独立分组展示 position_dodge参数保证同一年份下的不同污染物柱子和误差线对齐排列geom_errorbar直接调用数据中的lowerlim和upperlim作为误差范围
内容的提问来源于stack exchange,提问作者R noob
相关产品推荐
相关产品推荐

