R有着非常强大的绘图功能,我们可以利用简单的几行代码绘制出各种图形来,但是有时候默认的图形设置没法满足我们的需要,甚至会碰到各种各样的小问题:如坐标轴或者标题出界了,或者图例说明的大小或者位置遮挡住了图形,甚至有时候默认的颜色也不能满足我们的需求。如何进行调整呢?这就用到了“强大”的函数par()。我们可以通过设定函数par()的各个参数来调整我们的图形,这篇博文就是对函数par()的各个参数进行一下总结。

函数par()的使用格式如下:

par(..., no.readonly = FALSE)

其中...表示所有类似于tag=value形式的参数。下面会具体的对这些参数进行描述。当参数no.readonly=TRUE时,函数par()就只允许有这一个参数了,并且会返回当前绘图设备中各个参数的参数值。

每一个图形设备都有自己的绘图参数,如果当前还没有打开绘图设备,那么函数par()在进行参数设置之前会自动的打开一个新绘图设备。
   如前面所说,直接在R编辑器中输入命令par()或者par(no.readonly=TRUE)都可以获取当前的各个绘图参数。
    函数par()中的参数可以分为三大类:

  1. 只能读取,不能进行设置。包括参数cin,cra,csi,cxy, din。
  2. 只能通过函数par()进行设置。包括参数:
    • "ask",
    • "fig""fin",
    • "lheight",
    • "mai""mar""mex""mfcol""mfrow""mfg",
    • "new",
    • "oma""omd""omi",
    • "pin""plt""ps""pty",
    • "usr",
    • "xlog""ylog"
  3. 剩下的参数除了函数par()外,还可以通过各种高级绘图函数进行设置,如函数plot,points,lines,abline,title,text,axis,image,box,contour,rect,arrows等。

当一个参数的值被设定时,默认的会返回设定之前这个参数的值,我们可以通常一些变量把这些值保存下来。执行完操作之后,可以利用这些历史值进行恢复设定(但是不建议这么做,因为可能会引起一些参数值冲突)。如:

> x<-par(bg="red")
> x
$bg
[1] "transparent"

> plot(1:10)
> par(x)
> plot(1:100)

接下来就对各个参数的含义进行一下大概的说明,中间会用一些简单的代码作为示例。

  • adj。该参数值用于设定在text、mtext、title中字符串的对齐方向。0表示左对齐,0.5(默认值)表示居中,而1表示右对齐(说明一下,区间[0,1]内的任何值都可以作为参数adj的有效值,并且在大部分的图形设备中,介于区间外的值也是有效的)。注意一下,函数text中的参数adj的值可以以类似于形式adj=c(x,y)调整方向。但是在text中该参数的值影响的是对点的标记,对函数mtext和title来说,参数adj的值影响的是整个图像或设备区域。

    > par(mfrow=c(1,2))
    > plot(1:4)
    > title("plot(1:4)",adj=0)
    > plot(1:4)
    > title("plot(1:4)",adj=1)

  • ann。如果ann=FALSE,那么高水平绘图函数会调用函数plot.default使对坐标轴名称、整体图像名称不做任何注解。默认值为TRUE。

> plot(1:4,ann=FALSE,main='plot(1:4,ann=FALSE)')#尽管指定了参数main的值,但是图像中仍然没有显示
> plot(1:4,ann=TRUE,main='plot(1:4,ann=FALSE)')

  • ask,逻辑值。若为TRUE(且当前的R会话是可交互状态),则在绘制新图像之前会要求用户输入确认信息。同样的,会对扩展包grid和lattice的输出有影响,甚至可能会应用到没有屏幕输出的设备上(但可能会没有效果)。
  • bg。用于设定绘图区域的背景颜色。当通过函数par()调用时,会同时设定参数new=FALSE。对很多设备来说,该参数的初始值就是该设备的背景颜色值,其他情况下一般为"white"。需要注意一点的是,一些图形函数例如plot.default和points等也有名为bg的参数,但是代表的含义是不同的。
  • bty。该参数值为字符串型,用于限定图形的边框类型。如果bty的值为"o"(默认值)、"l"、"7"、"c"、"u"或者"]"中的任意一个,对应的边框类型就和该字母的形状相似。如果bty的值为"n",表示无边框。
  • cex。用于表示对默认的绘图文本和符号放大多少倍。需要注意一些绘图函数如plot.default等也有一个相同名字的参数,但是此时表示在函数par()的参数cex的基础上再放大多少倍,此外还有函数points等接受一个数值向量为参数。
  • cex.axis。表示在当前的cex设定情况下,对坐标轴刻度值字体的放大倍数。
  • cex.lab。表示在当前的cex设定情况下,对坐标轴名称字体的放大倍数。
  • cex.main。表示在当前的cex设定情况下,对主标题字体的放大倍数。
  • cex.sub。表示在当前的cex设定情况下,对子标题字体的放大倍数。
  • cin。这是一个只读参数,不能进行修改。以形式(width,height)返回字体大小,单位为英寸。这和参数cra的作用一样,只是测量单位不同。
  • col。用于设定默认的绘图颜色(无可否认这是一个非常特别的参数,以后会总结博文专门讨论如何设定颜色)。
  • col.axis。坐标轴刻度值的颜色,默认为"black"。如代码:

