vlambda博客
学习文章列表

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



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


# 在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()里指定其它的绘图参数,包括文本大小、字体和颜色等等。


# 添加一个红色标题和蓝色副标题#坐标轴标签只有默认值大小的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( )去给图中的点添加标签:


# 示例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轴。


# 简单示例# 创建数据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")


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


4. 参考线


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


abline(h=yvalues, v=xvalues)


# 在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可以是图例处于水平位置。


# 示例attach(mtcars)boxplot(mpg~cyl, main="Milage by Car Weight",yaxt="n", xlab="Milage",col=terrain.colors(3))legend("topright", inset=0.05, title="Number ofCylinders",c("4","6","8"), fill=terrain.colors(3))





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