R visualizition科研作图R语言

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

2016-03-29  本文已影响3773人  _CelesteHuang_

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)

上一篇下一篇

猜你喜欢

热点阅读