R小tip(三) 子母图画法

作者: 小潤澤 | 来源:发表于2020-01-13 20:23 被阅读0次

    这次我们来谈论下如何画子母图,参考推送:
    https://www.jianshu.com/p/dfa4727049a6
    采用cowplot的方法我上次已经叙述过了,这次将不在叙述
    这次参考的是这篇:
    https://www.jianshu.com/p/fd804fbbaa2a

    基于基础作图

    #主图
    par(fig = c(0,1,0,1))
    barplot(height = 10:1)
    #小图
    par(fig = c(0.55, 1, 0.5, 1), new = T)  
    barplot(height = 5:1) 
    
    image.png

    这个的原理是用par()函数指定图的位置(坐标),然后映射上去

    还有就是利用R包:

    library(TeachingDemos)
    barplot(height = 10:1)
    subplot( 
      barplot(height = 5:1), 
      x=grconvertX(c(0.6,1), from='npc'), #调整小图的横坐标位置
      y=grconvertY(c(0.5,1), from='npc'), #调整小图的纵坐标位置
      type='fig', pars=list(mar=c(1.5,1.5,0,0))) 
    
    image.png

    基于ggplot

    这个我直接盗用了原推送的源代码,若有侵权我立马删

    library(ggplot2) 
    library(grid)
    data(iris)
    
    chart1 <- ggplot(data = iris, aes(x = Sepal.Length, y = Petal.Length, color = Species, shape = Species)) + geom_point() + theme_bw()
    chart1
    chart2 <- ggplot(data = iris, aes(x = Species, y = Sepal.Length, color = Species)) + geom_boxplot() + guides(color = FALSE ) + xlab('') + ylab('') + theme_bw()
    print(chart2, vp = viewport(x = 0.65, y = 0.25, width = 0.3, height = 0.25)) #这里指定chart2 的位置和长宽,用于映射到主图
    
    image.png

    ggplot的原理是图层叠加,我们完全可以画两幅图,先出主图chart1 ,然后将chart2按照自己设计的规格给print出来

    相关文章

      网友评论

        本文标题:R小tip(三) 子母图画法

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