tl; dr zu meiner Überraschung, du hast Recht, dass scatterplot3d
wirklich nicht diese Flexibilität hat (ich würde es getan haben geschworen). Ein sehr leichter Hack lässt Sie dies jedoch mit persp()
tun.
Daten einrichten (danke für das reproduzierbare Beispiel).
N <- 2^11
t <- runif(N)
t <- sort(4*pi*sqrt(t))
z <- 8*pi*runif(N)
x <- (t+0.1)*cos(t)
y <- (t+0.1)*sin(t)
Eine Farbkarte, die die übereinstimmt Sie ziemlich genau haben:
cmap <- colorRampPalette(c("blue","cyan"))(N)
Der Trick ist, ein leeres persp()
mit den richtigen Dimensionen einzurichten, die phi
Einstellung und (optional) theta
und r
Parameter zum Einstellen der Anzeigeparameter. (phi=90
zeigt die x-y-Ebene an.) Verwenden Sie dann trans3d()
mit der Transformationsmatrix, die von persp()
zurückgegeben wird, um Ihre Punkte zu zeichnen.
## empty plot
pp <- persp(range(x),range(y),matrix(c(min(z),max(z),0,0),2),
col=NA,border=NA,phi=90,zlab="")
## plot:
points(trans3d(x,y,z,pp),col=cmap)
Dies sieht nicht wie Ihr Grundstück, weil (glaube ich) Sie isometrische Perspektive aktiviert haben. Um dies zu umgehen, den Blickpunkt einen langen Abstand von dem Objekt bewegen (dh gesetzt r
auf einen großen Wert):
pp2 <- persp(range(x),range(y),matrix(c(min(z),max(z),0,0),2),
col=NA,border=NA,phi=90,r=1000)
points(trans3d(x,y,z,pp2),col=cmap)
(vergaß das hässliche z
Etikett auf diese auszuschalten) .
Auf der anderen Seite, wenn alles, was Sie tun möchten, ist die Punkte in der x-y-Ebene zu sehen, warum nicht einfach nur alte plot()
verwenden und die z-Koordinate ignorieren ???
plot(x,y,cex=5,col=cmap)
Welche Parameter es fehlt es? Bitte bearbeiten Sie Ihre Frage, um weitere Details hinzuzufügen. –
überprüfen Sie auch die 'plot3D'-Paket, und [diese Präsentation] (http://pj.freefaculty.org/guides/Rcourse/plot-3d/plots-3d.pdf) –
immer noch nicht klar, was Sie vermissen. Die Plots werden von verschiedenen Standardwinkeln betrachtet und die Farbkarte ist anders, aber ansonsten ...? –