我是R
和ggplot2
的新手,我正努力思考如何在彼此之间创建多个条形文字。
我有一个包含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个症状变量设置为因子变量。
我能够为按性别编码的单一症状变量颜色创建一个条形图,例如:
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?
在我看来,我错过了一个变量,让我分组。
发布于 2020-05-25 01:16:43
如果您想要创建一个经过面处理的ggplot2图,那么您需要在您的data.frame中有一个单独的变量来对数据进行分面或拆分。让我们从基于您的问题的一些示例数据开始:
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来链接所有内容,以确保您知道谁的答案是谁的。
myData <- myData %>%
pivot_longer(names_to = "Symptom", values_to = "Response",
cols = matches("Symptom"))
现在,您已经获得了长格式的数据,您可以在“症状”列上小块,并按主题的性别填充条形颜色。
ggplot(myData, aes(x = Response, fill = Gender)) +
geom_bar(stat = "count") +
facet_wrap(~ Symptom)
https://stackoverflow.com/questions/61991511
复制相似问题