Superposition de courbe sur le même graphique

J'essaie de faire une superposition de courbe sur le même graphique.
J'ai besoin en particulier d'un graphe et donc j'utilise une bibliothèque.
J'ai une erreur sur le lancement de la seconde figure car la marge est trop large. Je l'ai donc mis à 0 mais mes deux courbes ne se lance pas dans le même graphique.

library(car)
plot.new()
par(mar=c(0,0,0,0))

scatterplot(SP2_FIN_SOD90 ~ IMP_HY_GASFLOW, data = sub4_before,col='red',axes=F,xlab="",ylab="")
axis(2,col = 'darkred',at=seq(0, 50, by=10))
mtext("Axe de la courbe rouge",side=2,line=2.5,col="darkred")

par(new=T)

scatterplot(SP2_FIN_SOD90 ~ IMP_HY_GASFLOW, data = sub4_after,col='green',axes=F,xlab="",ylab="")
axis(4,col='darkgreen',at=seq(0, 50, by=10))
mtext("Axe de la courbe verte",side=4,line=2.5,col="darkgreen")

axis(1,col='black',at=seq(24.90, 25.10, by=0.05))
mtext("Axe des X",side=1,line=2.5,col="black")

Il semble que le problème vient de l'utilisation de la fonction par() avec l'argument new=T. Essayez d'utiliser la fonction par(new=TRUE) à la place pour ajouter les courbes sur le même graphique.
Il est également possible que l'ordre dans lequel vous ajoutez les courbes soit important, assurez-vous donc que la première courbe est ajoutée avant la seconde.
Si cela ne fonctionne toujours pas, vérifiez également les dimensions de vos données pour vous assurer qu'elles sont compatibles avec la fonction scatterplot.

Merci beaucoup,

J'ai changé le TRUE

l'ordre change peut, j'ai essayer dans un sens et puis dans l'autre et rien ne change.

Les graphiques ce lance très biens quand ils sont de leurs côté, c'est vraiment en mettant les courbes sur le même graphique que tout change

La fonction scatterplot() fait un certain nombre d'opérations, qui inclut des changements de par(). A moins de lire le code source et de s'arracher les cheveux à essayer de comprendre ce qui se passe vraiment, ça me semble très compliqué de combiner le résultat de deux appels à scatterplot() après coup.

Le plus simple, c'est si tu peux faire un seul appel à scatterplot() avec les données combinées, et une variable de groupe:

library(car)
#> Loading required package: carData

# on augmente la marge de droite pour que le titre rentre
mar <- par("mar")
mar[4] <- 4
par(mar = mar)

# example de données aléatoires
sub4_before <- data.frame(IMP_HY_GASFLOW = runif(10, 24.9, 25.10),
                          SP2_FIN_SOD90 = runif(10, 0, 50))
sub4_after <- data.frame(IMP_HY_GASFLOW = runif(10, 24.9, 25.10),
                         SP2_FIN_SOD90 = runif(10, 0, 50))


# juste le "before"

scatterplot(SP2_FIN_SOD90 ~ IMP_HY_GASFLOW, data = sub4_before,
            col='red',axes=F,xlab="",ylab="")
axis(2,col = 'darkred',at=seq(0, 50, by=10))
mtext("Axe de la courbe rouge",side=2,line=2.5,col="darkred")

axis(1,col='black',at=seq(24.90, 25.10, by=0.05))
mtext("Axe des X",side=1,line=2.5,col="black")



# just le "after"

scatterplot(SP2_FIN_SOD90 ~ IMP_HY_GASFLOW, data = sub4_after,col='green',axes=F,xlab="",ylab="")
axis(4,col='darkgreen',at=seq(0, 50, by=10))
mtext("Axe de la courbe verte",side=4,line=2.5,col="darkgreen")

axis(1,col='black',at=seq(24.90, 25.10, by=0.05))
mtext("Axe des X",side=1,line=2.5,col="black")



# On combine les deux

sub4_before$type = "before"
sub4_after$type = "after"

sub4_combined <- rbind(sub4_before, sub4_after)

scatterplot(SP2_FIN_SOD90 ~ IMP_HY_GASFLOW + type, data = sub4_combined,
            col=c('red', 'green'),axes=F,xlab="",ylab="")

axis(2,col = 'darkred',at=seq(0, 50, by=10))
mtext("Axe de la courbe rouge",side=2,line=2.5,col="darkred")
axis(4,col='darkgreen',at=seq(0, 50, by=10))
mtext("Axe de la courbe verte",side=4,line=2.5,col="darkgreen")
axis(1,col='black',at=seq(24.90, 25.10, by=0.05))
mtext("Axe des X",side=1,line=2.5,col="black")

Created on 2023-01-25 by the reprex package (v2.0.1)

Sinon il y a moyen de générer les deux graphes séparément et les combiner après-coup, mais sans utiliser scatterplot(). Ça peut être facile ou difficile selon les fonctionnalités dont tu as besoin.