使用多个变量的R ggplot2构面图

问题描述

我有一个我无法解决的关于ggplot图的问题,我的挣扎来自以下事实:我必须在X轴上放置多个变量,并且必须取2个不同数据帧的值。

假设我得到以下2个数据帧:

Question<-c(1,2,3)
True<-c(30,20,10)
False<-c(10,15,20)
None<-c(3,3)
df1<-data.frame(Question,True,False,None)

Question<-c(1,3)
True<-c(20,15)
False<-c(20,5)
None<-c(3,2)
df2<-data.frame(Question,None)

df1看起来像这样

Question  True  False None
1         30     10   3
2         20     15   2
3         15     5    2

与df2看起来相似

有人要求我制作一个并排图表,使用方面ggplot比较每个问题在df1和df2上的分布。

该图需要特别地看起来像这样,其中第1组来自df1,第2组来自df2:

What it must look like

谢谢大家

解决方法

我建议使用这种方法。使用数据框,您可以创建Group变量,将数据与rbind()绑定,然后重塑形状以使所需的变量具有可用于绘图的格式:

library(tidyverse)
#Data
Question<-c(1,2,3)
True<-c(30,20,10)
False<-c(10,15,20)
None<-c(3,3)
df1<-data.frame(Question,True,False,None)
#Data 2
Question<-c(1,3)
True<-c(20,15)
False<-c(20,5)
None<-c(3,2)
df2<-data.frame(Question,None)
#Bind data
df1$Group <- 'df1'
df2$Group <- 'df2'
dfg <- rbind(df1,df2)
#Reshape
dfg %>% pivot_longer(cols = -c(Question,Group)) %>%
  ggplot(aes(x=name,y=value,fill=Group))+
  geom_bar(stat = 'identity',position = position_dodge(0.9))+
  facet_wrap(.~Question)

输出:

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...