> par(cex.axis=3,col.axis="red")

> plot(1:4)

  • col.lab。坐标轴名称的颜色,默认为"black"。
  • col.main。主标题的颜色,默认为"black"。
  • col.sub。子标题的颜色,默认为"black"。
  • cra。参见参数cin的说明。
  • crt。该参数的值为一个表示度数的数值,用于表示单个字符的旋转度数,最好为90的倍数。和参数srt的不同之处在于后者是对整个字符串进行旋转。
  • csi。只读参数,返回默认的字符高度,以英寸为单位。
  • cxy。只读参数,以形式(width,height)返回默认的字符宽度、高度,其中par("cxy")=par("cin")/par("pin")。
  • din。只读参数,表示绘图设备的尺寸规格,以形式(width,height)返回,单位为英寸。
  • family。图形中字符的字体类型。最大的长度为200 bytes。默认值为"",表示采用绘图设备的默认字体。
  • fg。图形中显著位置的颜色(如坐标轴、刻度线,边框等),一般默认为"black"。
  • fig。一个数值向量,形式为c(x1, x2, y1, y2),用于设定当前图形在绘图设备中所占区域,注意需要满足x1<x2,y1<y2。如果修改参数fig,会自动打开一个新的绘图设备,而若希望在原来的绘图设备中添加新的图形,需要和参数new=TRUE一起使用。如代码:

> par(fig=c(0,0.5,0,0.5))
> plot(1:3)

> par(fig=c(0.5,1,0.5,1))
> plot(1:3)

> par(fig=c(0,0.5,0,0.5),new=TRUE)

> plot(1:3)

  • fin。当前绘图区域的尺寸规格,形式为(width,height),单位为英寸。如果修改了这个参数的值,默认为启动一个新的绘图设备。

  • font。用于设定采用哪种字型,为一个整数。1代表纯文本(默认值),2表示黑体,3表示斜体,4表示黑色斜体。在Adobe字符编码下,5也可以。

  • font.axis。坐标轴刻度值的字型。

  • font.lab。坐标轴名称的字型。

  • font.main。主标题的字型。

  • font.sub。子标题的字型。

  • lab。以形式c(x,y,len)表示的数值型向量,用于对坐标轴的名称进行设定。值x和y用于设定x和y轴上的刻度线的个数,而len设定了刻度线的长度(目前R中这个值是没有效应的)。

  • las。只能是0,1,2,3中的某一个值,用于表示刻度值的方向。0表示总是平行于坐标轴;1表示总是水平方向;2表示总是垂直于坐标轴;3表示总是垂直方向。

  • lend。线段的端点样式,参数值可以为一个整数或者一个字符串。参数值为0或者"round"时,表示端点样式为圆角(默认值);为1或者"butt"时,表示端点直接截断;为2或者"square"表示延伸末端。如代码:

