繁体   English   中英

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

[英]How to plot two categorical variables using proportion in ggplot in r

我有两个分类变量v1是二分(Yes / No)变量,v2有多个结果。 我想使用ggplot仅在Yes组中绘制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。 请帮我解决一下这个。

提前致谢。

您可以使用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"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM