1. 图形创建及保存
1.1 图形创建
> attach(mtcars) ### 绑定了数据框mtcars
> plot(wt,mpg) ###打开了一个图形窗口并生成了一幅散点图,横轴表示车身重量,纵轴为每加仑汽油行驶的英里数。
> abline(lm(mpg~wt)) ###向图形添加了一条最优拟合曲线
> title("Regression of MPG on Weight") ### 添加了标题
> detach(mtcars) ###为数据框解除了绑定
1.2 创建新的图形窗口
在通过执行如plot()、hist()(绘制直方图)或boxplot()这样的高级绘图命令来创建一幅新图形时,通常会覆盖掉先前的图形。在创建多个图形时为随时查看每一个,方法如下:
1)在创建新的图形之前,打开新的图形窗口
> dev.new()
> plot()
> dev.new()
> hist()
2)你可以通过图形用户界面来查看多个图形。在Mac上,你可以使用Quartz菜单中的“后退”(Back)和“前进”(Forward)来逐个浏览图形。在Windows上,这个过程分为两步。在打开第一个图形窗口以后,勾选“历史”(History)→“记录”(Recording)。然后使用菜单中的“上一个”(Previous)和“下一个”(Next)来逐个查看已经绘制的图形
1.3 dev类函数功能
- 在多个图形设备之间提供控制功能
- 所有的关于图形的操作都在一个设备中进行,即仅有一个设备是“活跃设备”;设备可以有各自的名字,同时有编号,从1到63; 空设备的编号始终是1
- null device:空设备,总是打开的,起着占位作用
- dev.list():返回打开的设备的名单列表,但不包含空设备;
- dev.off():关闭指定的设备(缺省情况下为当前设备);当前设备被关闭后,若还有打开的设备,则紧接着下一个打开的设备变为当前设备;返回新打开的活跃设备的名字和编号。 注意设备1是不能被关闭的,即对设备1进行关闭操作是错误的;
- graphics.off():关闭所有打开的设备;
- dev.set(): 指定一个特定的设备为活跃设备,但若没有那个指定的设备,等同于dev.next();若指定设备的值为1,则打开一个新的设备,并且指定那个设备为活跃设备。 返回新设备的名字和编号。
- dev.new():打开一个新的设备。R中经常根据需要自动的打开新的设备,但也能使用跨平台的方式打开更多的设备;返回新设备的名字和编号。
- dev.cur():查看当前的活跃设备;返回包含当前活跃设备名字和编号的向量;如果是返回值是1,空设备,即没有活跃设备。
- dev.next():查看紧随当前活跃进程的下一个进程;返回其名字和编号。
- dev.prev():查看当前活跃进程的前一个进程;返回其名字和编号。
2. 图形参数
2.1 图形参数分类
- readonly参数
cin,cra,csi,cxy,din - 仅能通过par()设定参数
ask,fig,fin,lheight,mai,mar,mex,mfcol,mfrow,mfg,new,oma,omd,omi,pin,plt,ps,pty,usr,xlog,ylog - 除了par(),也能在其他高级绘图函数中设定的参数
如函数plot,points,lines,abline,title,text,axis,image,box,contour,rect,arrows等。
2.2 图形参数设置
par函数用于指定一幅图形的多个特征(字体、颜色、坐标轴、标签)。以这种方式设定的参数值除非被再次修改,否则将在会话结束前一直有效。其调用格式为par(optionname=value, optionname=name,...)。不加参数地执行par()将生成一个含有当前图形参数设置的列表。添加参数no.readonly=TRUE可以生成一个可以修改的当前图形参数列表。
- par()函数
> str(par())
#### str(objections)函数,也即structure,查看对象objections的内部结构
List of 72
$ xlog : logi FALSE
$ ylog : logi FALSE
$ adj : num 0.5
$ ann : logi TRUE
$ ask : logi FALSE
$ bg : chr "white"
$ bty : chr "o"
$ cex : num 1
$ cex.axis : num 1
$ cex.lab : num 1
$ cex.main : num 1.2
$ cex.sub : num 1
$ cin : num [1:2] 0.15 0.2
$ col : chr "black"
$ col.axis : chr "black"
$ col.lab : chr "black"
$ col.main : chr "black"
$ col.sub : chr "black"
$ cra : num [1:2] 14.4 19.2
$ crt : num 0
$ csi : num 0.2
$ cxy : num [1:2] 0.0181 0.0507
$ din : num [1:2] 9.51 5.78
$ err : int 0
$ family : chr ""
$ fg : chr "black"
$ fig : num [1:4] 0 1 0 1
$ fin : num [1:2] 9.51 5.78
$ font : int 1
$ font.axis: int 1
$ font.lab : int 1
$ font.main: int 2
$ font.sub : int 1
$ lab : int [1:3] 5 5 7
$ las : int 0
$ lend : chr "round"
$ lheight : num 1
$ ljoin : chr "round"
$ lmitre : num 10
$ lty : chr "solid"
$ lwd : num 1
$ mai : num [1:4] 1.02 0.82 0.82 0.42
$ mar : num [1:4] 5.1 4.1 4.1 2.1
$ mex : num 1
$ mfcol : int [1:2] 1 1
$ mfg : int [1:4] 1 1 1 1
$ mfrow : int [1:2] 1 1
$ mgp : num [1:3] 3 1 0
$ mkh : num 0.001
$ new : logi FALSE
$ oma : num [1:4] 0 0 0 0
$ omd : num [1:4] 0 1 0 1
$ omi : num [1:4] 0 0 0 0
$ page : logi TRUE
$ pch : int 1
$ pin : num [1:2] 8.27 3.94
$ plt : num [1:4] 0.0862 0.9558 0.1764 0.8582
$ ps : int 12
$ pty : chr "m"
$ smo : num 1
$ srt : num 0
$ tck : num NA
$ tcl : num -0.5
$ usr : num [1:4] 0 1 0 1
$ xaxp : num [1:3] 0 1 5
$ xaxs : chr "r"
$ xaxt : chr "s"
$ xpd : logi FALSE
$ yaxp : num [1:3] 0 1 5
$ yaxs : chr "r"
$ yaxt : chr "s"
$ ylbias : num 0.2
- opar <- par(no.readonly=TRUE)
str(par(no.readonly=TRUE))
List of 66
$ xlog : logi FALSE
$ ylog : logi FALSE
$ adj : num 0.5
$ ann : logi TRUE
$ ask : logi FALSE
$ bg : chr "white"
$ bty : chr "o"
$ cex : num 1
$ cex.axis : num 1
$ cex.lab : num 1
$ cex.main : num 1.2
$ cex.sub : num 1
$ col : chr "black"
$ col.axis : chr "black"
$ col.lab : chr "black"
$ col.main : chr "black"
$ col.sub : chr "black"
$ crt : num 0
$ err : int 0
$ family : chr ""
$ fg : chr "black"
$ fig : num [1:4] 0 1 0 1
$ fin : num [1:2] 9.51 5.78
$ font : int 1
$ font.axis: int 1
$ font.lab : int 1
$ font.main: int 2
$ font.sub : int 1
$ lab : int [1:3] 5 5 7
$ las : int 0
$ lend : chr "round"
$ lheight : num 1
$ ljoin : chr "round"
$ lmitre : num 10
$ lty : chr "solid"
$ lwd : num 1
$ mai : num [1:4] 1.02 0.82 0.82 0.42
$ mar : num [1:4] 5.1 4.1 4.1 2.1
$ mex : num 1
$ mfcol : int [1:2] 1 1
$ mfg : int [1:4] 1 1 1 1
$ mfrow : int [1:2] 1 1
$ mgp : num [1:3] 3 1 0
$ mkh : num 0.001
$ new : logi FALSE
$ oma : num [1:4] 0 0 0 0
$ omd : num [1:4] 0 1 0 1
$ omi : num [1:4] 0 0 0 0
$ pch : int 1
$ pin : num [1:2] 8.27 3.94
$ plt : num [1:4] 0.0862 0.9558 0.1764 0.8582
$ ps : int 12
$ pty : chr "m"
$ smo : num 1
$ srt : num 0
$ tck : num NA
$ tcl : num -0.5
$ usr : num [1:4] 0 1 0 1
$ xaxp : num [1:3] 0 1 5
$ xaxs : chr "r"
$ xaxt : chr "s"
$ xpd : logi FALSE
$ yaxp : num [1:3] 0 1 5
$ yaxs : chr "r"
$ yaxt : chr "s"
$ ylbias : num 0.2
- par与opar
readonly只读,no.readonly可修改
no.readonly=TRUE,将par()中可修改的变量提取出来
no.readonly=FALSE,par()默认参数为no.readonly=FALSE,也即将par()中所有变量提取出来
2.3 图形参数
2.3.1 符号及线条(point&lines)
- pch:point character,指定绘制点时使用的符号,数值区间为0~25
- cex:指定符号的大小,表示绘图符号相对于默认大小的缩放倍数
- lty:line type,指定线条类型,数值区间为1~6
- lwd:line width,线条宽度,也是以默认值的相对大小表示
2.3.2 颜色(color)
在R中,可以通过颜色下标、颜色名称、十六进制的颜色值、RGB值或HSV值来指定颜色。举例来说,col=1、col="white"、col="#FFFFFF"、col=rgb(1,1,1)和col=hsv(0,0,1)都是表示白色的等价方式。函数rgb()可基于红-绿-蓝三色值生成颜色,而hsv()则基于色相-饱和度-亮度值来生成颜色。
颜色参数设置
- col,默认绘图颜色
- col.axis:坐标轴刻度文字的颜色
- col.lab:labals,坐标轴刻度标签(名称)的颜色
- col.main:主标题颜色
- col.sub:subsidy,副标题颜色
- fg:foreground,前景色
- bg:background,背景色
创建连续型颜色向量的函数
- rainbow()
- heat.colors()
- terrain.colors()
- topo.colors()
- cm.colors()
- RColorBrewer:创建吸引人的颜色配对
2.3.3 文本属性
字号
- cex
- cex.axis
- cex.lab
- cex.main
- cex.sub
字体(font)
- font:整数,用于指定绘图使用的字体格式,其中1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
- font.axis
- font.lab
- font.main
- font.sub
- ps:字体的磅值,文本的大小为ps*cex
- family:绘制文本使用的字体族,serif(衬线),sans(无衬线),mono(等宽)
2.3.4 图形尺寸及边界尺寸
- pin:以英寸表示的图形尺寸(宽和高)
- mai:以数值向量表示的边界大小,顺序为(下,左,上,右),单位为英寸
- mar:margins,绘图边距,以数值向量表示的边界大小,顺序为(下,左,上,右),单位为英分,默认值为c(5,4,4,2)+0.1
- mpa:main plot area主绘图区
- oma:out of margin,外围边距
2.3.5 添加文本、自定义坐标轴和图例
-
title()函数:为图形添加标题和坐标轴标签
-
axis()函数:创建自定义的坐标轴
side:表示图形的那边绘制坐标轴,1=下,2=左,3=上,4=右
at:数值型向量,表示需要绘制刻度线的位置
labels:字符型向量,表示置于刻度线旁边的文字标签
pos:坐标轴线绘制位置的坐标(也即与另一条坐标轴相交位置的值)
lty:线条类型
col:线条和刻度线颜色
las:标签是否平行(las=0)或垂直(las=2)于坐标轴
tck:刻度线长度,以相对绘图区域的大小的分数表示,负值表示在图形外侧,正值表示在内侧,0表示禁用刻度,默认值是-0.01,1表示绘制网格线
axes=FALSE,禁用所有坐标轴,以便使用axes()加入自定义坐标轴
xaxt=“n”,yaxt=“n”,禁用x,y轴,,仅去除刻度,但会保留框架线
frame.plot=TRUE,保留坐标轴框架线
ann=FALSE,去除坐标轴标签
minor.tick()函数:来自于Hmisc包,用于创建次要刻度线 -
参考线abline()函数
-
abline()函数:为图形添加参考线,abline(h=yvalues,v=xvalues)
h,即horizontal,横线
v,即vertical,纵线
abline()函数支持修改颜色,线型等,操作如前述。
plot()在调用时,创建的是一副新图;abline()、lines()是在新图的基础上添加图形信息,并不会产生新的图形;abline()的做的回归线,对象是回归模型;lines()是普通的绘线函数,其对象是(X,Y)点坐标。 -
图例 legend函数
-
legend函数:当图形中包含的数据不止一组时,图例可以帮助你辨别出每个条形、扇形区域或折线各代表哪一类数据
legend(x, y = NULL, legend, fill = NULL, col = par("col"),
border = "black", lty, lwd, pch,
angle = 45, density = NULL, bty = "o", bg = par("bg"),
box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"),
pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd,
xjust = 0, yjust = 1, x.intersp = 1, y.intersp = 1,
adj = c(0, 0.5), text.width = NULL, text.col = par("col"),
text.font = NULL, merge = do.lines && has.pch, trace = FALSE,
plot = TRUE, ncol = 1, horiz = FALSE, title = NULL,
inset = 0, xpd, title.col = text.col, title.adj = 0.5,
seg.len = 2)
参数 | 含义 |
---|---|
x, y | x,y用于定位图例,也可用单键词"bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right" and "center" |
legend | 字符或表达式向量 |
fill | 用特定的颜色进行填充 |
col | 图例中出现的点或线的颜色 |
border | 当fill = 参数存在的情况下,填充色的边框 |
lty, lwd | 图例中线的类型与宽度 |
pch | 点的类型 |
angle | 阴影的角度 |
density | 阴影线的密度 |
bty | 图例框是否画出,o为画出,默认为n不画出 |
bg | bty != "n"时,图例的背景色 |
box.lty, box.lwd, box.col | bty = "o"时,图例框的类型,box.lty决定是否为虚线,box.lwd决定粗线,box.col决定颜色 |
pt.bg | 点的背景色 |
cex | 字符大小 |
pt.cex | 点的大小 |
pt.lwd | 点的边缘的线宽 |
x.intersp | 图例中文字离图片的水平距离 |
y.intersp | 图例中文字离图片的垂直距离 |
adj | 图例中字体的相对位置 |
text.width | 图例字体所占的宽度 |
text.col | 图例字体的颜色 |
text.font | 图例字体 |
merge | logical, if TRUE,合并点与线,但不填充图例框,默认为TRUE |
trace | logical; if TRUE显示图例信息 |
plot | logical. If FALSE不画出图例 |
ncol | 图例中分类的列数 |
horiz | logical; if TRUE,水平放置图例 |
title | 给图例加标题 |
inset | 当图例用关键词设置位置后,inset = 分数,可以设置其相对位置 |
xpd | xpd=FALSE,即不允许在作图区域外作图,改为TRUE即可,与par()参数配合使用 |
title.col | 标题颜色 |
title.adj | 图例标题的相对位置,0.5为默认,在中间。0最左,1为最右 |
seg.lenlty | 与lwd的线长,长度单位为字符宽度 |
- text():向绘图区域内部添加文本
- mtext():向图形的四个边界之一添加文本
参考
1.卡巴科弗. R语言实战[M]. 人民邮电出版社, 2013.
网友评论