部分组合的生长性状,有的正交大于反交,有的自交大于OP。调出几个代表作boxplot。
# 加载字母函数
library(multcompView)
# I need to group the treatments that are not different each other together.
generate_label_df <- function(TUKEY, variable){
# Extract labels and factor levels from Tukey post-hoc
Tukey.levels <- TUKEY[[variable]][,4]
Tukey.levels<-as.matrix(Tukey.levels)
rownames(Tukey.levels)<-rownames(TUKEY[[variable]])
Tukey.labels <- data.frame(multcompLetters(Tukey.levels)['Letters'])
#I need to put the labels in the same order as in the boxplot :
Tukey.labels$treatment=rownames(Tukey.labels)
Tukey.labels=Tukey.labels[order(Tukey.labels$treatment) , ]
return(Tukey.labels)
}
# load rdata
load("D:/Sync/Dlm_wk/8801growth_para/1 Growth performance/grow.performance.RData")
com.per <- function(grp1,grp2,trait,letter) {
grp1<-df[df$com==grp1,]
grp2<-df[df$com==grp2,]
grp.bind<-rbind(grp1,grp2)
grp.bind$com<-factor(grp.bind$com)
model=lm(grp.bind[,trait] ~ grp.bind$com )
ANOVA=aov(model)
TUKEY <- TukeyHSD(x=ANOVA, 'grp.bind$com', conf.level=0.95)
LABELS=generate_label_df(TUKEY,"grp.bind$com")
a<-boxplot(grp.bind[,trait]~grp.bind$com,
ylim=c(min(grp.bind[,trait],na.rm=T) ,
1.01*max(grp.bind[,trait],na.rm=T)) ,
xlab=letter,
ylab=trait , main="")
# abline(h=mean(grp.bind[,trait],na.rm=T),lty=2)
# I want to write the letter over each box. Over is how high I want to write it.
over=0.02*max( a$stats[nrow(a$stats),] )
#Add the labels
text( c(1:nlevels(grp.bind$com)) ,
a$stats[nrow(a$stats),]+over , LABELS[,1])
}
# 作图
# pdf("grow.performance.compare.1205.pdf",width = 9, height = 3,family="Times",pointsize = 10)
par(mfrow=c(1,6),mar = c(7, 4, .5, .5),las=2)
com.per(grp1 = "RC5Y7",grp2 = "Y7RC5",trait = "H14",letter = "(a)")
com.per(grp1 = "RC402RC82",grp2 = "RC82_OP",trait = "H05",letter = "(b)")
com.per(grp1 = "RF27RF27",grp2 = "RF27_OP",trait = "DBH14",letter = "(c)")
com.per(grp1 = "Y9Y9",grp2 = "Y9_OP",trait = "DBH14",letter = "(d)")
com.per(grp1 = "RC82Y9",grp2 = "RC82_OP",trait = "H05",letter = "(e)")
com.per(grp1 = "RC82Y9",grp2 = "RC82_OP",trait = "H14",letter = "(f)")
dev.off()
## null device
## 1