美文网首页
R-拼图系列-基础函数

R-拼图系列-基础函数

作者: 小贝学生信 | 来源:发表于2021-11-08 21:20 被阅读0次

    R语言的基础绘图参数可通过par()函数设置或者查询。关于拼图相关主要为mfcolmfrow,此外layout()函数可以实现更精细的布局调整。

    0 绘图基本流程(4步)

    # (1) 保存原始的默认参数
    opar <- par(no.readonly=TRUE)
    # (2) 声明拼图方案
    par(mfcol=c(2,1)) 
    # or
    # layout(matrix(c(1,1,2,3),2,2,byrow=TRUE))  
    # (3) 基础绘图函数绘制图形
    data(mtcars)
    plot(mtcars$wt, mtcars$mpg)
    barplot(mtcars$mpg)
    
    # (4) 恢复默认布局参数:一个面板一张图
    par(opar)
    

    1、mfcolmfrow参数

    • mfcol=c(x,y)mfrow=c(x,y)将初始绘图面板分割为x行,y列;
    • 二者区别在于前者按列的顺序依次填充、布局;而后者为按行依次填充、布局
    opar <- par(no.readonly=TRUE)
    par(mfcol=c(2,1)) #2行1列
    #par(mfrow=c(2,1)) 
    data(mtcars)
    plot(mtcars$wt, mtcars$mpg)
    barplot(mtcars$mpg)
    par(opar)
    
    opar <- par(no.readonly=TRUE)
    par(mfrow=c(2,2)) #2行2列(按行填充)
    plot(mtcars$wt, mtcars$mpg)
    barplot(mtcars$mpg)
    plot(density(mtcars$wt))
    hist(mtcars$qsec)
    par(opar)
    

    上述的拼图方法是比较规矩的,即把图平均分为几行几列。下面介绍的方法会实现更灵活的布局方案。

    2、layout()布局

    (1)首先通过矩阵设置排版方案

    如下矩阵表示将三张图拼在一起:第一张图在第一行,第二、三张图在第二行

    mt = matrix(c(1,1,2,3),
                nrow = 2, byrow=TRUE)
    mt
    #     [,1] [,2]
    # [1,]    1    1
    # [2,]    2    3
    

    如下矩阵表示将四张图拼在一起:第一张图在第一列,第二、三张图在第二列,第四张图在第三列

    mt = matrix(c(1,1,2,3,4,4),
                nrow = 2, byrow=FALSE)
    mt
    #       [,1] [,2] [,3]
    # [1,]    1    2    4
    # [2,]    1    3    4
    

    (2) 然后设置长宽比

    • 主要通过widths参数、heights参数设调整,默认子图为等宽等高;可结合下面示例体会用法

    (3) 示例

    opar <- par(no.readonly=TRUE)
    #布局设置
    mt = matrix(c(1,1,2,3),
                nrow = 2,byrow=TRUE)
    layout(mt,
           widths=c(3,1),  #高度比为 3:1
           heights=c(1,2))  #宽度比为 1:2
    #绘图
    plot(mtcars$wt, mtcars$mpg)
    barplot(mtcars$mpg)
    plot(density(mtcars$wt))
    par(opar)
    
    opar <- par(no.readonly=TRUE)
    
    mt = matrix(c(1,1,2,3,4,4),
                nrow = 2, byrow=FALSE)
    layout(mt, 
           widths = c(2,2,1), 
           heights = c(1,2))  
    
    plot(mtcars$wt, mtcars$mpg)
    barplot(mtcars$mpg)
    plot(density(mtcars$wt))
    hist(mtcars$qsec)
    
    par(opar)
    

    相关文章

      网友评论

          本文标题:R-拼图系列-基础函数

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