如何基于已有dataframe在R中绘制分组geom_bar柱状图?
R 绘制分组柱状图解决方案
1. 依赖加载
使用ggplot2实现绘图,配套tidyr做数据格式转换:
# 未安装则先执行安装 # install.packages(c("ggplot2", "tidyr", "dplyr")) library(ggplot2) library(tidyr) library(dplyr)
2. 数据格式预处理
你的原始数据为宽表结构,需要先转换为ggplot2要求的长表格式:
# 替换示例中的df为你实际的dataframe名称 # 替换「分组列」为你数据中作为横轴分类的列名,比如行业、类别等 df_long <- df %>% pivot_longer( cols = !分组列, names_to = "系列名称", values_to = "数值" )
3. 核心绘图代码
通过position_dodge参数实现柱子分组排列,避免堆叠:
ggplot(data = df_long, aes(x = 分组列, y = 数值, fill = 系列名称)) + # 等价于geom_bar(stat = "identity", position = position_dodge(0.9), width = 0.8) geom_col(position = position_dodge(0.9), width = 0.8) + # 以下为美化配置,可按需调整 labs( x = "横轴分类标签", y = "纵轴数值标签", fill = "图例标题" ) + theme_minimal() + theme( legend.position = "top", panel.grid.major.x = element_blank() )
注意事项:若出现柱子重叠,可适当调大
position_dodge的参数值;若数据有负值,可额外添加scale_y_continuous()调整纵轴范围。
内容的提问来源于stack exchange,提问作者João Machado
相关产品推荐
相关产品推荐

