Un curve
Depuis le début polygon
connecte et la fin de votre courbe, il crée une forme bizarre. De ?polygon
nous pouvons voir que
"On suppose que le polygone doit être fermé en joignant le dernier point au premier point."
Les premiers et derniers points sont donnés par les valeurs from
et to
dans curve
. Dans votre premier cas, ce sont -4
et 0
.
Il suffit d'ajouter xlim
et xaxs = "i"
à curve()
gg = curve(dnorm(x), -4, 4, xlim = c(-4,0), xaxs = "i") # Working!
polygon(gg, col = 2)
plusieurs curve
s dans une parcelle
Lorsque vous voulez mettre plusieurs courbes dans une parcelle, vous pourriez faire face au problème Vous ne pouvez pas limiter vos axes comme indiqué ci-dessus. Ainsi, nous devons creuser plus profondément dans la structure d'un objet courbe (ici gg
).
Créons d'abord deux courbes.
gg = curve(dnorm(x), -4, 4) ;
polygon(gg, col = 2) ;
gg = curve(dnorm(x), -4, 0, xlim = c(-4,0), xaxs = "i", add = T) ;
Maintenant, nous avons un oeil à gg
:
gg
# $x
# [1] -4.00 -3.96 -3.92 -3.88 -3.84 -3.80 -3.76 -3.72 -3.68 -3.64 -3.60 -3.56 -3.52 -3.48 -3.44 -3.40 -3.36 -3.32 -3.28
# [20] -3.24 -3.20 -3.16 -3.12 -3.08 -3.04 -3.00 -2.96 -2.92 -2.88 -2.84 -2.80 -2.76 -2.72 -2.68 -2.64 -2.60 -2.56 -2.52
# .....
# $y
# [1] 0.0001338302 0.0001569256 0.0001837125 0.0002147280 0.0002505784 0.0002919469 0.0003396012 0.0003944025 0.0004573148
# [10] 0.0005294147 0.0006119019 0.0007061107 0.0008135212 0.0009357722 0.0010746733 0.0.0014106023 0.0016122275
# .....
Nous voyons que gg
est juste une liste de $x
et $y
coordonnées. Ainsi, nous pouvons ajouter une coordonnée au 0, 0
au second gg
pour simuler la fin de la deuxième courbe qui se chevauche. Ensuite, les deux courbes sont tracées correctement.
gg$x <- c(gg$x, 0)
gg$y <- c(gg$y, 0)
polygon(gg, col = 4)
Merci, une solution rapide à 'polygon()' (n'utilisant pas 'plot()') pour ne pas dessiner cette dernière ligne droite? Je suppose que vous avez la courbe recto-verso complète, alors vous décidez d'ombrer la queue gauche en utilisant la demi-courbe. – rnorouzian