4 votes

Dessiner des graphiques latéraux superposés dans R

J'ai le code suivant, en R.

x = c(rep(2,10),rep(4,10))
y1 = c(5.1,3,4.2,4.1,4.8,4.0,5,4.15,3,4.5)
y2 = c(9.1,8,9.2,8.2,7,9.5,8.8,9.3,10,10.4)
y = c(y1,y2)
plot(x,y,pch=16,cex=0.9,xlim=c(0,6),ylim=c(0,13))

Ce code produit un graphique avec deux bandes de points. J'ai superposé des courbes normales latéralement sur ces bandes à l'aide de Powerpoint. Comment puis-je faire cela dans R (dessiner les courbes normales latérales), en utilisant les valeurs réelles des moyennes et des écarts ? NOTE : Je répète que les courbes normales ne font pas partie du tracé. Le code ci-dessus ne fait que produire le tracé brut.

enter image description here

7voto

Didzis Elferts Points 29673

Tout d'abord, calculez la moyenne et l'écart-type pour y1 y y2 .

m1<-mean(y1)
s1<-sd(y1)
m2<-mean(y2)
s2<-sd(y2)

Nous avons ensuite créé deux cadres de données (pour des raisons de commodité) qui contiennent les valeurs y sous la forme d'une séquence de nombres (plus large que la valeur réelle). y1 y y2 ). Les valeurs de densité calculées pour les x en utilisant dnorm() et calculé les valeurs moyennes et l'écart-type. Il a ensuite ajouté 2 o 4 pour déplacer les valeurs dans la position souhaitée.

df1<-data.frame(yval=seq(1,7,0.1),xval=(dnorm(seq(1,7,0.1),m1,s1)+2))
df2<-data.frame(yval=seq(6,12,0.1),xval=(dnorm(seq(6,12,0.1),m2,s2)+4))

Ajout de lignes de densité avec fonction lines() .

plot(x,y,pch=16,cex=0.9,xlim=c(0,6),ylim=c(0,13))
with(df1,lines(xval,yval))
with(df2,lines(xval,yval))

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X