我正在尝试绘制具有多个分组的数据的真/假比例。具体来说,我想查看数据列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的真/假比例
答案 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")