2017-05-09 2 views
1

Ich versuche, einige points auf meinem Dichtediagramm für die seq(-3, 3) [d. H. 7 Zahlen] zu bekommen. Ich bekomme die 7 entsprechenden Dichtewerte, aber wenn ich versuche, points auszuführen, erhalte ich:Plotten von Punkten auf Kernel-Dichte-Funktion nicht erfolgreich in R

Error in xy.coords(x, y) : 'x' and 'y' lengths differ

Wie wirklich gibt es keine Längendifferenz, ich nehme an, es ist class() Unterschied Problem zwischen x und y für points(). Ich schätze eine Lösung? Hier

ist die R-Code:

positions = rnorm(1e4) 

DENS = density(positions, adjust = 2, n = 1e4) 

x.DENS = DENS$x 
y.DENS = DENS$y 

plot(DENS, col = "red", lwd = 3, xlab = "Positions", 
    ylab = "Density", xlim = c(-6, 6), main = 
    NA, bty = 'n', zero.line = F) 

x.DENS.2 = seq(-3, 3) 
y.DENS.2 = approx(x.DENS, y.DENS, xout = x.DENS.2) ## get the x.DENS.2 density values 

points(x.DENS.2, y.DENS.2) ## Error 

Antwort

0

Die y.DENS.2 -Objekt ist eigentlich eine Liste mit x und y-Komponenten:

str(y.DENS.2) 
List of 2 
$ x: int [1:7] -3 -2 -1 0 1 2 3 
$ y: num [1:7] 0.00514 0.0642 0.23952 0.37896 0.24057 ... 

... so dass Sie nur

können
points(y.DENS.2, col="blue") 

enter image description here

0

Die letzte Zeile ist falsch. Bitte ändern Sie es in

Punkte (x.DENS.2, y.DENS.2 $ y)

Hier ist die vollständige Codes. Es funktioniert auf meiner Seite. Wenn Sie also die Ergebnisse grafisch darstellen, ist es sehr hilfreich, die Dimension Ihrer Eingaben zu überprüfen, um sicherzustellen, dass sie übereinstimmen.

positions = rnorm(1e4) 

DENS = density(positions, adjust = 2, n = 1e4) 

x.DENS = DENS$x 
y.DENS = DENS$y 

plot(DENS, col = "red", lwd = 3, xlab = "Positions", 
     ylab = "Density", xlim = c(-6, 6), main = 
     NA, bty = 'n', zero.line = F) 

x.DENS.2 = seq(-3, 3) 
y.DENS.2 = approx(x.DENS, y.DENS, xout = x.DENS.2) ## get the x.DENS.2 density values 

points(x.DENS.2, y.DENS.2$y)