zoukankan      html  css  js  c++  java
  • R语言与医学统计图形【1】par函数

    张铁军,陈兴栋等 著

    R语言基础绘图系统

    基础绘图包之高级绘图函数——par函数

    基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics、grDevices等。

    掌握par函数(作为20个主要统计图形函数之一)的主要参数。?par

    • adj 微调图中字符位置。adj=c(x,y),相对左下角坐标点,一般不超过1。

    • bg 绘图区域背景色。par(bg="green")

    • bty 设置图形边框样式。包含o, l , 7, c, u, ]可选。

    bty <- c('o', 'l' , '7', 'c', 'u', ']')
    par(mfrow=c(3,2)) #切分画布
    for(i in 1:6){
      par(bty=bty[i])
      plot(1:5,main=paste("the bty is",bty[i],sep = ':'))
    }
    
    • cex 设置图上元素,如文字或符号的缩放倍数。plot(1:5, cex=1:5)。衍生参数:cex.lab, cex.main, cex.sub, cex.axis.

    • col 设置元素颜色。

    • family 文本字体。包括serif, sans, mono, symbol。如par(family='serif')即为医学科研论文中常用的times new roman字体。

    • font 字体样式。包括1, 2, 3, 4分别为正常,粗体,斜体和粗斜体。

    • las 坐标轴刻度标签样式。包括0,1,2,3,分别为平行于坐标轴,水平,垂直于坐标轴,垂直。

    • lty 线条样式。包括0,1,2,3,4,5,6,分别为不划线,实线,虚线,点线,点划线,长划线,点长划线。

    • lwd 线条宽度。用法类似cex。注意:当在par函数中使用lwd时,图形中所有元素(如线条,坐标轴,边框等)的线宽都会改变;若只需图中线条宽度变化,需将lwd加入绘图函数中。

    #全局设置线宽
    par(mfrow=c(2,3))
    for(i in 1:6){
      par(lty=i,lwd=i) #设置不同线型和线宽
      plot(1:5,type = 'l',main = paste('the lty is',i,sep = ':'),
           sub = paste('the lwd is',i,sep = ':'))
    }
    
    #仅设置线条宽度
    plot(rnorm(50),type = 'l',lwd=2,main = "图中线条宽度为默认的2倍")
    
    • mar和mai 设置图形边界空白宽度,用于控制绘图面积大小。接受4个数值向量,分别为图形下、左、上、右的边界宽度。前者默认c(5,4,4,2)+0.1,单位为线宽,后者单位为英寸。

    • mfrow和mfcol 画布切割。2个元素,几行几列组合。

    • mgp 坐标轴到画布边缘的距离。后接3个元素分别表示坐标轴标题、刻度标签、坐标轴线到图形的距离,默认mgp=c(3,1,0)

    • pch 点的形状。包括25种,即1-25,其中15-20可进行颜色填充。

    
    plot(rep(1:5,times=5),rep(1:5,each=5),pch=1:25,
         cex=1.5, bty='l', xlim = c(1,5.4),
         xlab = '',ylab = '',main = '25种不同点型')
    
    #低级绘图函数,图中添加文本
    text(rep(1:5,times=5)+0.15,rep(1:5,each=5),
         labels = 1:25, col = 'red')
    
    • srt 图中字符串旋转角度。
    plot(1:25,pch=1)
    text(x=c(5,10,20),y=c(7,15,10),col = 'red',
         labels = c("R","China","Love"),
         srt=30)
    
    • tck和tcl 设置坐标轴刻度线的高度。tck是与图形宽度和高度的比例值(-1到1之间),tcl是与文本行高的比例值。负值表坐标轴刻度向外,正值表示向内。
    par(mfrow=c(1,2))
    plot(1:10,tck=0.03,main = 'tck=0.03') #刻度线朝内
    plot(1:10,tck=-0.03,main = 'tck=-0.03') #刻度线朝外
    
    • usr 限定画布大小,usr=c(x1,x2,y1,y2),分别表示x轴左、右极限,y轴的下、上极限的矩形区域。

    • xaxt和yaxt 设置坐标轴样式,默认标准样式为s。若不需要坐标轴或需自定义坐标轴,可设置n,即不绘制刻度及标签,但仍有一条刻度线。

    • xlog和ylog 坐标轴取值log转换。

    • fig 取值fig=c(x1,x2,y1,y2),配合new=TRUE参数,用于在当前图形上添加新的图形。

    x <- rnorm(1000)
    #QQ图
    qqnorm(x) 
    #添加正态拟合线
    qqline(x,col="red") 
    #设置参数,新图形位置
    op <- par(fig=c(0.02,0.5,0.5,0.98),new=TRUE)
      #0.02表示新图形左边框与原图左边框的距离是原图宽度的2%
      #0.5表示新图形右边框与原图左边框的距离是原图宽度的50%
      #0.5表示新图形下边框......下................高度的50%
      #0.98表示.....上..........下......................98%
    
    #绘制新图形直方图
    hist(x,probability = T,col = 'light blue',
         xlab='',ylab='',main = '',axes = F)
    #添加概率密度曲线
    lines(density(x),col="red",lwd=2)
    #新图形加边框
    box()
    #释放par参数
    par(op)
    
    • xpd 设置绘图区域大小。包括TRUE, FALSE, NA,FALSE代表绘图区域,即图形中点线条等元素所占面积;TRUE代表图形区域,即图形占地面积;NA代表设备区域,即Rstudio中的plots窗口面积。
      image.png

    坐标轴、标题等元素在图形区域,而非绘图区域。这个参数作用就是实现设定绘图区域大小,方面我们在绘图区域外部添加额外内容。

    par(omi=c(0.1,0.1,0.2,0.2),mai=c(2,2,1,2),xpd=NA)
      #omi参数定义图形区域与设备区域间的距离(英寸)。
      #mai参数定义绘图区域与图形区域间的距离(英寸)。
    plot(1:10)
    text(3,-5,'绘图区域外添加的文字')
    text(-0.5,12,'A',cex = 3,family='serif')
    

    科研论文中版面图(panel plot)的应用:即一张画布分布多张图。

    #上下排布
    #图A,上半边绘图区域
    par(omi=rep(0,4),mai=c(3.5,1,1,1),xpd=NA)
    plot(1:10)
    text(-0.5,12,'A',cex = 2,family='serif')
    #图B,下半边绘图区域
    par(new=TRUE,mai=c(1,1,3.5,1))
    plot(1:10)
    text(-0.5,12,'B',cex=2,family='serif')
    
    #左右排布
    #mai下左上右
    #图A,左半边绘图区域
    par(omi=rep(0,4),mai=c(1,1,1,5),xpd=NA)
    plot(1:10)
    text(-0.5,12,'A',cex = 2,family='serif')
    #图B,右半边绘图区域
    par(new=TRUE,mai=c(1,5,1,1))
    plot(1:10)
    text(-0.5,12,'B',cex=2,family='serif')
    
    • ask 逻辑参数。设为TRUE时,一次展示一张画布显示一张图。若为FALSE,所有图一闪而过。

    以上par函数的22个参数较为常用。大部分可直接在高级绘图函数中使用,等同par()使用;部分参数只能在par中设置和使用,包括ask, fig, fin ,lheight, mai, mar, mfcol, mfrow, mfg, new, oma, omd, omi, pin, plt, ps, pty, usr, xlog, ylog

    注意:
    par函数对图形参数的改变是永久性的,即在R关闭前,par函数对每张图都起作用。以下方法解决永久性改变问题:

    • 1.将所有参数保存为一个实名对象,待图形绘制完毕后,再释放实名对象。
    op <- par(fig=c(0.02,0.5,0.5,0.98),new=TRUE)
    hist(x,probability = T,col = 'light blue',
         xlab='',ylab='',main = '',axes = F)
    lines(density(x),col="red",lwd=2)
    box()
    #释放par参数
    par(op)
    
    • 2.图形绘制完成后,调用dev.off关闭绘图框。
  • 相关阅读:
    Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
    Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
    Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
    Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries
    Elasticsearch date 类型详解
    python 历险记(五)— python 中的模块
    python 历险记(四)— python 中常用的 json 操作
    python 历险记(三)— python 的常用文件操作
    Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI
    Elasticsearch Java Rest Client API 整理总结 (一)——Document API
  • 原文地址:https://www.cnblogs.com/jessepeng/p/12273608.html
Copyright © 2011-2022 走看看