我有两个类别变量v1是二分变量(是/否),而v2具有多个结果。我想使用ggplot仅在是组中绘制v2的分布图
这是我的代码,但是我对结果不满意。
v1 <- c("Yes", "Yes", "No", "No", "Yes", "Yes", "No", "No", "Yes", "Yes", "No", "No")
v2 <- c("Blue", "Red", "Blue", "Green", "Blue", "Red", "Blue", "Green", "Blue", "Red", "Blue", "Green")
df <- as.data.frame(cbind(v1, v2))
df
table(df)
ggplot(data = df, aes(x = v1, group = v2)) +
geom_bar(aes(y = ..prop..), stat = "count") +
scale_y_continuous(labels = scales ::percent_format()) +
facet_grid(~v2)
我希望输出仅取代v2中的比例Yes。 请帮助我。
谢谢。
答案 0 :(得分:0)
您可以按照以下方式使用dplyr创建所需的数据框:
toPlot<-df%>%
group_by(v1, v2)%>%
summarise(n = n())%>%
group_by(v2)%>%
mutate(prop = n/sum(n))
然后,图形将如下所示:
ggplot(data = toPlot, aes(v1, prop, fill = v2)) +
geom_col() +
facet_grid(~v2)+
scale_fill_manual(values = c("blue","green", "red"))