数据准备
df <- read.table(file = "D:/Documents/R wd/df.csv", header = T, sep = ",", colClasses = c(year = "character", nitrogen = "character", variety = "character", block = "character")) # 数据导入。
df # 查看数据。
## year nitrogen variety block v1 v2 v3 v4
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94
3.4.5 文本标注
1 图内标注
函数text()用于绘图区域内部添加文本。
函数:text(x, y = NULL, labels = seq_along(x$x), adj = NULL, pos = NULL, offset = 0.5, vfont = NULL, cex = 1, col = NULL, font = NULL, ...)
x和y:用于指定添加文本的位置坐标,为数值型向量。如果,x和y向量的长度不同,则短的将会被循环使用。
labels:指定添加文本的内容,为字符串向量。
adj:调整文字的位置。其值位于[0,1]之间。当adj为1个值时,是调整labels的x轴的位置,当是2个值时,第1个调整的是x轴的位置,第2个调整的是y轴的位置。
pos:调整文字的方向位置,如果给定了此值,将覆盖adj给定的值。1,2,3和4分别对应坐标的下,左,上和右。
offset:此参数需要与pos结合使用。当指定pos时,给出字符偏移量。
vfont:NULL值为默认使用当前字体族。或者是一个长度为2的矢量字体字符向量。向量的第一个元素用于指定一种字体,第二个元素用于指定一种样式。如文本标签用表达式给出,则该项设置将被忽略。
cex:设置字体大小,如果为NA或NULL,则设置为1。
col:设置文本的颜色。
font:设置文本字体,1是默认值,普通文字,2代表加粗,3代表斜体, 4代表加粗+斜体,5只有用来ADOBE的设备上时,才有用。
srt:文本倾斜的角度。
1.1 指定坐标添加文本
plot(df$v1,df$v2) # 绘制图形。
text(x=1.4, y=1.5, labels="my words", pos=3, col="red", offset=-0.5, cex=1.2, font=3) # 图形区域添加文本。x和y标明location,pos指定方位,side指定放置文本的边。

1.2 指定坐标添加多个文本
plot(df$v1,df$v2) # 绘制图形。
text(x=c(1.1, 1.4), y=c(1.5, 3.5), labels=c("my text","my words"), pos=c(3,2), col=c("blue","red"), cex=c(1.5,2), font=c(1,3)) # 图形区域添加多个文本。

1.3 对图形元素添加文本标注
plot(df$v1,df$v2) # 绘制图形。
text(df$v1, df$v2, labels = df$v2,cex=0.5, col="red", pos = 4, srt=30) # 对图的每个点添加标注。

1.4 特殊符号
有时候需要在图上标注诸如求和、积分、上下标等数学符号,还有一些公式等。这里需要用到函数expression(...),...是要输入的表达式。 可以通过help(plotmath)以获得更多表达式的细节和示例。
plot(df$v1,df$v2, ann=F) # 绘制图形。
text(x=1.3, y=1.5, labels=expression(y == log(x) + sqrt(x) + sqrt(x,3)),col="red",font=3) # 添加数学公式。
text(x=1.1, y=2.5, labels=expression(x^(y + z)),col="green", cex=1.2, font=3) # 添加数学公式有上标。
text(x=1.2, y=2.5, labels=expression(alpha+pi-sigma),col="blue", cex=1.2, font=3) # 添加数学公式,希腊字母。
title(xlab=expression(kg/hm^2), ylab= expression(paste("this is", sqrt(x)))) # 也可以将数学公式添加到标题中。

2 图外标注
函数mtext()用于在图形四个边界之一添加文本。
mtext(text, side = 3, line = 0, outer = FALSE, at = NA, adj = NA, padj = NA, cex = NA, col = NA, font = NA, ...)
text:指定文本内容。
side:指定是哪个页边空白(1=下面,2=左边,3=上边,4=右边)。
line:指定文字出现的位置,文字和对应坐标轴平行。从坐标轴开始向外从0开始计数。
at:以用户坐标指定字符串位置。
adj:调整阅读方向。为使字符串平行坐标轴,adj=0,意味着左对齐或下对齐,而adj=1表示右对齐或上对齐。
padj:调整每个字符串垂直阅读的方向(它通过adj控制)。对于平行轴的字符串,padj=0表示右或上对齐,padj=1表示左或下对齐。
cex:调整字体大小,默认为1。
font:调整文字字体。
col:调整文字颜色。

plot(df$v1,df$v2) # 绘制图形。
mtext("my text", side = 4, col="blue") # 在图形右边添加文本。
mtext("my text", side = 4, line=0.8, col="red") # 在图形右边添加文本并向外偏移0.8。
mtext("my text", side = 4, line=0.8, col="black", adj = 1) # 在图形右边添加文本并向外偏移0.8,右上对齐。
mtext("my text", side = 3, line=0.5, col="green", adj = 0, padj = 1) # 在图形右边添加文本并向外偏移0.5,阅读方向左对齐,垂直阅读方向为下对齐。

参考资料:
《R语言实战》(中文版),人民邮电出版社,2013.
R语言中使用text()函数给绘图添加文字,https://www.biye5u.com/article/r/2018/6381.html
投必得R语言教程,第二讲 R作图-基础-图形参数设置:标题、图例、文字,https://mp.weixin.qq.com/s?__biz=MzU1Mzc3OTIwNg==&mid=2247495531&idx=1&sn=cdd80d4e950ae2b344cf188c68922fa8&chksm=fbef0602cc988f14e93b71bc6fcc2fda782d3ae9a3a67601a6c87756f4ae85bcc5d9c56d9b51&scene=21#wechat_redirect