R语言学习笔记 -- 【par()函数】篇-《R作图-现代统计图形》

注:参考书籍《R作图–现代统计图形》谢益辉
par()函数的特点:
par()函数可以用来设置或者获取图形参数。
函数par()可以全局设置图形参数,而在具体作图函数plot() 或 lines()是临时设置图形参数。二者的区别是:前者会保留对参数的更改,也就是一直起作用,直到图形设备关闭,而后者并不会影响后续的作图效果。
par()函数的参数:
par()函数本身返回当前图形参数设置(以列表格式)
下面解释一些常用的参数,并写一些自己的理解:

  1. adj:adjust 调整,调整图中字符的相对位置。取值为长度为2的数值向量,其中每个参数一般多不会超过1(取值范围是[0,1]),含义:一个参数表示 ·字符边界矩形框·向左移动的距离和自身宽度的比例,第二个参数表示·字符边界矩形框·向下移动的距离和自身的高度的比例。
    c(0,0)表示整个字符串左下角对准设定的坐标点。
    c(1,0)表示整个字符串横向移动了整个自身宽度的距离,纵向不受影响。在这里插入图片描述
  2. ask切换到下一张图时,是否需要用户输入(敲回车和鼠标点击)。
    取值:布尔型,TRUE表示是,FALSE表示否;
    很多张图逐一出现并且需要按顺序一步步在图形设备上展示时十分有效,设置ask = TRUE,那么每一张图都要等用户点击回应后,才出现下一张新图。否则,所有的图一下全部闪过。
  3. bg:background 背景 ,设置图形的背景色。
  4. bty boundary style ,设置图形边框样式;
    取值:字符"o" “l” “7” “c” “u” “]”,字符本身的形状对应着边框的样式,分别是全闭(四条边都显示) , 上右开 , 上右闭 , 右开 , 上开,左开。其中,“l” ,“7”,“c” ,“u” 四个样式的展示图,如下:
    在这里插入图片描述
  5. cex :contraction and expansion 放缩和伸张,设置图上元素(文本和符号等)的缩小和放大的倍数;
    取值:一个相对于1的数值。
参数 含义
cex.axis 坐标轴刻度标记
cex.lab 坐标轴标题
cex.main 图主标题
cex.sub 图副标题
  1. col:color,设置图中符号(点、线)颜色
参数 含义
col.axis 坐标轴刻度标记
col.lab 坐标轴标题
col.main 图主标题
col.sub 图副标题
  1. family设置文本的字体族,含有无衬线、等宽、符号、字体等;
    取值:serif sans mono symbol
    在这里插入图片描述
  2. fg: frontground?foreground? 前景,设置前景色。如果后续没有别的颜色参数设置,本参数会影响几乎所有后续图形颜色;而如果后续设定了别的颜色参数,那么只会影响图形边框和坐标轴刻度线颜色。
  3. font:设置文本字体样式;
    取值:一个整数;一般地,1,2,3,4 分别表示正常、粗体、斜体和粗斜体。
    |参数|含义|
    | – | --|
    |font.axis|坐标轴刻度标签|
    |font.lab|坐标轴标题|
    |font.main|图主标题|
    |font.sub|图副标题|
  4. lab设置坐标轴刻度数目;
    取值:c(x,y)中x、y分别设置两轴的刻度数目。
  5. las坐标轴标签样式;
    取值:{0,1,2,3}四个整数之一,分别表示“总是平行于坐标轴”,“总是水平”,“总是垂直于坐标轴”,“总是竖直”。注意观察下图数字的方向和坐标轴的方向的关系:
    在这里插入图片描述
  6. lend:line end ,设置线条末端的样式;
    取值:{0,1,2}三个整数之一,或是对应的字符串’round’, ‘mitre’, ‘bevel’;
    在这里插入图片描述
  7. lheight:line height ,设置图中文本行高;
    取值:一个倍数;
  8. ljoin:line join ,设置线条相交处的样式;
    取值:{0,1,2}之一,对应的字符串’round’, ‘mitre’, ‘bevel’;,分别表示画圆角、画方角和切掉顶角,展示如下图:
    在这里插入图片描述
  9. lty:line style 线条虚实样式。设置参数时,可以使用数字或是字符串,还可用十六进制的数字组成的字符串表示线上实线和空白的相应长度。
