如何在R中的ggplot中使用比例绘制两个类别变量

时间:2019-06-12 20:15:42

标签: r ggplot2

我有两个类别变量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。 请帮助我。

谢谢。

1 个答案:

答案 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"))