数据准备
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 yield index
## 1 2020 N1 a 1 3.4 1.26
## 2 2020 N1 a 2 4.1 1.20
## 3 2020 N1 a 3 4.3 1.30
## 4 2020 N1 b 1 2.8 1.08
## 5 2020 N1 b 2 2.7 1.05
## 6 2020 N1 b 3 2.5 1.15
## 7 2020 N2 a 1 5.1 1.32
## 8 2020 N2 a 2 5.6 1.28
## 9 2020 N2 a 3 5.3 1.35
## 10 2020 N2 b 1 4.8 1.33
## 11 2020 N2 b 2 4.0 1.28
## 12 2020 N2 b 3 5.2 1.30
## 13 2021 N1 a 1 4.8 1.19
## 14 2021 N1 a 2 4.5 1.21
## 15 2021 N1 a 3 4.5 1.24
## 16 2021 N1 b 1 3.8 1.09
## 17 2021 N1 b 2 3.6 1.28
## 18 2021 N1 b 3 3.3 1.35
## 19 2021 N2 a 1 5.8 1.45
## 20 2021 N2 a 2 5.2 1.40
## 21 2021 N2 a 3 5.6 1.37
## 22 2021 N2 b 1 4.0 1.28
## 23 2021 N2 b 2 4.5 1.15
## 24 2021 N2 b 3 4.7 1.24
3.4.2 坐标轴
在绘图的时候,R自动生成的坐标轴不能“尽如我意”,这时候就需要进行坐标轴的自定义。首先要学会怎么去除系统自动生成的坐标轴。
1 基础图形绘制
plot(df$yield, df$index, pch=25, col="red", font.lab=3, cex.lab=1.5, font.main=2, cex.main=2, pin=c(4,3), mai=c(1,0.5,1,0.5), main="Example", sub="This is an example plot", xlab="index", ylab="yield") # 绘制图形。

2 禁用坐标轴
禁用全部坐标轴
plot(df$yield, df$index, pch=25, col="red", font.lab=3, cex.lab=1.5, font.main=2, cex.main=2, pin=c(4,3), mai=c(1,0.5,1,0.5), main="Example", sub="This is an example plot", xlab="index", ylab="yield", axes=FALSE) # 绘制图形,去除系统自动生成的坐标轴,axes=FALSE将禁用系统生成的全部坐标轴。

禁用坐标轴但保留边框
plot(df$yield, df$index, pch=25, col="red", font.lab=3, cex.lab=1.5, font.main=2, cex.main=2, pin=c(4,3), mai=c(1,0.5,1,0.5), main="Example", sub="This is an example plot", xlab="index", ylab="yield", axes=FALSE, frame.plot=TRUE) # 禁用坐标轴,但是保留边框,保留边框的命令是frame.plot=TRUE。

禁用部分坐标轴
plot(df$yield, df$index, pch=25, col="red", font.lab=3, cex.lab=1.5, font.main=2, cex.main=2, pin=c(4,3), mai=c(1,0.5,1,0.5), main="Example", sub="This is an example plot", xlab="index", ylab="yield", xaxt="n") # 命令是xaxt="n"可禁用x轴,只是去除了刻度,但是保留框架线。

plot(df$yield, df$index, pch=25, col="red", font.lab=3, cex.lab=1.5, font.main=2, cex.main=2, pin=c(4,3), mai=c(1,0.5,1,0.5), main="Example", sub="This is an example plot", xlab="index", ylab="yield", yaxt="n") # 命令是xaxt="n"可禁用x轴,只是去除了刻度,但是保留框架线。

3 坐标轴参数设置
知道了怎么去除自动生成的坐标轴后,接下来就按照自己的需求对图形坐标轴进行自定义,用到的函数是axis()。
函数:axis(side, at = NULL, labels = TRUE, tick = TRUE, line = NA, pos = NA, outer = FALSE, font = NA, lty = “solid”, lwd = 1, lwd.ticks = lwd, col = NULL, col.ticks = NULL, hadj = NA, padj = NA, gap.axis = NA, …)
side表示坐标轴位置,取值1、2、3、4分别代表下、左、上、右;
at表示需要添加刻度的数值,默认会根据变量的取值范围计算几个合适的刻度,也可以手工指定;
labels表示刻度标签,指定在刻度上需要标记的内容,默认就是刻度对应的值;
tick是逻辑变量,取TRUE表示显示坐标轴和刻度线,取FALSE时,坐标轴线和刻度线不画出;
line表示坐标轴线位置与图像边框的距离,取负数时会画在图像边框以内;pos 表示轴线所在的位置;line.outer取TRUE时,坐标轴将画在画布边缘处;font.axis表示坐标轴刻度值的字体,font=1表示正体,2表示黑体,3表示斜体,4表示黑斜体。
lty表示线型,用在axis函数中表示坐标轴线型;
lwd表示线的粗细,用在axis函数中表示坐标轴线粗细;
lwd.ticks表示刻度线粗细。
col表示图的颜色,用在axis函数中表示坐标轴线和坐标刻度线的颜色;
col.axis表示坐标轴刻度值的颜色;
col.ticks表示坐标轴刻度线的颜色;hadj指将刻度值沿平行坐标轴方向调整的距离;
padj指将刻度值沿垂直坐标轴方向调整的距离;
las表示坐标刻度值文字方向,las=0表示文字方向与坐标轴平行,1表示始终为水平方向,2表示与坐标轴垂直,3表示终为垂直方向。tck表示刻度线长度。

plot(df$yield, df$index, pch=25, col="red", font.lab=3, cex.lab=1.5, font.main=2, cex.main=2, pin=c(4,3), mai=c(1,0.5,1,0.5), main="Example", sub="This is an example plot", xlab="index", ylab="yield", axes=FALSE, frame.plot=TRUE, xlim=c(0,6),ylim=c(0,2)) # 绘制图形。
axis(side = 1, at=c(0, 2, 4, 6), labels=c("a0", "a2", "a4", "a6"), pos = 0, col = "blue", lwd=2, lwd.tick=5, col.tick="black", las = 0, tck = 0.1,col.axis="red" , font.axis=2, cex.axis=3, hadj = 0.08) # 自定义x轴,side=1表示坐标轴位置是在下方,at表示显示刻度线的位置为0,2,4,6;labels定义了刻度线对应的标签显示结果;pos定义了坐标轴是y=0的位置;col定义坐标轴颜色,lwd定义坐标轴粗细,lwd.tick和col.tick分别定义刻度线粗细和颜色,las定义标签文字方向,tck定义了刻度线长度,col.axis,font.axis,cex.axis分别定义了坐标轴标签颜色,字体,大小;hadj定义了沿x轴调整的距离。

4 次要刻度线
minor.tick(nx=n,ny=n,tick.ration=n)
nx和ny分别指定了X轴和Y轴每两条主刻度线之间通过次要刻度线划分得到的区间个数。tick.ratio表示次要刻度线相对于主刻度线的大小比例。
plot(df$yield, df$index, pch=25, col="red", main="Example", sub="This is an example plot", xlab="index", ylab="yield")# 绘制基础图形。
library(Hmisc) # 调用Hmisc包。minor.tick(nx=2, ny=3, tick.ratio = 0.5) # 给x轴主刻度线之间增加1条次要刻度线,给y轴添加2条次要刻度线。次要刻度线的长度是主刻度线的一半。

参考资料:
《R语言实战》(中文版),人民邮电出版社,2013.
R语言作图:坐标轴设置,https://blog.csdn.net/weixin_40628687/article/details/79254791
R语言低级绘图函数-axis,https://www.cnblogs.com/xudongliang/p/6762618.html