> plot(1:8,type="n",ylim=c(1,6))
> x0<-c(1,2,3,5,6)
> y0<-rep(1,5)
> x1<-x0
> y1<-rep(6,5)
> segments(x0,y0,x1,y1)
> x0<-rep(0,4)
> y0<-seq(1.3,4.3,1)
> x1<-c(1,6,3,1)
> y1<-y0
#默认情形
> segments(x0,y0,x1,y0,lwd=10,col="red")
#修改参数lend=1
> y0<-seq(1.6,4.6,1)
> y1<-y0
> segments(x0,y0,x1,y0,lwd=10,col="green",lend=1)
#修改参数lend=2
> y0<-seq(1.9,4.9,1)
> y1<-y0
> x0<-x1
> x1<-c(2,8,5,3)
> segments(x0,y0,x1,y0,lwd=10,col="blue",lend=2)

  • lty。直线类型。参数的值可以为整数(0为空,1为实线(默认值),2为虚线,3为点线,还可以为4、5、6等),也可以为字符串(和整数是一一对应的,如"blank"、"solid"、"dashed"、"dotted"、"dotdash"、"longdash"或者 "twodash")。

  • lwd。线条宽度。必须为一个整数,默认值为1。具体的实现根据设备而定,有一些绘图设备不支持线条宽度小于1。

  • mfcol,mrow。用于设定图像设备的布局(简单的说就是将当前的绘图设备分隔成了nr*nc个子设备),参数形式为c(nr, nc)。子图的绘图顺序是按列还是按行就分别根据是参数指定的是mfcol还是mfrow。想要实现相同的功能还可以利用函数layout或者split.screen。

  • mgp。设定标题、坐标轴名称、坐标轴距图形边框的距离。默认值为c(3,1,0),其中第一个值影响的是标题。

  • new。逻辑值,默认值为FALSE。如果设定为TRUE,那么下一个高级绘图命令并不会清空当前绘图设备。

  • oma。参数形式为c(bottom, left, top, right) ,用于设定外边界。

  • omi。和参数oma的作用一样,只是这次参数的单位为英寸。

  • pch。表示点的形状,它的值可以为数值型(介于0到25之间的数值),也可以为字符型。1代表圆圈,2代表三角形,3代表“+”号。当pch的值为字符型时,那么点就通过该字符来表示。

  • pin。当前的维度,形式为c(width,height),单位为英寸。

  • plt。形式为 c(x1, x2, y1, y2),设定当前的绘图区域。

  • pty。一个字符型参数,表示当前绘图区域的形状,"s"表示生成一个正方形区域,而"m"表示生成最大的绘图区域。

  • srt。字符串旋转度数,只支持函数text。

  • tck。刻度线的长度,为一个小于等于的小数,表示绘图区域的高度或宽度的一部分(取高度或宽度中较小的值)。如果tck=1,则表示绘制网格线。默认值为NA(相当于tcl=-0.5)。

  • tcl。同样可用于设定刻度线的长度,但是和tck的单位不同。它的默认值为-0.5。

  • usr。一个形式为c(x1, x2, y1, y2)的向量,表示当前绘图区域的坐标值范围:c(xleft, xright, ybottom, ytop)。如果采用的对数刻度(如par("xlog")=TRUE),那么x坐标轴的表示范围为10^par("usr")[1:2],同样也可以得到y坐标轴的表示范围。

  • xaxp。一个形式为c(x1, x2, n)的向量,表示当par("xlog")=false时,x坐标轴的刻度线的区间及区间中的刻度线个数。若par("xlog")=TRUE,情形就稍微复杂了:若取值范围较小,那么n是一个负数,且刻度线的分布和正常情形(没有对数转换)下相似;若n取值为1、2、3中的一个,c(x1,x2)=10^par("usr")[1:2](并且此时par("usr")是指par("xlog")=TRUE情况下返回的值)。具体解释如下:

n=1,在坐标值为10^j(j为整数)处绘制刻度线。

n=2,在坐标值为k*(10^j)处绘制刻度线,其中k为1或者5。

n=3,在坐标值为k*(10^j)处绘制刻度线,其中k为1、2或者5。

  • yaxp。同xaxp类似,表示y坐标轴的刻度线的区间及区间中的刻度线个数。

  • xaxs。坐标轴x的间隔设定方式。取值范围为:"r", "i""e""s""d"。一般来说,计算方式是由xlim的数值范围确定的(如果xlim指定了的话)。"r"(regular)首先会对数值范围向两端各延伸4%,然后在延伸后的数值区间中设置坐标值;"i"(internal)直接在原始的数据范围中设置坐标值;"s"(standard)和"e"(extended)、;"d"(direct)目前还不支持。

  • yaxs。类似于xaxs,对坐标轴y的间隔设定方式。

  • xaxt。用于设定x坐标轴的刻度值类型,为一个字符。"n"表示不绘制刻度值及刻度线;"s"表示绘制,默认值。

  • yaxt。类似于xaxt。

  • xlog。一个逻辑值。如果为TRUE,表示对x轴为对数坐标轴,默认值为FALSE。

  • ylog。类似于xlog。

   最后,说明一点:如何设定颜色?R提供了很多和颜色相关的函数供我们调用,如colors()、palette()、rainbow()、rgb()、gray()、hsv()、hcl()等等。以后也会对“如何设定颜色”这一问题进行整理,并且接下来关于R语言的博文也会重点关注于可视化方面,包括如何绘制散点图、条形图、热点图、地图等。

