美文网首页
ggplot2回顾(12): 一页多图

ggplot2回顾(12): 一页多图

作者: TOP生物信息 | 来源:发表于2019-12-08 20:07 被阅读0次
    library(tidyverse)
    library(grid)
    p1 <- mtcars%>%ggplot(aes(x=mpg,y=wt,color=factor(cyl)))+geom_point()
    p2 <- diamonds%>%ggplot(aes(x=cut,fill=color))+geom_bar(position = position_dodge())
    p3 <- diamonds%>%ggplot(aes(x=color,y=price))+geom_boxplot(outlier.shape = NA,fill="lightblue",alpha=0.4)+geom_violin(fill="grey",alpha=0.4)
    

    1. 运用子图

    需要使用pdf(), png()来存储,因为ggplot2自带的ggsave()只能保存一张图

    pdf("test1.pdf",width = 12,height = 10)
    p1 #主图
    subvp <- viewport(width = 0.4,height = 0.3,x=0.75,y=0.85) #这里的长宽、定位都是相对于主图的,需要多次调整
    print(p2,vp=subvp)
    dev.off()
    

    运用这种方法时,比较麻烦的地方是需要自己手动调整子图的位置。

    2. 运用矩形网格

    可以自由划分网格

    grid.newpage()
    pushViewport(viewport(layout = grid.layout(2,2))) #把画板均分为4份
    vplayout <- function(x,y)
      viewport(layout.pos.row = x,layout.pos.col = y)
    print(p1,vp=vplayout(1,1:2)) #1行的1,2列
    print(p2,vp=vplayout(2,1)) #2行1列
    print(p3,vp=vplayout(2,2)) #2行2列
    

    以上两种方法基于grid包,是拼图最基本的方法,有点落后了,现在已经有很多包可以很人性化地拼图。

    相关文章

      网友评论

          本文标题:ggplot2回顾(12): 一页多图

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