如何在组中制作频率条形图?

kev*_*8ca 5 r bar-chart ggplot2

假设我的数据是两列,一列是“Condition”,一列是“Stars”

food <- data.frame(Condition = c("A", "B", "A", "B", "A"), Stars=c('good','meh','meh','meh','good'))
Run Code Online (Sandbox Code Playgroud)

如何制作按“条件”分组的“星”频率的条形图?

在这里阅读但想扩展该答案以包括组。

现在我有

q <- ggplot(food, aes(x=Stars))
q + geom_bar(aes(y=..count../sum(..count..)))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 但那是完整数据集的比例。

如何制作由“条件”分组的四个条形图?

例如。“条件 A”的“好”为 0.66,“Meh”为 0.33

Mal*_*l_a 6

我想这就是你要找的:

food <- data.frame(Condition = c("A", "B", "A", "B", "A"), Stars=c('good','meh','meh','meh','good'))
library(ggplot2)
library(dplyr)
data <- food %>% group_by(Stars,Condition) %>% summarize(n=n()) %>% mutate(freq=n/sum(n)) 

ggplot(data, aes(x=Stars, fill = Condition, group = Condition)) + geom_bar(aes(y=freq), stat="identity", position = "dodge")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

起初,我使用dplyr包计算了频率,该包用作 .y 中的 y 参数geom_bar()。然后我使用了根据条件划分条形的fill=Condition参数ggplot()。此外,由于已经计算出频率,我已设置position="dodge"将条形彼此相邻并且stat="identity"


djh*_*rio 3

我有使用价值..prop..、审美groupfacet_wrap()。使用美学group比例按组计算。并facet_wrap()用于分别绘制每个条件。

require(ggplot2)

food <- data.frame(Condition = c("A", "B", "A", "B", "A"),
                   Stars=c('good','meh','meh','meh','good'))

ggplot(food) +
  geom_bar(aes(x = Stars, y = ..prop.., group = Condition)) +
  facet_wrap(~ Condition)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述