请求绘制两类频率的堆叠条形图(附对应数据集)
分类变量的堆叠条形图绘制方案
先加载所需工具包,再将宽格式数据转换为ggplot2适配的长格式,同时处理缺失值:
# 加载tidyverse包(包含ggplot2和数据处理工具) library(tidyverse) # 将宽格式数据转为长格式,同时把NA替换为0 df_long <- Merchant_Category_Frequency_with_Target %>% pivot_longer( cols = starts_with("Freq"), names_to = "频率类型", values_to = "频次" ) %>% mutate(频次 = replace_na(频次, 0))
接下来直接用分类变量Var1绘制堆叠条形图:
ggplot(df_long, aes(x = Var1, y = 频次, fill = 频率类型)) + geom_bar(stat = "identity") + # 设置图表标签 labs( title = "各商户类别合并频率分布", x = "商户类别", y = "频次", fill = "频率类型" ) + # 旋转x轴标签避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1))
关键说明
- 之前绘制失败的核心原因是数据格式不匹配:ggplot2更适合长格式数据,而你提供的是宽格式数据(每行对应一个类别、两个频率列),转换为长格式后就能正确识别分组。
- 替换
NA为0是为了确保所有类别都能在图表中显示,避免缺失值导致的类别遗漏。 - 分类变量(factor类型的
Var1)可直接作为ggplot的x轴变量,无需转换为数值。
内容的提问来源于stack exchange,提问作者driver
相关产品推荐
相关产品推荐

