# Chargement des bibliothèques nécessaires
library(ggplot2)
library(plyr)
library(reshape2)
library(gridExtra)
library(Cairo)
# Fonction pour calculer moyennes et écarts-types
data_summary <- function(data, varname, groupnames){
summary_func <- function(x, col){
c(mean = mean(x[[col]], [Link]=TRUE),
sd = sd(x[[col]], [Link]=TRUE))
data_sum <- ddply(data, groupnames, .fun=summary_func, varname)
data_sum <- rename(data_sum, c("mean" = varname))
return(data_sum)
# Importation et préparation des données
VlirRF <- [Link]("D:/Méthode de recherche/[Link]",sep=",",header=TRUE)
# Conversion des variables en facteurs
VlirRF$FYM <- [Link](VlirRF$FYM)
VlirRF$P_TSP <- [Link](VlirRF$P_TSP)
VlirRF$Year <- [Link](VlirRF$Year)
# Filtrage des données avec NK="Y"
Vlir2 <- VlirRF[which(VlirRF$NK=="Y"),]
# Calcul des données résumées pour chaque variable
data_gy <- data_summary(Vlir2, varname="GY", groupnames=c("Year", "FYM", "TotP"))
data_pcontent <- data_summary(Vlir2, varname="P_gr", groupnames=c("Year", "FYM", "TotP"))
data_puptake <- data_summary(Vlir2, varname="TotP.up_st_gr", groupnames=c("Year", "FYM", "TotP"))
# Fonction pour créer un graphique standardisé
create_plot <- function(data, y_var, y_label, y_lim, show_legend=TRUE) {
p <- ggplot(data, aes(x=TotP, y=get(y_var))) +
geom_point(aes(shape=FYM, color=FYM), size=4) +
geom_smooth(se=FALSE, method="lm", aes(linetype=FYM, group=FYM, color=FYM)) +
theme_bw() +
facet_grid(.~Year) +
labs(x=expression(bold(paste("Application totale de P (kg P ", ha^-1)))) +
labs(y=y_label) +
theme(text=element_text(size=16)) +
theme(
[Link].x=element_text(color="black", size=16, vjust=0.5),
[Link].y=element_text(color="black", size=16, vjust=0.5)) +
theme(
[Link].x=element_text(colour="black", size=16, face="bold", vjust=0.1),
[Link].y=element_text(colour="black", size=16, face="bold", vjust=1)) +
geom_errorbar(aes(ymin=get(y_var)-sd, ymax=get(y_var)+sd, color=FYM),
width=.2, position=position_dodge(0.05)) +
theme([Link]=element_blank(),
[Link]=element_line(colour="black")) +
scale_shape_manual(values=c(15, 16, 17)) +
theme([Link].x=element_text(size=16, colour="black", face="bold", angle=0)) +
ylim(y_lim[1], y_lim[2])
if(show_legend) {
p <- p + theme([Link]=c(0.95,0.2))
} else {
p <- p + theme([Link]="none")
return(p)
# Création des graphiques individuels
gy_plot <- create_plot(data_gy, "GY",
expression(bold(paste("Rendement grainier (Mg ", ha^-1))),
c(0,7), TRUE)
pcontent_plot <- create_plot(data_pcontent, "P_gr",
expression(bold(paste("Contenu en P du grain (mg P ", ha^-1))),
c(0, max(data_pcontent$P_gr + data_pcontent$sd, [Link]=TRUE)), FALSE)
puptake_plot <- create_plot(data_puptake, "TotP.up_st_gr",
expression(bold(paste("Absorption totale de P (mg P ", ha^-1))),
c(0, max(data_puptake$TotP.up_st_gr + data_puptake$sd, [Link]=TRUE)), FALSE)
# Combinaison des graphiques
combined_plot <- [Link](gy_plot, pcontent_plot, puptake_plot, ncol=1)
# Sauvegarde de la figure combinée
ggsave("Figure_Exercice_trois.png", combined_plot,
width=10, height=12, dpi=500, device="png")
# Affichage d'un message de confirmation
message("Les graphiques ont été générés avec succès et sauvegardés dans 'Figure_Exercice_trois.png'")