Barplot与两个数据框并排的两个变量

时间:2018-05-30 19:39:08

标签: r plot ggplot2

我有两个数据框,其中包含两个调查结果:

DF1 <- data.frame(V1 = factor(c("Option1", "Option2", "Option1", "Option2")),
                  ID1 = factor(c("Resp1", "Resp1", "Resp3", "Resp4")))

DF2 <- data.frame(V1 = factor(c("Option1", "Option1", "Option2", "Option1", "Option2")),
                  ID2 = factor(c("PersonA", "PersonB", "PersonC", "PersonD", "PersonE")))

调查的受访者不同,受访者人数不同,但都包含相同的问题;对该问题的回答包含在两个数据帧中的变量V1中。

我可以轻松地为两个数据帧绘制V1:

plot(DF1$V1)
plot(DF2$V1)

或者使用ggplot:

library(ggplot2)
ggplot(DF1, aes(V1, 1))+
  geom_bar(stat = "identity")+
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        text = element_text(size=10))
ggplot(DF2, aes(V1, 1))+
  geom_bar(stat = "identity")+
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        text = element_text(size=10))

但是我希望有一个图表在两个数据框中并排显示V1的内容(在单个图中)。怎么办呢?

1 个答案:

答案 0 :(得分:1)

一般策略是汇总数据并将其放在相同的data.frame中,然后按填充,颜色等单独使用。

DF1 <- DF1 %>% group_by(V1) %>% summarize(DF="DF1", n=n())
DF2 <- DF2 %>% group_by(V1) %>% summarize(DF="DF2", n=n())
DF <- rbind(DF1, DF2)
ggplot(DF, aes(x=V1, y=n, fill=DF)) + geom_bar(stat="identity", position="dodge")

enter image description here