You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R ggplot2绘制数据集所有因子水平计数的分面柱状图

我来帮你梳理并完善这套绘制分面柱状图的流程,用来展示数据集中所有因子列的水平计数:

1. 筛选数据集中的因子列

首先咱们先把数据里的因子类型列挑出来,毕竟咱们要统计的是分类变量的水平计数:

# 判断AAA数据集中哪些列是因子类型
aas <- sapply(AAA, is.factor)
# 提取所有因子列到新数据集aas1
aas1 <- AAA[, aas]
# 查看aas1的数据集概况,确认筛选结果
str(aas1)
2. 数据转换与重塑

接下来要把数据格式调整成ggplot能识别的长格式,方便后续绘图:

# 转置数据集,把列名变成行名
aas2 <- data.frame(t(aas1))
# 添加一列存储原列名(也就是现在的行名)
aas2 <- cbind(names = rownames(aas2), aas2)
# 加载reshape2包用于数据融合
library(reshape2)
# 将宽格式数据转为长格式,以names列为标识列
aas3 <- melt(aas2, id = "names")
# 统一variable列的值(这里用来计数,所以设为1即可)
aas3$variable <- 1
# 确保value列是因子类型,保证分类统计正确
aas3$value <- as.factor(aas3$value)
# 按原列名和变量水平分组,统计每个水平的出现次数
aas4 <- aggregate(.~ names + value, aas3, sum)
# 查看处理后的数据集概况,确认计数结果
head(aas4)
3. 绘制分面柱状图

最后用ggplot绘制分面柱状图,每个子图对应原数据集中的一个因子列,展示各水平的计数:

library(ggplot2)
ggplot(aas4, aes(x = value, y = variable)) +
  geom_col(fill = "#2E86AB") +  # 绘制柱状图,设置填充色
  facet_wrap(~names, scales = "free_x") +  # 按原列名分面,x轴自适应每个子图的水平
  labs(x = "变量水平", y = "计数", title = "各因子列的水平计数分面图") +
  theme_minimal() +  # 使用简洁主题
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # 旋转x轴标签,避免重叠

这样就能得到每个因子列单独的柱状图子图,清晰展示每个分类水平的出现次数啦~

内容的提问来源于stack exchange,提问作者Balaji N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:08:15