R中设置图形参数--函数par()详解相关推荐

  1. R中设置图形参数--函数par()…

    原文地址:R中设置图形参数--函数par()详解作者:菜鸟的成长 R有着非常强大的绘图功能,我们可以利用简单的几行代码绘制出各种图形来,但是有时候默认的图形设置没法满足我们的需要,甚至会碰到各种各样的 ...

  2. python format函数实例_python中强大的format函数实例详解

    python中format函数用于字符串的格式化 自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串. 语法 它通过{}和:来代替%. 请看下 ...

  3. R语言tidyr包gather()函数实战详解:数据收缩、从宽表到窄表

    R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 目录 R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 收缩两列数据

  4. R语言tidyr包spread()函数实战详解:数据裂变、从窄表到宽表

    R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表 目录 R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表

  5. R语言tidyr包Unite()函数实战详解:多个数据列合并为一列

    R语言tidyr包Unite()函数实战详解:多个数据列合并为一列 目录 R语言tidyr包Unite()函数实战详解:多个数据列合并为一列

  6. R语言tidyr包separate()函数实战详解:一列裂变为多列

    R语言tidyr包separate()函数实战详解:一列裂变为多列 目录 R语言tidyr包separate()函数实战详解:一列裂变为多列 一列裂变为两列

  7. Pandas中loc和iloc函数用法详解(源码+实例)

    loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行) iloc函数:通过行号来取行数据(如取第二行 ...

  8. 【php】PHP中file_get_contents()与file_put_contents()函数细节详解

    file_get_contents函数 一般的也就是使用file_get_contents($url),但是关于这个函数还有很多没有注意到的地方. 先看关于手册: file_get_contents( ...

  9. Android中设置定时闹钟以及AlarmManager详解

    AlarmManager是提供一种访问系统闹钟服务的方式,允许你去设置在将来的某个时间点去执行你的应用程序.当你的闹钟响起(时间到)时,在它上面注册的一个意图(Intent)将会被系统以广播发出,然后 ...

  10. c语言将字符串按空格分割_如何在c++中实现字符串分割函数split详解

    前言 在学习c++中string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割, ...

最新文章

  1. 产品策略研究期的数据分析与挖掘
  2. RocketMQ介绍与云服务器安装
  3. 数据类型及pythop运算符号
  4. c语言取奇数位构成新数,2、给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中.高位...
  5. Spark(4)——transformation、action、persist
  6. TypeError: 'NoneType' object is not subscriptable
  7. 使用Blink CEP实现差值聚合计算
  8. Windows10最新MySQL8.0.23安装教程(超级详细)
  9. MFC编译出来的程序不能在其他机器上用
  10. API接口的安全设计验证:ticket,签名,时间戳
  11. Linux下服务器搭建(1)——Linux下搭建FTP服务器 vsftpd服务
  12. Hive什么时候可以用别名?
  13. QT音乐播放器(接入网易云API)
  14. 备战9月,美团50道软件测试经典面试题及答案汇总
  15. cyj等于什么英语单词_英语解题方法指导及例题分析
  16. 《Adaptive Unimodal Cost Volume Filtering for Deep Stereo Matching》
  17. CVE-2017-11176: A step-by-step Linux Kernel exploitation (part 3/4)
  18. 扎拉赞恩 服务器 微信群,魔兽8.0剧透 回归的扎拉赞恩与沃金的骨灰
  19. 成品入库过账bapi
  20. Android 通过 WebView 请求下载 APK

热门文章

  1. 计算机百科丨存储介质发展史
  2. MACD顶背离和底背离是什么(图解)
  3. JDBC - new Date插入mysql数据库,数据库时间多一秒问题
  4. 大数据导论2之大数据与云计算、物联网、人工智能
  5. PHP将图片剪切成圆形
  6. 闲谈IPv6-组播和广播
  7. 9.Makefile隐含规则
  8. iOS --切换控制器方式 push / modal
  9. 郭盛华为什么被称为国民校长?到底有什么来历?
  10. 电信光猫 DDNS路由设置-基于DNSPOD