4种生长表现

部分组合的生长性状,有的正交大于反交,有的自交大于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