Oui, je sais que vous "ne devriez pas" utiliser une échelle secondaire car ce n'est "pas correct" mais mon tuteur veut toujours que ces deux graphiques soient dans le même tracé et j'ai besoin d'ajouter une échelle secondaire... J'ai réussi à écrire le code, mais le problème survient lorsque je dois définir la nouvelle échelle. Je dois ajouter 50 aux valeurs du primaire, puis diviser le tout par 0,15 comme ici

P <- ggplot(data=dd)+
  geom_line(aes(x=dS, y=(nS*.15)-50), color="blue3", size=.25)+
  geom_line(aes(x=dO, y=cO), color="red", size=.25)+
  geom_vline(xintercept = dd$dS[dd$Year %% 5 == 0], color="black", linetype="dashed", size=.25)+
  scale_y_continuous(sec.axis = sec_axis(([~. +50] / 0.15), name = "nss Sulphate (ppb)"), limits=c(-50,-20))+
  theme_bw()+
  labs(x="Depth (m)", y=expression(paste(delta^{18}, "O (‰)")))
P

Mais j'obtiens une erreur de "argument non numérique à l'opérateur binaire". J'ai essayé différents types de parenthèses mais rien ne semble vraiment fonctionner.

Des idées?

Modifier : jeu de données factice

dS<-c(1:100)
dO<-c(1:100)
nO<-runif(100, min=-36, max=-25)
nS<-runif(100, min=0, max=150)
Year<-c(1900:2000)
dd<-data.frame(dS,dO,nO,nS,Year)
0
Raffaello Nardin 16 sept. 2020 à 18:00

1 réponse

Meilleure réponse

Je suppose que pour cette ligne y = nS car il n'y a pas de cO. Pour résoudre cette erreur, utilisez (~./0.15 +50/0.15).

Cela devrait fonctionner.

dS<-c(1:100)
dO<-c(1:100)
nO<-runif(100, min=-36, max=-25)
nS<-runif(100, min=0, max=150)
Year<-c(1900:1999) #df does not have the same number of observations.
dd<-data.frame(dS,dO,nO,nS,Year)

P <- ggplot(data=dd)+
  geom_line(aes(x=dS, y=(nS*.15)-50), color="blue3", size=.25)+
  geom_line(aes(x=dO, y=nS), color="red", size=.25)+ #y = nS
  geom_vline(xintercept = dd$dS[dd$Year %% 5 == 0], color="black", linetype="dashed", size=.25)+
  scale_y_continuous(sec.axis = sec_axis((((~./0.15 +50/0.15))), name = "nss Sulphate (ppb)"), limits=c(-50,-20))+
  theme_bw()+
  labs(x="Depth (m)", y=expression(paste(delta^{18}, "O (‰)")))
P
0
cdcarrion 16 sept. 2020 à 15:50