R语言进阶之坐标轴和文本

2020-08-05 16:59:10 浏览数 (1)

许多高层次绘图函数都有可以调整坐标轴和文本的选项:

代码语言:javascript复制
# 在plot()中指定坐标轴相关的参数
plot(x, y, main="title", sub="subtitle",
     xlab="X-axis label", ylab="y-axixlabel",
     xlim=c(xmin, xmax), ylim=c(ymin,ymax)
     )

接下来,我将和大家简单介绍一下如何具体实现。

1. 标题

使用函数title()可以在图中添加标题,这里包括主标题、副标题、x轴标题和y轴标题,具体如下:

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

你也可以在title()里指定其它的绘图参数,包括文本大小、字体和颜色等等。

代码语言:javascript复制
# 添加一个红色标题和蓝色副标题
#坐标轴标签只有默认值大小的75%并且是绿色
title(main="My Title", col.main="red",
      sub="My Sub-title", col.sub="blue",
      xlab="My X label", ylab="My Y label",
      col.lab="green", cex.lab=0.75)

2. 文本注释

我们可以使用函数text()mtext()来给图形添加注释文本。不过,text()是将文本放在图中,而mtext()则是将文本放在图形的边缘:

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

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

常见选项如下图所示:

选项

描述

location

位置参数,可以用x轴和y轴的坐标表示

pos

设置文本相对于location的位置。1代表下方, 2代表左侧,3代表上方,4代表右侧。

side

函数mtext()指定图形的边缘。1代表下方, 2代表左侧,3代表上方,4代表右侧。

其它诸如坐标轴、字体和颜色等选项这里就不赘述了。

你也可以使用函数 text( )去给图中的点添加标签:

代码语言:javascript复制
# 示例
attach(mtcars) # 固定数据集
plot(wt, mpg, main="Milage vs. Car Weight",xlab="Weight", ylab="Mileage", pch=18,col="blue") # 绘制车重和每英里耗油量的散点图
text(wt, mpg, row.names(mtcars), cex=0.6, pos=4, col="red") # 标记每个点代表的车型

3. 坐标轴

你可以使用函数axis()来创建自己的坐标轴,使用形式如下:

axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)

选项

描述

side

指定坐标轴的位置。1代表下方, 2代表左侧,3代表上方,4代表右侧。

at

数值型向量,指定坐标轴记号的位置

labels

字符型向量,指定坐标轴记号的标记内容(默认是该处对应的数值)

pos

指定坐标轴线的坐标位置

lty

指定线条类型

col

指定线条和坐标轴记号的颜色

las

0代表标签和坐标轴平行,2代表标签和坐标轴垂直

tck

指定坐标轴记号的长度,负值代表记号在图形外而正值代表在图形内,0代表不绘制记号,默认值是-0.01。

如果你想自己创建坐标轴,你需要在高层次绘图函数里设置参数axes=FALSE,这样绘图时就不会出现坐标轴信息,接下来就可以自行添加了。另外,设置 xaxt="n"yaxt="n"可以分别不显示x轴和y轴。

代码语言:javascript复制
# 简单示例
# 创建数据
x <- c(1:10); y <- x; z <- 10/x
# 创建图形边缘用于设置坐标轴
par(mar=c(5, 4, 4, 8)   0.1)
# 绘制x vs y的图
plot(x, y,type="b", pch=21, col="red",
yaxt="n", lty=3, xlab="", ylab="") #不绘制y轴
# 添加线条 x vs. 1/x 
lines(x, z, type="b", pch=22, col="blue", lty=2)
# 在图形左侧添加坐标轴(y轴)
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")

4. 参考线

我们可以使用abline()函数来在图形中添加直线,使用方法如下:

abline(h=yvalues, v=xvalues)

代码语言:javascript复制
# 在y=1,5,7处添加三条水平线 
abline(h=c(1,5,7))
# 在x = 1,3,5,7,9添加三条垂直
abline(v=seq(1,10,2),lty=2,col="blue")

5. 图例

我们可以使用函数legend()来给图形添加图例,用法如下:

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

选项

描述

location

指定图例所在的位置

title

指定图例的标题

legend

指定图例

其它常见的图里选项包括 bty(指定图框类型),bg(指定背景色), cex(指定尺寸)和text.col(指定文本颜色),设定 horiz=TRUE可以是图例处于水平位置。

代码语言:javascript复制
# 在y=1,5,7处添加三条水平线 
abline(h=c(1,5,7))
# 在x = 1,3,5,7,9添加三条垂直
abline(v=seq(1,10,2),lty=2,col="blue")

这一期的内容相对而言比较多,但都是非常实用且重要的,在后续的绘图中我还会常常提及,希望大家能熟练掌握!

0 人点赞