1 - DATA



str(FDN)
'data.frame':   77 obs. of  2 variables:
 $ Metodo: Factor w/ 3 levels "Ankom","Tecnal_1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FDN   : num  817 796 811 823 832 ...


2 - ANOVA



library(multcompView)
library(emmeans)

mod=aov(FDN~Metodo, data = FDN)
summary(mod)
            Df Sum Sq Mean Sq F value   Pr(>F)    
Metodo       2   8600    4300   12.02 3.02e-05 ***
Residuals   74  26472     358                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
medias = emmeans(mod, ~ Metodo)
summary(medias)
 Metodo   emmean   SE df lower.CL upper.CL
 Ankom       801 4.13 74      793      810
 Tecnal_1    814 3.57 74      807      821
 Tecnal_2    828 3.57 74      821      835

Confidence level used: 0.95 
tukey = TukeyHSD(mod)
print(tukey)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = FDN ~ Metodo, data = FDN)

$Metodo
                      diff        lwr      upr     p adj
Tecnal_1-Ankom    12.27726 -0.7815932 25.33612 0.0697502
Tecnal_2-Ankom    26.53833 13.4794782 39.59719 0.0000189
Tecnal_2-Tecnal_1 14.26107  2.1709209 26.35122 0.0167054
letras = multcompLetters4(mod, tukey)
print(letras)
$Metodo
Tecnal_2 Tecnal_1    Ankom 
     "a"      "b"      "b" 
library(dplyr)
FDN_plot = FDN %>% group_by(Metodo) %>%
  summarise(mean = mean(FDN, na.rm = TRUE),sd = sd(FDN, na.rm = TRUE),.groups = "drop")
FDN_plot

# letras para cada método
letras_FDN = data.frame(Metodo = c("Ankom", "Tecnal_1", "Tecnal_2"), letra = c("a", "a", "b"))

# adicionar as letras ao data
FDN_plot = FDN_plot %>% left_join(letras_FDN, by = "Metodo")
FDN_plot
cores = c("Ankom"="#E76F51","Tecnal_1"="#457B9D","Tecnal_2"="#2A9D8F")

library(ggplot2)
p1 = ggplot(FDN_plot,aes(x = Metodo, y = mean, fill=Metodo)) +
  geom_col(width = 0.75) + geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd), width = 0.2) +
  geom_text(aes(y = mean + sd + 0.05*max(mean, na.rm = TRUE), label = letra), size = 4) +
  scale_fill_manual(values = cores) +
  labs(x = NULL, y = expression("Mean NDF (g/kg)")) +
  annotate("text", x = Inf, y = Inf, label = "P = <0.01", hjust = 1.1, vjust = 1.5, size = 6, fontface = "bold") +
  theme_classic() + theme(legend.position = "none", axis.text.x = element_text(angle = 17, hjust = 0.8, size = 11), plot.title = element_text(face = "bold")) + coord_cartesian(ylim = c(0, 1000))
p1

