美文网首页R visualizition科研作图R语言
【R:ggplot2】同时绘制多个图

【R:ggplot2】同时绘制多个图

作者: _CelesteHuang_ | 来源:发表于2016-03-29 22:02 被阅读3773次

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]))
ti$DynaOrNot<-0
tf$DynaOrNot<-1
temp<-rbind(ti,tf)
temp$Name<-paste('Rank',1,seq="")
for(i in c(2:10)) {
ti<-data.frame(table(ini[,i]))
tf<-data.frame(table(fina[,i]))
ti$DynaOrNot<-0
tf$DynaOrNot<-1
t<-rbind(ti,tf)
t$Name<-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]))
ti$DynaOrNot<-0
tf$DynaOrNot<-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)

相关文章

网友评论

  • 热衷组培的二货潜:越来越多的小伙伴记录自己的学习过程了,这样像我们这样的小白就可以更快的学习某方面,感恩。😁
    _CelesteHuang_:@二货潜 哈哈,开心能帮助到你
  • Gonggr:十分感谢 正好用到

本文标题:【R:ggplot2】同时绘制多个图

本文链接:https://www.haomeiwen.com/subject/iumslttx.html