张铁军,陈兴栋等 著

R语言基础绘图系统

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

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

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

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

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

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

  1. bty <- c('o', 'l' , '7', 'c', 'u', ']')
  2. par(mfrow=c(3,2)) #切分画布
  3. for(i in 1:6){
  4. par(bty=bty[i])
  5. plot(1:5,main=paste("the bty is",bty[i],sep = ':'))
  6. }
  • 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加入绘图函数中。

  1. #全局设置线宽
  2. par(mfrow=c(2,3))
  3. for(i in 1:6){
  4. par(lty=i,lwd=i) #设置不同线型和线宽
  5. plot(1:5,type = 'l',main = paste('the lty is',i,sep = ':'),
  6. sub = paste('the lwd is',i,sep = ':'))
  7. }
  8. #仅设置线条宽度
  9. 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可进行颜色填充。


  1. plot(rep(1:5,times=5),rep(1:5,each=5),pch=1:25,
  2. cex=1.5, bty='l', xlim = c(1,5.4),
  3. xlab = '',ylab = '',main = '25种不同点型')
  4. #低级绘图函数,图中添加文本
  5. text(rep(1:5,times=5)+0.15,rep(1:5,each=5),
  6. labels = 1:25, col = 'red')
  • srt 图中字符串旋转角度。
  1. plot(1:25,pch=1)
  2. text(x=c(5,10,20),y=c(7,15,10),col = 'red',
  3. labels = c("R","China","Love"),
  4. srt=30)
  • tck和tcl 设置坐标轴刻度线的高度。tck是与图形宽度和高度的比例值(-1到1之间),tcl是与文本行高的比例值。负值表坐标轴刻度向外,正值表示向内。
  1. par(mfrow=c(1,2))
  2. plot(1:10,tck=0.03,main = 'tck=0.03') #刻度线朝内
  3. 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参数,用于在当前图形上添加新的图形。

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

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

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

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

  1. #上下排布
  2. #图A,上半边绘图区域
  3. par(omi=rep(0,4),mai=c(3.5,1,1,1),xpd=NA)
  4. plot(1:10)
  5. text(-0.5,12,'A',cex = 2,family='serif')
  6. #图B,下半边绘图区域
  7. par(new=TRUE,mai=c(1,1,3.5,1))
  8. plot(1:10)
  9. text(-0.5,12,'B',cex=2,family='serif')
  10. #左右排布
  11. #mai下左上右
  12. #图A,左半边绘图区域
  13. par(omi=rep(0,4),mai=c(1,1,1,5),xpd=NA)
  14. plot(1:10)
  15. text(-0.5,12,'A',cex = 2,family='serif')
  16. #图B,右半边绘图区域
  17. par(new=TRUE,mai=c(1,5,1,1))
  18. plot(1:10)
  19. 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.将所有参数保存为一个实名对象,待图形绘制完毕后,再释放实名对象。
  1. op <- par(fig=c(0.02,0.5,0.5,0.98),new=TRUE)
  2. hist(x,probability = T,col = 'light blue',
  3. xlab='',ylab='',main = '',axes = F)
  4. lines(density(x),col="red",lwd=2)
  5. box()
  6. #释放par参数
  7. par(op)
  • 2.图形绘制完成后,调用dev.off关闭绘图框。

R语言与医学统计图形【1】par函数的更多相关文章

  1. R语言与医学统计图形【2】散点图、盒形图

    R语言基础绘图系统 基础图形--散点图.盒形图 plot是一个泛型函数(generic method),对于不同的数据绘制不同的图形. par函数的大部分参数在plot中通用. 1.散点图 plot绘 ...

  2. R语言与医学统计图形【6】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...

  3. R语言与医学统计图形【5】饼图、条件图

    R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...

  4. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  5. R语言与医学统计图形【3】条形图、误差图

    R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...

  6. R语言与医学统计图形【7】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...

  7. R语言与医学统计图形【8】颜色的选取

    R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...

  8. R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr

    ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...

  9. R语言与医学统计图形-【33】生存曲线、森林图、曼哈顿图

    1.生存曲线 基础包survival+扩展包survminer. survival包内置肺癌数据集lung. library(survival) library(survminer) str(lung ...

随机推荐

  1. RSA加密——前端JSEncrypt

    RSA加密--前端JSEncrypt 介绍 ​ JSEncrypt是一个RSA加密库,在没有SSL加密传输通道支持https协议的情况下,该库可以在http传输重要信息如时,保证数据的安全性.我们小组 ...

  2. 小白自制Linux开发板 九. 修改开机Logo

    许久不见啊,今天我们继续来修改我们的系统. 通过前面的几篇文章我们已经能轻松驾驭我们的开发板了,但是现在都是追求个性化的时代,我们在开发板上打上了自己的Logo,那我们是否可以改变开机启动的Logo呢 ...

  3. 力扣 - 剑指 Offer 57 - II. 和为s的连续正数序列

    题目 剑指 Offer 57 - II. 和为s的连续正数序列 思路1(双指针/滑动窗口) 所谓滑动窗口,就是需要我们从一个序列中找到某些连续的子序列,我们可以使用两个for循环来遍历查找,但是未免效 ...

  4. 进程间通信消息队列msgsnd执行:Invlid argument——万恶的经验主义

    最近在搞进程间通信,首先在我的ubuntu 14.04上写了接口和测试demo,编译和执行都OK,,代码如下: 接口文件ipcmsg.h /* ipcmsg.h */ #ifndef H_MSGIPC ...

  5. sort-list leetcode C++

    Sort a linked list in O(n log n) time using constant space complexity. C++ /** * Definition for sing ...

  6. Django 前端BootCSS 实现分页

    通过使用bootstrap框架,并配合Django自带的Paginator分页组件即可实现简单的分页效果. 1.创建MyWeb项目 python manage.py startapp MyWeb 2. ...

  7. redis 的主从模式哨兵模式

    原理理解 1,哨兵的作用就是检测redis主服务的状态,如果主服务器挂了,从服务就自动切换为主服务器,变为master.哨兵是一个独立的进程,作为进程,它会独立运行.其原理是哨兵通过发送命令,等待Re ...

  8. Oracle 相关命令

    http://www.mamicode.com/info-detail-2481866.html sql语句 system用户登陆 查看表空间和存放位置 select t1.name,t2.name ...

  9. 基于eNSP的NAT/NAPT协议仿真实践

    一. 基本原理 eNSP(Enterprise Network Simulation Platform)是一款由华为提供的.可扩展的.图形化 操作的网络仿真工具平台,主要对企业网络路由器.交换机进行软 ...

  10. PHP查看内存占用

    function test(){ echo memory_get_usage(), '<br>'; $start = memory_get_usage(); $a = []; for ($ ...