R语言中绘图的注释函数小结

2019-07-31 14:35:49 浏览数 (1)

我们知道一个漂亮而清晰的图像的形成指定缺不了图像中细节的注释。那么今天我们就来总结下在R语言中那些注释函数。

首先,我们看下文本注释函数:text(),mtext(), legend()。这些函数都是R语言内置的基础函数,我们看下具体的实例:

1. text() 注释绘图中的任意点。

其中主要的参数是labels,不仅可以支持文本的添加,还支持expression格式的公式文本化展示。x,y代表了点的位置。

代码语言:javascript复制
plot(-1:1, -1:1, type = "n", xlab ="Re", ylab = "Im")
plot(1:10, 1:10)
text(4, 9, expression(hat(beta) == (X^t * X)^{-1} * X^t *y))

2. mtext() 属于子标题,注释坐标轴。

其中主要的参数是side分别对应的值1(下),2(左),3(上),4(右),代表坐标轴位置。Line主要指的相对于坐标轴线的位置,负数线内,正数线外。

代码语言:javascript复制
mtext("«Latin-1 accented chars»: éè øØ å<Åæ<Æ", side = 3)
mtext("«Latin-1 accented chars»: éè øØ å<Åæ<Æ", side = 2)

3. legend() 主要是注释图形的分组信息。

其中主要的参数:

Legend指的标签文本

bty主要是色块的类型,圆形(o),长方形(n)对应的颜色填充为fill。

Lty主要是线类型设置,对应的颜色控制室col。

bg指的整体legend的背景颜色。

Text.col设置标签的字体颜色。

代码语言:javascript复制
legend(2, 8, c("sin","cos", "tan"), col = c(3, 4, 6),text.col ="green4", lty = c(2, -1, 1), pch = c(NA, 3, 4),merge = TRUE, bg ="gray90")

接下来我们看下图像的注释包括点,线,图:

1. points() 在绘图中添加点。

主要参数是点的类型,参照plot中2的编号。

代码语言:javascript复制
points(c(6,2), c(2,1), pch = 3, cex = 4, col ="red

2. lines()在绘图中增加对应的曲线。

其中主要的参数是线类型的确认。所有类型参考plot。

代码语言:javascript复制
x=c(1:10)
y=10-x
lines(x,y,lty=1)

3. abline()在绘图中添加相应的参考线

主要的参数h(与x轴平行直线),v(与y轴平行直线)。

abline(h=2)

abline(v=2)

4. grid 内置的包,在绘图中添加相应的子图。这个包展现其图形的嵌入功能需要引入ggplot的绘图包,这个包我们就不详细介绍了,教程网上一搜一大把。那么我们来看下如何实现子图的嵌入。

代码语言:javascript复制
数据的准备:
library(ggplot2)
dt =data.frame(A = c(2, 7, 4, 10, 1), B = c('B','A','C','D','E'))
p1 =ggplot(dt, aes(x = "", y = A, fill = B))  
  geom_bar(stat = "identity")  
  coord_polar(theta = "y")   ## 把柱状图折叠成饼图(极坐标)
set.seed("123")
month <-c(1,2,3,4,1,2,3,4)
count <-runif(8)
species <-c('A','A','A','A','B','B','B','B')
mydata <-data.frame(month,count,species )
p2 <-ggplot(mydata,aes(x=month,y=count,colour=species,group=species,fill=species))  geom_line(size=0.8)
 
代码语言:javascript复制
图形的绘制:
            
library(grid)
vp <- viewport(width = 0.3, height =0.4, x = 0.65,y = 0.5,just=c("left","top"))
    #widthheight表示插入图形的大小,xy表示插入图形相对于图片底层just的位置
print(p2)
print(p1,vp=vp)

上面只是初步的注释效果,当然那些高大上的图离不了这些注释。当然不可否认,一个AI/PS可以轻松搞定这些注释,但是当你有几十甚至几百张图的时候是否还能淡定。

欢迎互相学习交流!

0 人点赞