美文网首页R语言知识干货
R语言系列第六期:③R语言高级绘图(上)

R语言系列第六期:③R语言高级绘图(上)

作者: 皓月千里_5011 | 来源:发表于2019-06-21 17:16 被阅读14次

    这一节将介绍更多的R图形资源。首先是定制R图形的一些常用方法,主要涉及数据和模型的图形绘制。然后是如何自定义其他类型的图形或点线等元素。

    A. 绘制二维图形

    在R中,绘制二维图形主要有两个函数plot()和matplot()。

    plot()函数主要绘制标准的x-y图形,它是基于笛卡尔坐标。这个函数会将两个向量作为参数,第一个向量作为横轴的值,第二个向量作为纵轴的值。例如:

    > x=(0:100)*2*pi/100

    > y=sin(x)

    > plot(x,y)

    如果只将一个向量做为plot()函数的参数,则该向量的值将作为y轴的值,而x轴的值由R自动产生:

    > plot(y)

    matplot()函数将两个矩阵作为参数。一个矩阵的列参照另一个矩阵的相应列来绘制图形。在绘制同一个图时,两个矩阵的行数应该一样。如果行数不一样,行数较少的那个矩阵用缺失值(NA)来填充。第一个矩阵的值会用在横轴上。如果其中一个矩阵只有一个列,则绘制的所有图形都将用该列的值。每一队列所绘制的图形颜色不一样,编号会用来做为不同图点的图形符号。这些选项也可由用户自己定义,例如:col=和pach=,后面会介绍这些选项。在对图形添加多个点时,matplot()函数可以省去很多麻烦,不用一一设定每个point()语句。matplot()函数可以统一设置各点的格式,并自动选择合适的坐标轴范围,使图形中包含全部数据,例如:

    > y1=sin(x)

    > y2=cos(x)

    > y=cbind(y1,y2)

    > matplot(x,y)

    B. 符号、线与坐标轴风格的选项

    可以使用一些选项来制定R绘制的图形。在函数plot()和matplot()中,选项通常作为附加参数被调用。可选参数能以任意顺序输入,以逗号隔开。如果省略这些参数,它们大多会采用默认值,下面将更加系统地介绍这些选项。

    1

    数字符号类型

    绘图时对数据点所用的符号可通过pch=选项来指定(pch意思是“plotting character”)。例如pch=1表示用圆圈绘制数据点。下图就是常用的符号和对应的数值代码。

    2

    连接线类型

    如果线是用来连接数据点或者绘制曲线,则可用lty=选项来控制它的样式。一般的线类型和对应的数值代码如下图所示。

    另外,使用lty=选项和matplot()的其它选项时,可将这些选项的值组成一个向量,向量中的各元素会分别用到对应的图形上,使其具有不同的样式。例如:

    > matplot(x,y,type="l",lty=c(1,2),col="black"

    #Tips:我们可以看出来两个函数图分别用了线类型不同的两条线来绘制,col的设定可以保证两条线的颜色相同。

    3

    曲线类型

    可用type=“”选项来指定不同的曲线类型。例如:type=“p”表示在绘制曲线时,只画点而不画连接线。常用的类型如下:

    p:只画点的符号而不画连接线。

    l:只画连接线而不画点的符号。

    o:既画点的符号,又画连接线。

    b:与o选项一样,只是连接线不会与点的符号接触。

    h:在每个点与横轴之间画一条垂直线。

    s:绘制“梯形”图,即先用水平直线,然后用竖线连接相邻点。

    S:同s相似,只是水平线和垂直线顺序相反。

    c:连接线里剔除掉点位置。

    4

    坐标轴的限制

    选项xlim=和ylim=可分别用来限制横轴和纵轴的范围,例如,xlim=c(0,10)会让R只使用横轴值在0到10范围内的数据。如果数据超过此范围,就不会出现在绘制的图形中。

    5

    刻度线

    在坐标轴上的刻度线由选项lab=和tcl=控制。lab=选项是一个向量,它有两个元素,第一个元素是横轴的刻度线数量,第二个选项是纵轴的刻度线数量。例如lab=(7,3)表示x轴被7个刻度线分成8个间隔;y轴被3个刻度线分成4个间隔。如果所指定的lab=选项不能使绘制的图形正常显示,R可能会重新用恰当的值来代替lab=选项的值。tcl=选项将一行文字的高度作为刻度线的长度。tcl的值为负数是表示刻度线在坐标轴外,为正数表示刻度线在坐标轴内。

    6

    坐标轴标签

    在默认的情况下,横轴和纵轴的标签是绘图向量的名称。将标签通过xlab=“”和ylab=“”选项来修改,将所需的文本字符串放在引号中即可。例如:xlab=“time”,ylab=“population size”。

    7

    不显示坐标轴

    有时图形不需要坐标轴会更好看些。不显示坐标轴的选项是axes=FALSE,不显示坐标轴标签的选项是ann=FALSE。

    8

    字符和标签大小可用选项cex=来修改

    在默认情况下,cex指定的值为默认字符大小的倍数。cex的默认值为1。比如若cex=2,所绘制的字符为正常大小的2倍;cex=0.5,所绘制的字符是正常大小的一半。下面这些绘图选项也是通过类似的方式控制大小,即,都是参数值作为默认大小的倍数。

    cex.axis= 为刻度文本大小的倍数

    cex.lab= 为轴标签文本大小的倍数

    cex.main=为标题文本大小的倍数

    cex.sub= 为子标题文本大小的倍数

    lwd= 为所画线宽度的倍数

    9

    字体族、字号和字样的参数

    font= 用于指定绘图使用的字体样式。1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体(以Adobe符号编码表示)

    font.axis= 坐标轴刻度文字的字体样式

    font.lab= 坐标轴标签(名称)的字体样式

    font.main= 标题的字体样式

    font.sub= 副标题的字体样式

    ps 字体磅值(1磅约为1/72英寸)。文本的最终大小为 ps*cex

    family 绘制文本时使用的字体族。标准的取值为serif(衬线)、sans(无衬线)和mono(等宽)

    C. 颜色

    在数据图形中颜色应该谨慎且有节制地使用。当使用颜色时,应突出重要的信息,而不能随意使用它。颜色会产生干扰,当图中的符号具有不同颜色时,眼睛会自动寻找不同颜色的含义。纯粹的装饰色彩会将人们的注意力从图形本身所要表达的信息引开。用彩色数据图形还会有一个不太重要但也不能忽略的问题:一小部分人是色盲,而这部分人的数量也不在少数。

    若要在绘图函数中使用彩色,可通过下面这些选项集来实现:

    col=用来指定plot()函数和 matplot()函数中数据符号和曲线的颜色,还有barplot()函数生成的条形图颜色;

    col.axis=坐标轴的颜色

    col.lab=坐标轴标签的颜色

    col.main=主标题颜色

    col.sub=副标题颜色

    fg= 图形的前景色

    bg= 图形的背景色

    颜色可通过代码值来指定。例如col=25会得到蓝色。在控制台执行colors()函数就可知R能识别657种颜色,为了方便起见,会列出657颜色名称,这些名称能被R识别。所以,col=“blue”与col=25是一样的效果。

    > colors()

      [1] "white"                "aliceblue"            "antiquewhite"       

      [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"     

      [7] "antiquewhite4"        "aquamarine"          "aquamarine1"       

    ......       

    [652] "yellow"              "yellow1"              "yellow2"           

    [655] "yellow3"              "yellow4"              "yellowgreen"

    当然有些时候我们需要在图形上绘制独立的点,线或者文本等,这些都不是绘图函数的参数,需要独立的函数来支撑,我们下一节就为大家来介绍这些。

    参考资料:

    1. 《R语言统计入门(第二版)》 人民邮电出版社  Peter Dalgaard著 

    2. 《R语言初学者指南》 人民邮电出版社  Brian Dennis著

    3. Vicky的小笔记本《blooming for you》by Vicky

    相关文章

      网友评论

        本文标题:R语言系列第六期:③R语言高级绘图(上)

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