我正在尝试在R中绘制以下玩具数据帧,特别是B和C列中的True-True,False-True,True-False和False-False组合。这些True和False值也对应于2条件(“ X”或“ Y”)。
A B C
X True True
Y False True
X False False
Y True True
Y True False
... ... ...
但是,我当前的代码(如下)将这些条件按条件分为2组。当前代码还只为我提供了False-False,False-True和True-True组合。不知何故,我就错了。
我想将4种组合绘制为条件X的4条未堆叠的条和条件Y的另外4条未堆叠的条。有人对此有何建议?
ggplot(data, aes(x = A, fill = interaction(B,C))) +
geom_bar(position = 'stack', stat="count")
答案 0 :(得分:1)
尝试geom_bar(position="dodge2")
,他们应该并排布置。
A <- c("X", "Y", "X", "Y", "Y", "X", "X", "Y", "Y")
B <- c(T, F, F, T, T, T, F, F, T)
C <- c(T, T, F, T, F, F, F, T, F)
df <- data.frame(cbind(A, B, C))
df %>% ggplot(aes(x=A, fill=interaction(B,C))) +
geom_bar(position = "dodge2", stat="count")
我添加了更多数据点,以便您可以看到不同的计数。
示例图:
如果您想显示缺少的类别(例如,不包含interaction(B,C)
组合的类别),则可以使用以下内容:
A <- factor(c("X", "Y", "X", "Y", "Y", "X", "X", "Y", "Y"), levels=c("X", "Y"))
B <- factor(c(T, F, F, T, T, T, F, F, T), levels=c("FALSE", "TRUE"))
C <- factor(c(T, T, F, T, F, F, F, T, F), levels=c("FALSE", "TRUE"))
df <- data.frame(A, B, C)
df %>% group_by(A, B, C, .drop=F) %>% tally() %>%
ggplot(aes(x=A, y=n, fill=interaction(B,C), color=interaction(B,C))) +
geom_bar(position = "dodge2", stat="identity")
示例图: