如何解决使用多个变量的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:
谢谢大家
解决方法
我建议使用这种方法。使用数据框,您可以创建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)
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。