【ggplot2】同时绘制多个图

1.利用facet_grid

代码如下:
准备数据
ini<-read.table('ini')
fina<-read.table('finalTOP10')
t1<-ini[1,c(1:8)]
t2<-fina[1,c(1:8)]
ti<-data.frame(table(ini[,1]))
tf<-data.frame(table(fina[,1]))
tiDynaOrNot<-0 tfDynaOrNot<-1
temp<-rbind(ti,tf)
tempName<-paste('Rank',1,seq="") for(i in c(2:10)) { ti<-data.frame(table(ini[,i])) tf<-data.frame(table(fina[,i])) tiDynaOrNot<-0
tfDynaOrNot<-1 t<-rbind(ti,tf) tName<-paste('Rank',i,seq="")
temp<-rbind(temp,t)
}

利用Name区分分面,其中Name.代表分面标签在右,.Name代表分面标签在上

ggplot(temp)+
geom_bar(aes(x=Var1,y=as.numeric(Freq),fill=factor(DynaOrNot)),position='dodge',stat="identity")+labs(x='parameter',y="Frequency")+
labs(x="Parameter",y="Frequency")+
facet_grid(Name~.,scales = 'free')

A1466C5A-64A8-45E4-A619-5867AB72321B.png

2.利用cowplot包

library(cowplot)
for(i in c(2:10)) {
准备数据
ti<-data.frame(table(ini[,i]))
tf<-data.frame(table(fina[,i]))
tiDynaOrNot<-0 tfDynaOrNot<-1
t<-rbind(ti,tf)
t$Name<-paste('Rank',i,seq="")
temp<-t

将绘图整合在一起

plots[[i]]<-ggplot(t)+geom_bar(aes(x=Var1,y=as.numeric(Freq),fill=factor(DynaOrNot)),position='dodge',stat="identity")+labs(x='parameter',y="Frequency")+ggtitle(paste('rank',i,seq=""))

这个是关键代码,只有一行

plot_grid(plotlist = plots)

492622B5-E504-43FF-862A-4F4599C0133C.png

3.利用gridExtra包

与2相同,只是最后红色代码变为
library(gridExtra)
grid.arrange(plots[[1]]...plots[[10]],ncol=1,nrow=10)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容