前篇(graphics | 基础绘图系统(一)——主函数plot及其参数)介绍了基础系统的绘图主函数plot()
及其参数。实际上,plot()
函数的参数主要由par()
提供。不同于plot()
函数,par()
函数的参数除个别外一旦设定,除非再次更改或重启R,否则就会对后续所有的绘图命令起作用。在设置参数之前,可以使用以下代码保存绘图系统的默认参数:
# 储存当前参数
opar <- par(no.readonly = TRUE)
设置参数前可以先查看当前的参数值:
par("usr")
par(c("usr", "fin"))
大部分参数既可以在par()
中设置,又可以在plot()
中设置,区别在于前者设置的参数对全局起作用,后者设置的参数只对本条命令起作用,相当于plot()
中的...
参数,个别参数在两种情况下面对的对象也不同。还有,以下参数只能在par()
中使用:
- ask
- fig, fin
- lheight
- mai, mar, mex, mfcol, mfrow, mfg
- new
- oma, omd, omi
- pin, plt, ps, pty
- usr
- xlog, ylog
- ylbias
2 要素美化参数
颜色参数
- col:图形要素的颜色;
- bg:背景色;
- fg:前景色。
- bg在
par()
设置时表示整个绘图页面的背景颜色,在plot()
设置时只表示绘图图形的背景色;- fg表示除绘图图形要素以外的几何图形的颜色,如边框、坐标轴刻度线。
点和线要素参数
- cex:控制点状要素相对默认大小的倍数;
- pch:控制点状要素的形状,系统默认提供26种类型,分别以0-25之间的整数表示,也可以自定义字符;
- lwd:控制线状要素相对默认粗细的倍数;
- lty:控制线状要素的类型,系统默认提供7种类型,分别以0-6之间的整数表示;
par(mex = 0.5, mar = c(0, 0.5, 0, 0))
x <- c(rep(1:5, 5), 1)
y <- c(rep(5:1, each = 5), 0) + 1
plot(x,y, pch = 0:25, xlim = c(-1, 6), ylim = c(0, 7),
col = "red", bg = "blue", cex = 3,
axes = F, ann = F)
box("figure")
text(x+0.5, y, labels = 0:25)
segments(0.5, 6.5:0.5, 5.5, 6.5:0.5,
lty = 0:6, lwd = 2, col = "grey")
text(-0.9, 6.5:0.5, adj = 0,
labels = c("0 = blank", "1 = solid", "2 = dashed", "3 = dotted",
"4 = dotdash", "5 = longdash", "6 = twodash"))
上图展示了参数cex和lty各种取值的实际样式:
- cex取值在21-25之间时可以分别使用col和bg参数分别设置点要素的边框和内部的颜色;
- cex取16和19的区别是,后者可以使用lwd调整边界线粗细;
- cex取19和20的区别是,后者是前者的2/3大小;
- lty为0时隐藏线条。
- lend:控制线状要素端点的形状,整型参数。0表示圆角,1表示短直角,2表示长直角;
- ljoin:控制线条相交时的形状;
- lmitre:控制线条斜交时的过渡特征。
文本参数
- family:设置字体;
- font:整型参数,设置字体形态。1代表默认状态,2表示黑体,3表示斜体,4表示黑色斜体;
- lheigh:数值型参数,文本行高的倍数,仅在
par()
函数中生效; - ps:整型参数,控制文本尺寸但不改变行高。
坐标轴刻度
- xlog、ylog:逻辑型参数,分别控制x轴和y轴刻度的对数化,默认为FASL,只能在
par()
函数内生效; - xaxp、yaxp:分别控制x轴和y轴刻度线标记的起始位置和间隔数量,形式为c(x1, x2, n)或c(y1, y2, n),依次表示刻度线起、始位置和间隔个数;
- lab:控制坐标轴刻度个数,形式为c(x, y, len),默认值为c(5,5,7),依次表示x和y轴刻度个数,len为无效参数。
二级命名参数
构成规则:主参数+要素关键字
- 关键字及含义:axis——坐标刻度值,lab——坐标轴标签,main——图形标题,sub——图形副标题;
- 颜色:col.axis、col.lab、col.main、col.sub;
- 大小:cex.axis、cex.lab、cex.main、cex.sub;
- 字体:font.axis、font.lab、font.main、font.sub。
显示与对齐
以下参数控制文本的显示和对齐:
- xpd:逻辑型参数或NA,FALSE表示只显示plot region内的文本,TRUE表示只显示figure region内的文本,NA表示显示整个device region内的文本;
- adj:数值型参数,控制
text()
、mtext()
和title()
函数呈现的文本对齐方式,数值介于0-1之间,其中0表示左对齐,1表示右对齐,0.5表示居中; - crt:控制文本旋转幅度,单位为弧度,针对单个文本;
- srt:控制
text()
函数中文本的旋转幅度,单位为弧度,针对整行文本。
以下参数控制坐标轴刻度的显示和对齐:
- ann:逻辑型参数,控制图像标题和坐标轴标签的显示,默认为TRUE;
- xaxt、yaxt:分别控制x轴和y轴刻度线和刻度值的显示。n表示不显示刻度线和刻度值,s是默认值表示显示,l和t等价于s;
- xaxs、yaxs:分别控制x轴和y轴刻度线标记方式。r为默认值,会分别在两端留出坐标轴长度4%的空白,再标记刻度线,i表示不留出额外空白;
- tck、tcl:数值型参数,控制刻度线的长度;大于0时刻度线向内,小于0时刻度线向外;tcl默认值为-0.5,tck默认值为NA,且最大值是1,相当于绘制网格;
- las:整型参数,控制刻度文本的方向;0表示平行于坐标轴,1表示始终平行于x轴,2表示垂直于坐标轴,3表示始终垂直于x轴。
以下参数控制边框的显示:
- bty:控制plot region边框的显示;默认值为o,即四周都有边框,l、7、c、u、]分别根据这些字符的形状显示边框,如u表示上方开口,n表示四周都没有边框。
3 布局参数
par(oma = c(2, 2.5, 2, 2.5), mar = c(3, 2, 2, 0.95),
fig = c(0.1, 0.95, 0.1, 0.9), xpd = NA)
plot(sin, 0, 2*pi, type = "l", frame.plot = F, ann = F)
box("plot", col = "red")
box("figure", col = "green")
box("inner", col = "blue")
box("outer", col = "black")
text(pi, 0, labels = "plot region")
text(pi, 1.25, labels = "figure region")
text(pi, 1.65, labels = "display region")
text(pi, 2, labels = "device region")
text(5.5, 1, labels = "plot side", col = "red")
text(5.5, 1.35, labels = "figure margin", col = "red")
text(5.5, 1.75, labels = "inner margin", col = "red")
text(5.5, 2.1, labels = "outer margin", col = "red")
上图展示了图形中各个区域和边框的名称:
- 默认状态下,display region和device region边框重合,figure region又与inner region边框重合,坐标轴线与plot region的边框重合。
尺寸参数
以下参数用于读取文本尺寸,均为只读参数:
- cin、cra:读取当前字体大小,形式为(width, height),前者单位为英寸,后者单位为像素;
- csi:读取当前字体的高度,单位英寸,相当于参数cin的第2个元素;
- cxy:读取文本大小和plot region大小的比例,相当于cin与pin之比。
- 只读参数随着其他参数的设置或者拖拽RStudio界面自动改变,不能主动设置;
- 使用par(“参数名”)读取参数大小。
以下参数用于读取或设置各区域尺寸:
- din:只读参数,读取device region的尺寸,单位英寸,形式为(width, height);
- fin:控制figure region的尺寸,单位英寸,形式为(width, height);
- pin:控制plot region的尺寸,单位英寸,形式为(width, height)。
以下参数用于设置各区域相对位置:
- omd:形式为c(x1, x2, y1, y2),控制display region在device region的相对位置,各元素使用占比表示,如x1 = 0.1表示display region的左侧边框在device region边框长度的1/10处;
- fig:形式为c(x1, x2, y1, y2),控制figure region在display region的相对位置,各元素使用占比表示;
- plt:形式为c(x1, x2, y1, y2),控制plot region在figure region的相对位置,各元素使用占比表示;
- usr:控制plot region的坐标范围,形式为c(x1, x2, y1, y2);若xlog或ylog为TRUE,则实际显示范围为10^usr;该参数只能在
par()
函数内设置。
边距参数
- mgp:设置文本与plot side的距离,默认值为c(3,1,0),依次表示图形标题、坐标轴标签、坐标轴轴线距边框的距离;
- ylbias:数值型参数,控制
axis()
和mtext()
函数提供的文本与相应边框的距离; - mex:文本行高的倍数,默认为1,常作为某些边距参数的单位;
- oma、omi:控制inner margin与outer margin的距离,形式为c(bottom, left, top, right),依次表示下、左、上、右方向的距离;前者单位是mex,后者单位是英寸;
- mar、mai:控制plot side与figure margin的距离,形式为c(bottom, left, top, right),mar单位是mex,默认值为c(5,4,4,2) + 0.1,mai单位是英寸。
分图参数
- page:只读参数,逻辑型参数,检查下条绘图命令是否新建绘图页面;
- new:逻辑型参数,默认为FASLE,若为TRUE,则下条绘图命令在原页面添加图形,不再新建绘图页面;该参数只能在
par()
函数内设置,且只起一次作用,多次原页面添加图形也需要多次设置该参数; - mfrow、mfcol:控制一个绘图页面子图的排列情况,形式为c(nr, nc),如c(3,2)表示3行2列;前者表示先横向排列,后者表示先纵向排列;该参数只能在
par()
函数内生效; - mfg:在mfrow或mfcol设置的情况下,可以直接指定本条命令产生的子图在页面的位置。
4 其他参数
- ask:逻辑型参数;对于一次运行后会绘制多个图形的情况,若ask参数设置为TRUE,每次绘图后需要人工确认才会绘制下一个图形。