R第三章:图形初阶

简单示例

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")

结果演示

plot()是R中为对象作图的一个泛型函数(它的输出将根据所绘制对象类型的不同而变化)。plot(x, y, type="b")将x置于横轴,将y置于纵轴,绘制点集(x, y),然后使用线段将其连接。type="b"表示同时绘制点和线。

图形参数

1,通过函数par()来指定这些选项。以这种方式设定的参数值除非被再次修改,否则将在会话结束前一直有效。调用格式为par(optionname=value, optionname=value, ...)。不加参数地执行par()将生成一个含有当前图形参数设置的列表。添加参数no.readonly=TRUE可以生成一个可以修改的当前图形参数列表。

#保存了一份当前的图形参数设置
opar <- par(no.readonly=TRUE)
#将默认的线条类型修改为虚线(lty=2),并将默认的点符号改为实心三角(pch=17)
par(lty=2, pch=17)
plot(dose, drugA, type="b")
#还原原始设置
par(opar)

2,通过为高级绘图函数直接提供optionname= value的键值对。这种情况下,指定的选项仅对这幅图形本身有效。

plot(dose, drugA, type="b", lty=2, pch=17)

符号和线条

pch  指定绘制点时使用的符号

cex  指定符号的大小。cex是一个数值,表示绘图符号相对于默认大小的缩放倍数。默认大小为1.

lty    指定线条类型

lwd  指定线条宽度。lwd是以默认值的相对大小来表示的。默认值为1.

pch可能的值如图

对于符号21--25,还可以指定边界颜色(col=)和填充色(bg=)

lty可用的值如图

颜色

col         默认的绘图颜色

col.axis  坐标轴刻度文字的颜色

col.lab   坐标轴标签(名称)的颜色

col.main   标题颜色

col.sub  副标题颜色

fg          图形的前景色

bg         图形的背景色

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

文本属性

图形参数同样可以用来指定字号,字体和字样。

cex    表示相对于默认大小缩放倍数的数值。默认大小为1,1.5表示方法为默认值的1.5倍。

cex.axis  坐标轴刻度文字的缩放倍数。

cex.lab   坐标轴标签(名称)的缩放倍数。

cex.main   标题的缩放倍数。

cex.sub   副标题的缩放倍数。

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(等宽)

图形尺寸与边界尺寸

pin    以英寸表示的图形尺寸(宽和高)

mai    以数值向量表示的边界大小,顺序为“下,左,上,右”,单位为英寸

mar    以数值向量表示的边界大小,顺序为“下,左,上,右”,单位为英分。默认值为c(5, 4, 4, 2) + 0.1

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

除了图形参数,许多高级绘图函数(例如plot,hist,boxplot)也允许自行设定坐标轴和文本标注选项。

plot(dose, drugA, type="b",
        col="red", lty=2, pch=2, lwd=2,
        main="Clinical Trials for Drug A",
        sub="This is hypothetical data",
        xlab="Dosage", ylab="Drug Response",
        xlim=c(0,60), ylim=c(0,70))

结果

但是并非所有函授都支持这些选项,具体的需要参考相应函数的帮助以了解其可以接受哪些选项。

*** 某些高级绘图函数已经包含了默认的标题和标签。可以通过在plot()语句或单独的par()语句中添加ann=FALSE来移除它们。

从更精细的控制和模块化的角度考虑,可以使用相应的函数来控制标题,坐标轴,图例和文本标注的外观。

标题

title()函数为图形添加标题和坐标轴标签。调用格式为:

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

函数title()中亦可以指定其他图形参数(如文本大小,字体,旋转角度和颜色),一般来说它被用于添加信息到一个默认标题和坐标轴标签被ann=FALSE选项移除的图形中。

坐标轴

axis()函数可以用来创建自定义的坐标轴。其格式为:

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

(...)    其他图形参数

使用自定义坐标轴时,应该禁用高级绘图函数自动生成的坐标轴。

参数axes=FALSE将禁用全部坐标轴(包括坐标轴框架线,除非你添加了参数frame.plot=TRUE)

参数xaxt="n"和yaxt="n"将分别禁用X轴或Y轴(会留下框架线,只是去除了刻度)

