美文网首页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