R Markdown

setwd("D:/R/sur")

# library(readr)
sur <- read.csv("D:/R/sur/sur_com.csv")
# View(sur)
str(sur)
## 'data.frame':    67 obs. of  6 variables:
##  $ X      : int  83 84 85 86 87 88 89 90 91 92 ...
##  $ Fam    : int  83 84 85 86 87 88 89 90 91 92 ...
##  $ Mum    : int  10 10 10 10 10 11 11 11 11 11 ...
##  $ Dad    : int  NA 7 13 5 9 NA 7 13 5 9 ...
##  $ Types  : Factor w/ 3 levels "OPs","Outcrosses",..: 1 2 2 2 2 1 2 2 2 2 ...
##  $ percent: num  37.9 46.4 38 39.4 45.2 ...
# boxplot(sur$percent~sur$Types)
source("C:/Users/Administrator/Desktop/generate_label_df2.r")
model = lm(sur$percent ~ sur$Types)
ANOVA = aov(model)
TUKEY <- TukeyHSD(x = ANOVA, "sur$Types", conf.level = 0.95)
a <- TUKEY$`sur$Types`[, c(1, 4)]
LABELS = generate_label_df(TUKEY, "sur$Types")
par(mar = c(4, 4, 0.5, 0.5), family = "serif")
a = boxplot(sur$percent ~ sur$Types, ylim = c(min(sur$percent, na.rm = T), 1.01 * 
    max(sur$percent, na.rm = T)), ylab = "Survival rate/%")
data.i <- sur$percent
abline(h = mean(data.i, na.rm = T), lty = 2)
# means <- aggregate(data.i, list(df.test$Type), mean, na.rm=T)
means <- aggregate(data.i, list(sur$Types), mean, na.rm = T)
over = 0.02 * max(a$stats[nrow(a$stats), ])
text(c(1:nlevels(sur$Types)), a$stats[nrow(a$stats), ] + over, LABELS[, 1])
points(means$x, col = "black", pch = 18)