参考线

函数abline()可以用来为图形添加参考线。使用格式为:

abline(h=yvalues, v=xvalues)

abline中也可以指定其他图形参数(如线条类型,颜色和宽度)

 

abline(v=seq(1, 10, 2), lty=2, col="blue")

 

图例

图例可以帮助你辨别出每个条形,扇形区域或折线各代表哪一类数据。可以使用函数legend()来添加图例。使用格式为:

legend(location, title, legend, ...)

location    指定图例的位置。有多种方式可以可以选择,1,x,y坐标方式。2,locator(1),然后通过鼠标单击给出图例的位置。3,使用关键字bottom, bottomleft, left, topleft, top, topright, right, bottomright 或 center放置图例。如果使用了以上某个关键字,那么可以同时使用参数inset=指定图例向图形内侧移动的大小(以绘图区域大小的分数表示)

title      图例标题的字符串(可选)

legend      图例标签组成的字符型向量

(...)      其他选项。如果图例标示的是颜色不同的线条,需要指定col=加上颜色值组成的向量。如果是标示的是符号不同的点,则需指定pch=加上符号的代码组成的向量。如果标示的是不同的线条宽度或线条类型,则使用lwd=或lty=加上宽度值或类型值组成的向量。要为图例创建颜色填充的盒形(常见于条形图,箱线图或饼图),需要使用参数fill=加上颜色值组成的向量。

其他常用的图例选项还有:bty, bg, cex, text.col, horiz=TRUE等等。

文本标注

可以通过函数text()和mtext()将文本添加到图形上。text()可向绘图区域内部添加文本,而mtext()则向图形的四个边界之一添加文本。使用格式分别为:

text(location, "text to place",  pos, ...)

mtext("text to place", side, line=n, ...)

location    文本的位置参数。可为一对x,y坐标,也可通过指定location为location(1)使用鼠标交互式地确定摆放位置

pos      文本相对于位置参数的方位。1=下,2=左,3=上,4=右。如果指定了pos,就可以同时指定参数offset=作为偏移量,以相对于单个字符宽度的比例表示。

side      指定用来放置文本的边。1=下,2=左,3=上,4=右。你可以指定参数line=来内移或外移文本,随着值的增加,文本将外移。也可使用adj=0将文本向左下对齐,或使用adj=1右上对齐。

其他常用的选项有cex, col 和 font(分别用来调整字号,颜色和字体样式)。

图形的组合

在R中使用函数par()或layout()可以容易地组合多副图形为一副总括图形。可以在par()函数中使用图形参数mfrow=c(nrows, ncols)来创建按行填充的,行数为nrows,列数为ncols的图形矩阵。另外,可以使用mfcol=c(nrows, ncols)按列填充矩阵。

attach(mtcars)
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,2))
plot(wt, mpg, main="Scatterplot of wt vs. mpg")
plot(wt, disp, main="Scatterplot of wt vs. disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")
par(opar)
detach(mtcars)

结果如下:

***hist()包含了一个默认的标题,使用main=" "可以禁用它,抑或使用ann=FALSE来禁用所有标题和标签。

函数layout()的调用形式为layout(mat),其中的mat是一个矩阵,它指定了所要组合的多个图形的所在位置。

attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow=TRUE))
hist(wt)
hist(mpg)
hist(disp)
detach(mtcars)

结果如下:

为了更精确地控制每副图形的大小,可以有选择地在layout()函数中使用widths=和heights=两个参数。其形式为:

widths=各列宽度值组成的一个向量

heights=各行高度值组成的一个向量

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

图形布局的精细控制

可以使用图形参数fig=完成这个任务。

opar <- par(no.readonly = TRUE)
par(fig=c(0, 0.8, 0, 0.8))
plot(mtcars$wt, mtcars$mpg,
     xlab="Miles 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)

结果如下:

参数fig=的取值是一个形如c(x1, x2, y1, y2)的数值向量。

*** fig=默认会新建一副图形,所以在添加一副图到一副现有图形上时,需要设定参数new=TRUE

转载于:https://www.cnblogs.com/xinlanzhang7319/p/7754782.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值