R语言实战—03图形初阶

作者: 壹亮3278 | 来源:发表于2017-03-23 00:32 被阅读0次


    3.1 使用图形

    使用代码保存图形:
    保存为PDF—pdf(filename),其它格式:win.metafile( ), png( ),jpeg( ),bmp( ),tiff( ),xfig( ),postcript( )
    打开新的图形窗口的方法:
    第一种方法:
    dev.new( )
    statements to create graph 1
    dev.new( )
    statements to create graph2
    etc.
    第二种方法:
    MAC系统:Quartz菜单—“Back”和“Forward"
    Windows系统: 勾选“历史”History—“记录”Recording。然后使用Previous和Next。
    第三种方法:函数dev.new( )、dev.next( )、dev.prev( )、dev.set( )、dev.off( )

    3.2 简单例子

    plot(x,y,type="b"):x为横轴,y为纵轴,绘制点击(x,y),type="b"表示同时绘制点和线。
    #3.2简单的一个例子
    #描述病人对两种药物五个剂量的响应情况
    dose <- c(20,30,40,45,60)
    drugA <- c(16,20,27,40,60)
    drugB <- c(15,18,25,31,40)
    plot(dose,drugA,type = "b")
    title("药物A的剂量和响应关系")
    par(family="PingFangSC-Regular")

    其它类型的绘制图形参数
    "p"forpoints,
    "l"forlines,
    "b"forboth,
    "c"for the lines part alone of"b",
    "o"for both ‘overplotted’,
    "h"for ‘histogram’ like (or ‘high-density’) vertical lines,
    "s"for stairsteps,
    "S"for othersteps, see ‘Details’ below,
    "n"for no plotting.

    3.3 图形参数

    调用格式:par(optionname=value,optionname=name,…)

    no.readonly=TRUE:生成当前图形参数列表。

    #修改点的符号
    opar <- par(no.readonly = TRUE)
    par(lty=2,pch=17)
    plot(dose,drugA,type = "b")
    par(opar)
    #另一种方法:
    plot(dose,drugA,type = "b",lty=2,pch=17)

    3.3.1 符号和线条

    pch:指定绘制点使用的符号。
    cex:指定符号的大小。
    lty:指定线条类型。
    lwd:指定线条宽度。

    3.3.2 颜色

    col:默认的绘图颜色。
    col.axis:坐标轴刻度文字的颜色。
    col.lab:坐标轴标签的颜色。
    col.main:标题颜色。
    col.sub:副标题颜色。
    fg:图形的前景色。
    bg:图形的背景色。
    可以采用颜色下标、颜色名称、十六进制的颜色值、RGB色值、HSV值来表示。例:col=1,col="wihte",col="FFFFFF",col=rgb(1,1,1),col=hsv(0,0,1)
    colors( ):查看可用颜色的名称。
    rainhbow( )、heat.colors( )、terrain.colors( )、topo.colors( )、cm.colors( ):创建连续型颜色brewer.pal(n,name):创建一个颜色值的向量。
    brewer.pal.info或者display.brewer.all():查看所有可选调色板的列表

    #生成10阶灰色度
    n <- 10
    mycolors <- rainbow(n)
    pie(rep(1,n),labels = mycolors,col = mycolors)
    #生成10阶色度
    mygrays <- gray(0:10/10)
    pie(rep(1,n),labels = mygrays,col = mygrays)

    3.3.3 文本属性

    用于指定文本大小的参数:
    cex:表示相对默认大小缩放倍数的数值。默认为1。
    cex.axis:坐标轴刻度文字的缩放倍数。
    cex.lab:坐标轴标签的缩放倍数。
    cex.main:标题的缩放倍数。
    cex.sub:副标题的缩放倍数。
    用于指定字体族、字号和字样的参数:
    font:整数。用于指定绘图使用的字体样式。1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
    font.axis:坐标轴刻度文字的字体。
    font.lab:坐标轴标签的字体。
    font.main:标题的字体。
    font.sub:副标题的字体。
    ps:字体磅值。
    family:绘制文本事使用的字体族。标准取值为:serif(衬线)、sans(无衬线)和mono(等宽)。

    3.3.4 图形尺寸与边界尺寸

    pin:以英寸表示图形尺寸(宽和高)。
    mai:以数值向量表示的边界大小(顺序:下、左、上、右,单位为英寸)。
    mar:以数值向量表示的边界大小。(单位为英分,默认值为c(5,4,4,2)+0.1)

    综合实例:
    #3.3.3 综合控制图形外观
    dose <- c(20, 30, 40, 45, 60)
    drugA <- c(16, 20, 27, 40, 60)
    drugB <- c(15, 18, 25, 31, 40)
    opar <- par(no.readonly=TRUE)
    par(pin=c(2, 3))
    par(lwd=2, cex=1.5)
    par(cex.axis=.75,font.axis=3)
    plot(dose, drugA, type="b", pch=19, lty=2, col="red")
    plot(dose, drugB, type="b", pch=23, lty=6, col="blue", bg="green")
    par(opar)

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

    3.4.1 标题

    调用格式:
    title(main="main title",sub="subtitle",
    xlab="x-axis label",ylab="y-axis label")

    注:ann=FALSE移除图形中默认的标题和标签。

    3.4.2 坐标轴

    格式为:
    axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, …)

    side:一个整数,表示在图形的那边绘制坐标轴。(下,左,上,右)
    at:一个数值型向量,表示需要绘制刻度线的位置。
    labels:一个字符型向量,表示置于刻度线旁边的文字标签(NULL,表示直接使用at中的值)
    pos:坐标轴线绘制位置的坐标。
    lty:线条类型。
    col:线条和刻度线颜色。
    las:标签是否平行于(=0)或垂直(=2)坐标轴。
    tck:刻度线的长度。
    注:axes=FALSE将禁止用全部坐标轴。
    参数xaxt="n"和yaxt="n"将分别禁用X轴和Y轴。

    #3.4.2自定义坐标轴示例
    x <- c(1:10)
    y <- x
    z <- 10/x
    opar <- par(no.readonly = TRUE)
    par(mar=c(5,4,4,8) +0.1)
    plot(x,y,type = "b",
    pch=21,col="red",
    yaxt="n",lty=3,ann = FALSE)
    lines(x,z,type = "b",pch=22,col="blue",lty=2)
    axis(2,at=x,labels=x,col.axis="red",las=2)
    axis(4,at=z,labels = round(z,digits = 2),
    col.axis="blue",las=2,cex.axis=0.7,tck=-.01)
    mtext("y=1/x",side = 4,line = 3,cex.lab=1,las=2,col="blue")
    title("An Example of Creative Axes",
    xlab = "X values",
    ylab = "Y=X")
    par(opar)

    创建次要刻度线,先安装Hmisc包,在使用minor.tick( )函数。
    格式如:minor.tick(nx=n,ny=n,tick.ratio=n)
    nx和ny:分别表示X轴和Y轴每两条主刻度线之间通过次要刻度线划分得到的区间个数。
    tick.ratio:表示次要刻度线相对于主刻度线的大小比例。

    3.4.3 参考线

    格式如:abline(h=yvalues,v=xvalues)

    3.4.4 图例

    格式如:legend(location,title,legend,…)

    location:指定图例的位置。
    title:图例标题的字符串。
    legend:图例标签组成的字符型向量。
    horiz=TRUE将会水平放置图例。

    #3.4.4图例代码练习
    dose <- c(20,30,40,45,60)
    drugA <- c(16,20,27,40,60)
    drugB <- c(15,18,25,31,40)
    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. drugB",
    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")
    #创建次要刻度
    library(Hmisc)
    minor.tick(nx=3,ny=3,tick.ratio=0.5)
    legend("topleft",inset = .05,title = "Drug Type",c("A","B"),
    lty = c(1,2),pch=c(15,17),col=c("red","blue"))
    par(opar)

    3.4.5 文本标注

    text( )和mtxet( )将文本添加到图形上。

    格式为:
    text(location,"text to place",pos,…)
    mtext("text to place",side,line=n,…)

    location:文本的位置参数。
    pos:文本相对于位置参数的方位。1=下,2=左,3=上,4=右。offset=作为偏移量,以相对于单个字符宽度的比例表示。
    side:指定用来放置文本的边。line=来内移或外移文本。adj=0将文本向左下对齐,adj=1右上对齐。

    3.4.6 数字标注

    3.5 图形的组合

    R中使用函数par( )或layout( )组合多幅图形为一个幅总括图形。
    par( )中使用图形参数mfrow=c(nrows,ncols),来创建按行填充的、行数为nrows、列数为ncols的图形矩阵。
    layout( )的调用形式为layout(mat),mat是一个矩阵,它指定了所要组合的多个图形的所在位置。
    widths= 各列宽度值组成的一个向量
    heights= 各行宽度值组成的一个向量

    #控制图形的大小
    attach(mtcars)
    layout(matrix(c(1,1,2,3),2,2,byrow = TRUE),
    widths =c(3,1),heights=c(1,2))
    hist(wt)
    hist(mpg)
    hist(disp)
    detach(mtcars)

    图形布局的精细控制

    图形参数:fig=

    #图形布局的精细控制
    opar <- par(no.readonly = TRUE)
    par(fig=c(0,0.8,0,0.8))
    plot(mtcars$wt,mtcars$mpg,
    xlab="Mile Per Gallon",
    ylab="Car Weight")
    par(fig=c(0,0.8,0.55,1),new=TRUE)
    boxplot(mtcars$wt,horizontal = TRUE,axes= FALSE)
    par(fig=c(0.65,1,0,0.8),new=TRUE)
    boxplot(mtcars$mpg,axes=FALSE)
    mtext("Enhanced Scatterplot",side = 3,outer = TRUE,line = -3)
    par(opar)

    2017年03月22日

    作者:壹亮3278(微信号:yiliang3278),移动互联网产品设计、产品经理,数据分析的学习者。不断自我迭代,自我升级,希望和知识爱好者共同进步,让我们用成长去遇见美好的未来!!!

    ————“自律是成功的基石。”————

    《数据分析学习之路系列》系列
    大数据之数据分析精进之路:起跑
    00-R语言的认识、下载和安装
    01-R语言入门
    R语言实战—02-创建数据集
    第二讲 数据结构入门实战练习

    相关文章

      网友评论

        本文标题:R语言实战—03图形初阶

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