You need to enable JavaScript to run this app. R语言:如何为5个量表4个类别的数据绘制堆叠条形图
优惠活动
大模型
产品
解决方案
定价
更多

R语言:如何为5个量表4个类别的数据绘制堆叠条形图

错误点说明
  • 语法错误:倒数第二行的管道符拼写错误,应为%>%而非%
  • 逻辑不匹配:你提供的示例数据中各量表列的值已经是Cat1-Cat4字符串类型,无法用数值比较规则做分类判定,会直接报错
  • 因子水平错误:仅有5个量表,但你给Scale设置了6个因子水平,还包含空值,会导致匹配后出现缺失值
正确实现代码

数据预处理

library(tidyverse)

# 替换为你的真实数据即可,此处保留示例数据供测试
df <- tribble(
    ~ID, ~scale1,  ~scale2, ~scale3, ~scale4, ~scale5,
    "1",  "Cat1",    "Cat2",    "Cat4",   "Cat1",  "Cat2",
    "2",  "Cat3",    "Cat3",    "Cat1",   "Cat2",  "Cat3",
    "3",  "Cat4",    "Cat1",    "Cat2",   "Cat3",  "Cat2",
    "4",  "Cat1",    "Cat4",    "Cat2",   "Cat4",  "Cat4",
    "5",  "Cat2",    "Cat1",    "Cat3",   "Cat1",  "Cat1")

df_clean <- df %>%
  select(ID, scale1:scale5) %>%
  pivot_longer(cols = scale1:scale5, names_to = "Scale", values_to = "Category") %>%
  mutate(
    # 直接设置分类的因子顺序
    Category = factor(Category, levels = c("Cat4","Cat3","Cat2","Cat1")),
    # 按需修改量表的显示名称,5个量表对应5个标签即可
    Scale = factor(Scale, levels = paste0("scale", 1:5),
                   labels = c("数学","物理","计算机","体育","英语"))
  )

绘制堆叠条形图

ggplot(df_clean, aes(x = Scale, fill = Category)) +
  # 计数堆叠条形图,position设为"fill"可改为百分比堆叠图
  geom_bar(position = "stack") +
  labs(x = "量表名称", y = "样本数量", fill = "分类") +
  theme_bw()
特殊情况说明

如果你的真实原始数据中,量表列存储的是1-4的数值而非Cat开头的字符串,可改用以下预处理逻辑:

df_clean <- df %>%
  select(ID, scale1:scale5) %>%
  pivot_longer(cols = scale1:scale5, names_to = "Scale", values_to = "Value") %>%
  mutate(
    Value = as.numeric(Value),
    Category = case_when(
      Value >=4 ~ "Cat4",
      Value >=3 & Value <4 ~ "Cat3",
      Value >=2 & Value <3 ~ "Cat2",
      Value <2 ~ "Cat1",
      TRUE ~ "None"
    ),
    Category = factor(Category, levels = c("Cat4","Cat3","Cat2","Cat1")),
    Scale = factor(Scale, levels = paste0("scale", 1:5),
                   labels = c("数学","物理","计算机","体育","英语"))
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:12:02