R003 基础画图

作者: caoqiansheng | 来源:发表于2020-06-12 16:26 被阅读0次
R基础画图

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()函数支持修改颜色,线型等,操作如前述。
    \color{red}{plot(),lines(),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.

相关文章

网友评论

    本文标题:R003 基础画图

    本文链接:https://www.haomeiwen.com/subject/itqntktx.html