参数 含义 字符串形式
0 不画线 ‘blank’
1 实线 ‘solid’
2 虚线 ‘dashed’
3 点线 ‘dotted’
4 点划线 ‘dotdash’
5 长划线 ‘longdash’
6 点长划线 ‘twodash’
  1. lwd1:line width设置线条宽度,默认为1.
    一些区域和边界:
    在这里插入图片描述
    以上图的左侧为例:
    设备区域:最大的那个灰色框;
    图形区域:实线围起来的那个框;
    作图区域:虚线围起来的那个框;
    外边界:设备区域的内边界->图形区域的外边界,也就是上图oma压住的那小部分灰色;
    图形边界:图形区域内边界->作图区域外边界,也就是上图mar压住的那小部分白色;

  2. mar:margin 页边距,设置图形边界空白宽度。按照“下,左,上,右”的顺序,默认为c(5,4,4,2)+0.1

  3. mex:margin expansion axis ? ,设置坐标轴的边界宽度的放缩倍数,默认为1;

  4. mfrow,mfcol:设置一页多图;
    取值:长度为2的向量,如c(nrow,ncol),
    表示分别设置的行数和列数。

  5. mgp 设置坐标轴的边界宽度;
    取值:长度为3的数值向量,分别表示坐标轴标题、坐标轴刻度线标签和坐标轴线的边界宽度,示例mgp = c(5,3,1)如下图:
    在这里插入图片描述

  6. oma:outer margin 外边界,设置外边界的宽度;
    取值:类似于mar,默认c(0,0,0);
    当一页只放一张图时,和mar不易区分;
    而当一页多图时,容易看出和mar的区别。

  7. pch:point character 点的符号,具体参数如下:

pch参数值 含义
19 实圆点
20 小实圆点
21 圆圈
22 正方形
23 菱形
24 正三角尖
25 倒三角尖

其中,21-25可以使用bg参数填充颜色;

  1. pty:picture style? ,设置作图区域的形状,默认‘m’–尽可能最大化作图区域(max);
    取值’s’–表示设置作图区域为正方形;
  2. srt:string rotation? 设置字符串的旋转角度
    在这里插入图片描述
  3. tcktcl,二者都是设置坐标轴刻度线的高度,而且取值都是比例值,只是前者是与图形宽高的比例值,后者是与文本行高的比例值,正值表示向内画刻度线,负值表示向外画刻度线。默认:不使用tck,即设为NA,;使用tcl参数;
    在这里插入图片描述
  4. usr:using region ?,设置作图区域的范围限制;
    取值:长度为4的数值向量c(x1 , x2 , x3 , x4),分别表示作图区域内x轴的左右极限和y轴的上下极限。如果设置xlog,ylog = TRUE,也就是坐标取对数,那么实际设置的极限都是10的相应幂次。
  5. xaxs,yaxs设置坐标范围的计算方式,
    取值为’r’,则表示对原始数据的范围扩大4倍,然后用范围画坐标轴;取值为‘i’,表示使用原始数据范围;
  6. xpd:对超出边界的图形的处理方式,
    取值:
    若为NA,把图形限制在设备区域内;
    若为TRUE,把图形限制在图形区域内,出界的图形截取;
    若为 FALSE,把图形限制在作图区域内,出界的图形截取。

  • 以下9组参数,只能通过par函数设置,不可在其他作图函数中设置。
ask
fig,fin
lheight
mai,mar,mex,mfcol,mfrow,mfg
new
oma,omd,omi
pin,plt,ps,pty
usr
xlog,ylog
  • par()函数初始参数的恢复办法:
  1. 预先保存到一个对象中opar <- par()
  2. 每做完一幅图都把图形设备关掉,然后再作下一幅图。

  • 一个不太相关的作图示例:
#绘出正态分布图像,并插入文字标注
x = seq(-3 , 3 , length = 200) #生成(-3,3)上的一列数,共200个
y = dnorm(x) #density,正态分布的概率密度曲线函数值
xx = seq(-1.65 , 1.65 , length = 100)
yy = c(0 , dnorm(xx) , 0)
xx = c(-1.65 , xx , 1.65)
#生成灰色多边形
polygon(xx , yy , col = "gray" , border = NA)
lines(x , y)
text(0 , 0.05 , "P(-1.65<x<1.65) = 90")#插入文本标注

结果如下:
在这里插入图片描述

发布了124 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43448491/article/details/104159079