tl; dr , to my surprise, youโre right that you scatterplot3dreally donโt have that kind of flexibility (I would have sworn it was). However, a very easy hack allows you to do this with persp().
Set up the data (thanks for the reproduced example).
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)
The color map corresponding to the one you got pretty close:
cmap <- colorRampPalette(c("blue","cyan"))(N)
, persp() , phi () theta r . (phi=90 x-y.) trans3d() , persp(), .
## 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)

, ( ) . , (.. r ):
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)

( z ).
, , , - x-y, plot() z???
plot(x,y,cex=5,col=cmap)
