如何用R生成正确的分类商品销售额堆叠条形图?
解决堆叠条形图子类别占比错误的问题
你的问题核心是数据未按category-item组合做汇总:如果原始数据中存在同一商品在同一品类下的多条销售记录,直接绘图会把每条记录的销售额作为独立堆叠段,导致子类别占比显示混乱(但总额是所有记录的累加值,所以看起来总额正确)。
解决步骤如下:
- 加载依赖包:确保已安装并加载数据处理和绘图所需的包
library(ggplot2) library(dplyr)
- 分组计算总销售额:按品类和商品分组,汇总每个组合的总销售额
# 生成去重并汇总后的数据框 sales_summary <- sales_amount %>% group_by(category, item) %>% summarise(total_amount = sum(amount), .groups = "drop")
- 用汇总数据绘图:使用汇总后的总销售额作为y轴变量,确保每个子类别只对应一个实际总销售额
ggplot(sales_summary, aes(fill = item, y = total_amount, x = category)) + geom_bar(stat = "identity", position = "stack", width = 0.6) + labs(title = "各品类下商品的总销售额", x = "品类", y = "总销售额") + scale_y_continuous(labels = scales::comma) + coord_flip()
如果你的示例数据就是完整无重复的数据集,那现有代码本身是正确的——但从你描述的问题来看,实际数据大概率存在重复的category-item记录,因此必须先做汇总处理。
内容的提问来源于stack exchange,提问作者cg333
相关产品推荐
相关产品推荐

