美文网首页
《R语言实战》学习笔记(三)

《R语言实战》学习笔记(三)

作者: ZhenKuanJiang | 来源:发表于2019-05-12 23:36 被阅读0次

    图像初阶

    同时打开多幅图像

    方法一:在创建一幅新图形之前打开一个新的图形窗口,每一幅新图形将出现在最近一次打开的窗口中,之后会打开多个图形用户界面

    dev.new( )
    statements to create graph 1    # 创建图形1
    dev.new( )
    statements to create a graph 2  # 创建图形2
    

    注意:也可用x11()打开新的图形窗口

    方法二:通过图形用户界面来查看多个图形,使用菜单中的“上一个”(Previous)和“下一个”(Next),来逐个查看已经绘制的图形

    方法三:使用函数dev.new( )、dev.next( )、dev.prev( )、 dev.set( ) 和 dev.off( )同时打开多个图形窗口,并选择将哪个输 出发送到哪个窗口中

    dev.set(dev.prev())       # 设置前一个窗口为当前绘图窗口
    dev.set(dev.next())       # 设置下一个窗口为当前绘图窗口
    dev.off()                 # 关闭该图形设备
    

    plot函数中type变量的种类

    par(mfrow = c(2,3))
    plot(c(1:10),type = "p",main = "'p' 点")
    plot(c(1:10),type = "l",main = "'l' 线")
    plot(c(1:10),type = "b",main = "'b' 断点为点,线连接,点线不相交")
    plot(c(1:10),type = "c",main = "'c' 仅线,不连续")
    plot(c(1:10),type = "o",main = "'o' 点、线且相交")
    plot(c(1:10),type = "n",main = "'n' 空图")
    

    图形参数

    可以通过修改图形参数,来自定义一幅图形的特征 —— 字体、颜色、坐标轴、标签

    方法1:通过函数,par( optionname=value, optionname=name, ... )

    par函数共有72个参数,分为三类:

    第一类,只能读取,不能进行设置,例如参数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等

    下面介绍参数时使用数字加点的形式表示参数是第几类参数

    方法2:直接在绘图函数中设置optionname的键值,这种情况下,指定的选项仅对这幅图形本身有效

    符号和线条

    3.pch          符号形状
    3.cex.axis     坐标轴字号
    3.cex.lab      标签字号
    3.cex.main     题目字号
    3.cex.sun      副题目字号
    3.lty          线的类型
    3.lwd          线条宽度。必须为一个整数,默认值为1
    
    参数pch可指定的绘图符号
    参数lty可指定的线条类型

    颜色

    3.col              默认绘图颜色
    3.col.axis         坐标轴颜色
    3.col.lab          标签颜色
    3.col.main         题目颜色
    3.col.sub          副标题颜色
    3.fg               前景色
    3.bg               背景色
    

    在R中,可以通过颜色下标、颜色名称、十六进制的颜色值、RGB值或HSV值来指定颜色

    例如,白色可以表示为:col=1, col="white“, col="#FFFFFF", col=rgb(1,1,1), col=hsv(0,0,1)

    heat.colors( )、terrain.colors( )、topo.colors( )、 cm.colors( )函数是四种连续性颜色向量函数

    多阶灰度色可使用基础安装所自带的gray()函数生成 (元素值为0到1),例如:gray(0:10/10)将生成10阶灰度色

    RColorBrewer包创建颜色向量

    包中颜色板被划分为序列型(sequential)、离散型(diverging)、分类型(qualitative)三种

    brewer.pal(n, name),可以创建一个颜色值的向量,n表示颜色向量的维度(即多少种颜色),name表示颜色板的类型(sequential、diverging、qualitative),可以按顺序提取出用户想要的颜色

    display.brewer.pal()显示某个指定的颜色板

    display.brewer.all()显示某个类型全部的颜色板

    文本属性

    字号相关的参数

    3.cex            相对默认大小缩放倍数的数值
    3.cex.axis       坐标轴字号
    3.cex.lab        标签字号
    3.cex.main       题目字号
    3.cex.sun        副题目字号
    

    字体相关的参数

    3.font          整数,用于指定绘图使用的字体样式,1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
    3.font.axis     坐标轴字体
    3.font.lab      标签字体
    3.font.main     题目字体
    3.font.sub      副题目字体
    2.ps            字体磅值
    3.family        全局字体,特指字体的类型,标准取值为serif(衬线)、sans(无衬线)和mono(等宽)
    

    在windows平台可以通过函数windowsFont()来创建字体族:

    windowsFonts(
    A=windowsFont("Arial Black"),
    B=windowsFont("Bookman Old Style"),  
    C=windowsFont("Comic Sans MS")
    )
    

    之后,即可使用A、B和C作为family的取值,例如 par(family="A"),将指定ArialBlack作为绘图字体

    图形尺寸与边界尺寸

    2.pin           图的长宽,形式为c(width,height),单位为英寸
    2.mai           设置图形空白边界,mai =c(bottom, left, top, right),单位为英寸。缺省为mai = c(1.02,0.82,0.82,0.42)
    2.mar           设置图形空白边界,mar =c(bottom, left, top, right),单位为英分。缺省为mar = c(5,4,4,2)
    2.mfcol, mfrow  设置小图数量与位置,数值型向量c(nrow, ncol)。图按列排(mfcol)或按行排(mfrow)
    

    添加文本、自定义坐标轴和图例

    标题

    title( ) 为图形添加标题和坐标轴标签

    title (main="main title", sub="subtitle", xlab="x-axis  label", ylab="y-axis label")
    

    坐标轴

    axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...) 来创建自定义的坐标轴

    side          一个整数,表示在图形的哪边绘制坐标轴(1=下,2=左,3=上,4=右)
    at            一个数值型向量,表示需要绘制刻度线的位置
    labels        一个字符型向量,表示置于刻度线旁边的文字标签(若为null,则直接只用at中的值)
    pos           坐标轴线绘制位置的坐标(即与另一条坐标轴相交位置的值)
    lty           线条类型
    col           线条和刻度线颜色
    las           线条是否平行于(=0)或垂直于(=2)坐标轴
    tck           刻度线的长度,以相对于绘图区域大小的分数表示(负值表示在图形外侧,正值表示在内侧,0表示禁用刻度,1表示绘制网格线)默认值为-0.01
    

    参考线

    abline (h=yvalues, v=xvalues) 为图形添加参考线

    lines()和abline()的区别:

    lines(x, y=NULL, type="l"):绘制关于x、y向量的直线, 相当于plot(x, y=NULL, type="l"),但是lines()函数不能单 独绘制图形

    abline(x, y):表示画一条y=a+bx的直线

    abline(h=y):绘制y值固定的一条水平直线

    abline(v=x):绘制x值固定的一条垂直直线

    abline(lm.obj):绘制线性模型lm.obj的拟合直线

    图例

    legend (location, title, legend, ...) 为图形添加图例

    location          制定图例的位置。可以直接给出x,y的坐标,也可以通过locator(1)用鼠标点击给出图例的位置,也可使用关键字bottom、bottomleft、left、topleft、top、topright、right、bottomright或center放置图例
    title             图例标题的字符串
    legend            图例标签组成的字符型向量
    
    opar <- par(no.readonly=TRUE)
    par(lwd=2, cex=1.5, font.lab=2)
    plot(dose, drugA, type="b", pch=15, lty=1, col="red",  
          ylim=c(0, 60), main="Drug A vs. Drug B", xlab="Drug Dosage",  ylab="Drug Response")
    lines(dose, drugB, type="b", pch=17, lty=2, col="blue")
    abline(h=c(30), lwd=1.5, lty=2, col="gray")
    legend("topleft", inset=.05, title="Drug Type", c("A","B"),
           lty=c(1, 2), pch=c(15, 17), col=c("red", "blue"))
    par(opar)
    

    文本标注

    text (location, text, pos, ...) 向绘图区域内部添加文本

    mtext( text, side, line, outer = FALSE, at, adj, cex, col, font, ... ) 向图形的四个边界添加文本

    pos        文本相对于位置参数的方位,1=下面,2=左边,3=上边,4=右边
    text       绘制的文本
    side       哪个页边留出空白(1=下面,2=左边,3=上边,4=右边)
    line       相对于坐标轴,文本出现的位置(坐标轴向外从0开始计数)
    outer      是否允许使用外边缘
    at         给定坐标轴上每个字符串的位置
    adj        调整每个字符串的阅读方向(0=左对齐或下对齐,1=右对齐 或上对齐)
    
    drug<- data.frame(dose,drugA)
    row.names(drug)<-c("d1","d2","d3","d4","d5")
    plot(dose, drugA, main="dose vs. drugA", xlab="dose",  ylab="drugA", pch=18, col="blue")
    mtext("x-axis",3,cex=2)
    mtext("y-axis",4,cex=2 )
    text(dose, drugA, row.names(drug),cex=2, pos=4, col="red")
    

    图形的组合

    par()函数

    在par( )函数中使用图形参数 mfrow=c(nrows, ncols)来创 建按行填充的、行数为nrows、列数为ncols的图形矩阵,还可以使用mfcol=c(nrows, ncols)按列填充矩阵

    dose <- c(20,30,40,45,60)
    drugA <- c(16,20,27,40,60)
    drugB <-c(15,18,25,31,40)
    par(mfrow=c(2,2))
    plot(dose, drugA, main="Scatterplot of dose vs.drugA")
    plot(dose, drugB, main="Scatterplot of dose vs. drugB")
    hist(dose, main="Histogram of dose")
    boxplot(dose, main="Boxplot of dose")
    

    注意:绘图函数hist( )包含了一个默认的标题(使用main=“”可 以禁用它,或者使用ann=FALSE来禁用所有标题和标签)

    layout()函数

    函数layout( )的调用形式为layout(mat,widths,heights,...)

    其中,mat是一个矩阵,它指定了所要组合的多个图形的所在位置
    widths = 各列宽度值组成的一个向量
    heights = 各行高度值组成的一个向量

    相对宽度可以直接通过数值指定,绝对宽度(以厘米为单位)可以通过函数lcm( )来指定

    dose <- c(20,30,40,45,60)
    drugA <- c(16,20,27,40,60)
    drugB <-c(15,18,25,31,40)
    #各子图宽度按照3:1分配,各子图高度按照1:2分配
    layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE),widths=c(3, 1), heights=c(1, 2))
    hist(dose)
    hist(drugA)
    hist(drugB)
    

    图形布局的精细控制

    fig=c(x1, x2, y1, y2)实现对图形布局的精细控制

    其中,x1、x2表示绘图区域在x轴方向的起止范围
    y1、y2表示绘图区域在y轴方向的起止范围,如果设置了该参数,需要同时配合new=TRUE以在指定区域绘制 一幅新图形

    完整的绘图区域:左下角坐标为(0, 0),而右上角坐标为(1, 1)

    dose <- c(20,30,40,45,60)
    drugA <- c(16,20,27,40,60)
    drugB <-c(15,18,25,31,40)
    par(fig=c(0, 0.8, 0, 0.8))
    plot(dose, drugA, xlab="dose", ylab="drugA")
    par(fig=c(0, 0.8, 0.55, 1), new=TRUE)
    boxplot(dose, horizontal=TRUE, axes=FALSE)
    par(fig=c(0.65, 1, 0, 0.8), new=TRUE)
    boxplot(drugA, axes=FALSE)
    mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3)
    

    相关文章

      网友评论

          本文标题:《R语言实战》学习笔记(三)

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