首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ggplot2创建多个条形图时缺少分组变量

使用ggplot2创建多个条形图时缺少分组变量
EN

Stack Overflow用户
提问于 2020-05-24 19:43:22
回答 1查看 197关注 0票数 0

我是Rggplot2的新手,我正努力思考如何在彼此之间创建多个条形文字。

我有一个包含5个不同变量的数据集:

"DepressionSymptoms",分类:无、怀疑、轻、中、重度<代码>H 119变异级别:无、怀疑、轻、中、重度<代码>H 214/代码><代码>H 115变量4:"FearSymptoms",分类,级别:无、怀疑、轻、中、重<代码>H 218变化:"SomaticSymptoms",,等级:无、怀疑、轻、中、重度<代码>H 218>H 119变量5:“SomaticSymptoms”,分类:无、怀疑、轻、中、重度<代码>H 218>H 119变量5:“SomaticSymptoms”,分类:无、怀疑、轻、中、重度<代码>H 218>H 119变量5:“SomaticSymptoms”,分类:无、怀疑、轻、中、中、高等级:无、怀疑、轻、中、重度<代码>H 119变量5:“SomaticSymptoms”,分类:无、怀疑、轻、中、重度<代码>H 119变量5:“SomaticSymptoms”,分类:无、怀疑、轻、中、重度<代码>H 119重度

所有变量都在一个数据中,我已经将3个症状变量设置为因子变量。

我能够为按性别编码的单一症状变量颜色创建一个条形图,例如:

代码语言:javascript
运行
复制
ggplot(myData, aes(x = DepriSymptoms, fill = Gender)) + 
  geom_bar() +
  theme_bw() +
  labs(y = "Participant Count",
       x = "Symptoms",
       title = "Depression Symptom Severity by Gender")

示例DepriSymptoms:

是否有可能在ggplot2中使用facet或group来创建像我制作的一个(一个用于抑郁症状,一个用于FearSymptoms,一个用于SomaticSymptoms)相邻的三个单独的each?

在我看来,我错过了一个变量,让我分组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-25 01:16:43

如果您想要创建一个经过面处理的ggplot2图,那么您需要在您的data.frame中有一个单独的变量来对数据进行分面或拆分。让我们从基于您的问题的一些示例数据开始:

代码语言:javascript
运行
复制
CategoryLevels <- c("none", "suspected", "light", "medium", "severe")

myData <- data.frame(SubjectID = LETTERS[1:10], 
                     Gender = sample(c("M", "F", "divers"), 10, replace = TRUE),
                     DepressionSymptoms = 
                           factor(sample(CategoryLevels, 10, replace = TRUE), 
                                  levels = CategoryLevels),
                     FearSymptoms = 
                           factor(sample(CategoryLevels, 10, replace = TRUE), 
                                  levels = CategoryLevels),
                     SomaticSymptoms =
                           factor(sample(CategoryLevels, 10, replace = TRUE), 
                                  levels = CategoryLevels))

我猜你的数据结构是这样的。正如@Greg所说,您需要将数据从宽格式(每一列都是症状)转换为更长的格式(一列列出症状,另一列列出主题的响应)。要做到这一点,您将需要一个主题ID来链接所有内容,以确保您知道谁的答案是谁的。

代码语言:javascript
运行
复制
myData <- myData %>% 
      pivot_longer(names_to = "Symptom", values_to = "Response", 
                   cols = matches("Symptom"))

现在,您已经获得了长格式的数据,您可以在“症状”列上小块,并按主题的性别填充条形颜色。

代码语言:javascript
运行
复制
ggplot(myData, aes(x = Response, fill = Gender)) +
      geom_bar(stat = "count") +
      facet_wrap(~ Symptom)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61991511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档