ggplot图表在多个类别中的比例

时间:2014-12-03 06:22:47

标签: r ggplot2

我正在尝试绘制具有多个分组的数据的真/假比例。具体来说,我想查看数据列c的真/假比例,可以按来自a和b的真/假数据进行分组。

a = sample(c(TRUE, FALSE), 50, replace=TRUE)
b = sample(c(TRUE, FALSE), 50, replace=TRUE)
c = sample(c(TRUE, FALSE), 50, replace=TRUE)
df = as.data.frame(cbind(a,b,c))

我试过了:

ggplot(df,aes(x = a, fill = c)) + 
    geom_bar(position = "fill")

但我不知道如何将B中的真/假数据实现到图表中。基本上我想要4个比例:A / B =假/假,假/真,真/假,真/真

http://i.stack.imgur.com/HhtHZ.png

这基本上是我想要的图表,除了时间= A,性别= B和total_bill = c的真/假比例

1 个答案:

答案 0 :(得分:0)

以下是使用dplyr的一种方法。

library(dplyr)
library(ggplot2)

set.seed(111)
a = sample(c(TRUE, FALSE), 50, replace=TRUE)
b = sample(c(TRUE, FALSE), 50, replace=TRUE)
c = sample(c(TRUE, FALSE), 50, replace=TRUE)
df = as.data.frame(cbind(a,b,c))

<强>已更新

鉴于OP的意见,这是修订版。

foo <- group_by(df, a, b, c) %>% 
       summarise(total = n()) %>%
       mutate(prop = total / sum(total))

# Draw a ggplot figure      
ggplot(foo, aes(x = a, y = prop, fill = b)) +
geom_bar(stat = "identity", position = "dodge")

enter image description here