LS0tDQp0aXRsZTogIlRlc3RlIC0gTWV0b2RvcyBkZSBkZXRlcm1pbmHDp8OjbyBkZSBGRE4iDQphdXRob3I6ICJWYWduZXIgT3ZhbmkiDQpkYXRlOiAiMDkvMDMvMjAyNiINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0aGVtZTogdW5pdGVkDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6ICcyJw0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogJzInDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQotLS0NCg0KKioqDQoqKioNCiMgKioxIC0gREFUQSoqDQoqKioNCioqKg0KDQpgYGB7cn0NCkZETj1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzEgLSBQw7NzRG9jLzIgLSBGQVBFU1AgLSBTaWx2aXBhc3RvcmlsL1Jlc3BvbnNhYmlsaWRhZGVzL0ZETi9GRE4uY3N2IikNCkZETiRNZXRvZG89YXMuZmFjdG9yKEZETiRNZXRvZG8pDQpzdHIoRkROKQ0KVmlldyhGRE4pDQpgYGANCioqKg0KKioqDQojICoqMiAtIEFOT1ZBKioNCioqKg0KKioqDQoNCmBgYHtyfQ0KbGlicmFyeShtdWx0Y29tcFZpZXcpDQpsaWJyYXJ5KGVtbWVhbnMpDQoNCm1vZD1hb3YoRkROfk1ldG9kbywgZGF0YSA9IEZETikNCnN1bW1hcnkobW9kKQ0KbWVkaWFzID0gZW1tZWFucyhtb2QsIH4gTWV0b2RvKQ0Kc3VtbWFyeShtZWRpYXMpDQp0dWtleSA9IFR1a2V5SFNEKG1vZCkNCnByaW50KHR1a2V5KQ0KbGV0cmFzID0gbXVsdGNvbXBMZXR0ZXJzNChtb2QsIHR1a2V5KQ0KcHJpbnQobGV0cmFzKQ0KDQpsaWJyYXJ5KGRwbHlyKQ0KRkROX3Bsb3QgPSBGRE4gJT4lIGdyb3VwX2J5KE1ldG9kbykgJT4lDQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihGRE4sIG5hLnJtID0gVFJVRSksc2QgPSBzZChGRE4sIG5hLnJtID0gVFJVRSksLmdyb3VwcyA9ICJkcm9wIikNCkZETl9wbG90DQoNCiMgbGV0cmFzIHBhcmEgY2FkYSBtw6l0b2RvDQpsZXRyYXNfRkROID0gZGF0YS5mcmFtZShNZXRvZG8gPSBjKCJBbmtvbSIsICJUZWNuYWxfMSIsICJUZWNuYWxfMiIpLCBsZXRyYSA9IGMoImEiLCAiYSIsICJiIikpDQoNCiMgYWRpY2lvbmFyIGFzIGxldHJhcyBhbyBkYXRhDQpGRE5fcGxvdCA9IEZETl9wbG90ICU+JSBsZWZ0X2pvaW4obGV0cmFzX0ZETiwgYnkgPSAiTWV0b2RvIikNCkZETl9wbG90DQpgYGANCg0KYGBge3J9DQpjb3JlcyA9IGMoIkFua29tIj0iI0U3NkY1MSIsIlRlY25hbF8xIj0iIzQ1N0I5RCIsIlRlY25hbF8yIj0iIzJBOUQ4RiIpDQoNCmxpYnJhcnkoZ2dwbG90MikNCnAxID0gZ2dwbG90KEZETl9wbG90LGFlcyh4ID0gTWV0b2RvLCB5ID0gbWVhbiwgZmlsbD1NZXRvZG8pKSArDQogIGdlb21fY29sKHdpZHRoID0gMC43NSkgKyBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbWVhbiAtIHNkLCB5bWF4ID0gbWVhbiArIHNkKSwgd2lkdGggPSAwLjIpICsNCiAgZ2VvbV90ZXh0KGFlcyh5ID0gbWVhbiArIHNkICsgMC4wNSptYXgobWVhbiwgbmEucm0gPSBUUlVFKSwgbGFiZWwgPSBsZXRyYSksIHNpemUgPSA0KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzKSArDQogIGxhYnMoeCA9IE5VTEwsIHkgPSBleHByZXNzaW9uKCJNZWFuIE5ERiAoZy9rZykiKSkgKw0KICBhbm5vdGF0ZSgidGV4dCIsIHggPSBJbmYsIHkgPSBJbmYsIGxhYmVsID0gIlAgPSA8MC4wMSIsIGhqdXN0ID0gMS4xLCB2anVzdCA9IDEuNSwgc2l6ZSA9IDYsIGZvbnRmYWNlID0gImJvbGQiKSArDQogIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAxNywgaGp1c3QgPSAwLjgsIHNpemUgPSAxMSksIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIikpICsgY29vcmRfY2FydGVzaWFuKHlsaW0gPSBjKDAsIDEwMDApKQ0KcDENCg0KYGBgDQoNCg0K