Graphique à 2 axes réalisé avec le logiciel R
Il est possible avec le logiciel R de tracer un graphique avec 2 axes des ordonnées (ou même 2 axes des abscisses).
Une courbe noire correspondant à l'axe de gauche et une rouge à l'axe de droite (exemple)
Voici un graphique présentant 2 axes des ordonnées pour légender une superposition de courbes
Les données en abscisses et en ordonnées
# Données d'abscisses (ce n'est qu'un exemple)
x=rep(1:25)*2.5
# Données des ordonnées
y_gauche=c(0,0,0,100,200,50,5,4,3,2,5,6,4,3,1,0,0,0,0,10,15,17,9,4,0)
#Teneur en glucides (mesurée en fonction de la taille du précipité)
y_droite=c(0,0,0,0,0,0,0,0,0,0,0,1,1,2,3,2,2,1,0,0,0,0,0,0,0)
Tracer le graphique (partie gauche)
##### TRES IMPORTANT POUR POUVOIR AJOUTER DES AXES SUPPLÉMENTAIRE (tel un axe des ordonnées à droite)
par(mar=c(4,4,3,5)) # par redéfinit les marges du graphiques pour laisser de la place à droite pour l'ajout d'un axe.
# Le graphique (première courbe noire)
plot(x, y_gauche, pch=16, axes=F, ylim=c(0,300), xlab="", ylab="", type="o",col="black", main="Graphique à 2 axes")
# Légende de l'axe Y de gauche
axis(2, ylim=c(0,300),col="black")
mtext("Axe de la courbe noire",side=2,line=2.5)
box() # pour encadrer le graphique
3. Ajouter les axes
# Ajout de la courbe rouge correspondant à l'axe de droite
par(new=T) # Autorise la superposition des courbes et non le remplacement d'un graphique par un autre
plot(x, y_droite, pch=15, xlab="", ylab="", ylim=c(0,3), axes=F, type="o", col="red")
# Légende de l'axe Y de droite
mtext("Axe de la courbe rouge",side=4,col="red",line=2.5)
axis(4, ylim=c(0,3), col="red",col.axis="red")
# AXE X
axis(1,pretty(range(x),10)) # la commande pretty permet de ne pas afficher la totalité des valeurs de x mais plutôt des intervalles
mtext("Volume d'élution (mL)",side=1,col="black",line=2.5)
4. Ajouter une légende
# Legend
legend(x="topleft",legend=c("Courbe noire","Courbe rouge"), text.col=c("black","red"), pch=c(16,15), col=c("black","red"))
Faire la même chose sous {ggplot2}
# Créer le data frame
df <- data.frame(
x = x,
y_gauche = y_gauche,
y_droite = y_droite
)
# Convertir le data frame en format "long"
df_long <- reshape2::melt(df, id.vars = "x", variable.name = "variable", value.name = "value")
# Créer le graphique
ggplot(df_long, aes(x = x, y = value, color = variable)) +
geom_point(aes(shape = variable)) +
geom_line() +
scale_y_continuous(sec.axis = sec_axis(~ . * 0.01, name = "Axe de la courbe rouge")) +
scale_color_manual(values = c("y_gauche" = "black", "y_droite" = "red")) +
scale_shape_manual(values = c("y_gauche" = 16, "y_droite" = 15)) +
labs(x = "Volume d'élution (mL)", y = "Axe de la courbe noire", color = "Légende", shape = "Légende") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Mise à jour de la page avril 2024