Trazar un gráfico de superficie 3D con superposición de mapa de contorno, usando R

Tengo un conjunto de datos de 3 tuplas (puntos X, Y, Z) que quiero trazar usando R.

Quiero crear un gráfico de superficie a partir de los datos, y superponer un mapa de contorno en el gráfico de superficie, para crear la impresión de que el mapa de contorno es la “sombra” o proyección del gráfico de superficie. El mapa de contorno debe aparecer debajo del gráfico de superficie.

Mi conjunto de datos se parece a esto:

Axis | Data Type ------------------- X | Date value Y | Float value Z | Float value 

¿Cómo puedo conseguir esto?

Editar:

Acabo de ver que usted señaló que una de sus dimensiones es una fecha. En ese caso, eche un vistazo al chartSeries3d de Jeff Ryan, que está diseñado para trazar series cronológicas tridimensionales. Aquí muestra la curva de rendimiento en el tiempo:

Ejemplo chartSeries http://sofes.miximages.com/r/chartSeries3d-thumb.png

Respuesta Original:

Según lo entiendo, quieres que un mapa de contorno sea la proyección en el plano debajo de la ttwig de superficie 3D. No creo que haya una manera fácil de hacer esto aparte de crear las dos ttwigs y luego combinarlas. Puede encontrar que la vista espacial es útil para esto .

Hay dos paquetes R principales para el trazado en 3D: rgl (o puede usar el paquete relacionado misc3d ) y scatterplot3d .

rgl

El paquete rgl usa OpenGL para crear gráficos 3D interactivos ( lea más en el sitio web rgl ). Aquí hay un ejemplo usando la función surface3d :

 library(rgl) data(volcano) z <- 2 * volcano # Exaggerate the relief x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N) y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W) zlim <- range(z) zlen <- zlim[2] - zlim[1] + 1 colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for each point open3d() rgl.surface(x, y, z, color=col, alpha=0.75, back="lines") 

El parámetro alfa hace que esta superficie sea parcialmente transparente. Ahora tiene una ttwig 3D interactiva de una superficie y desea crear un mapa de conteo debajo. rgl le permite agregar más gráficos a una imagen existente:

 colorlut <- heat.colors(zlen,alpha=1) # use different colors for the contour map col <- colorlut[ z-zlim[1]+1 ] rgl.surface(x, y, matrix(1, nrow(z), ncol(z)),color=col, back="fill") 

En esta superficie, establezco las alturas = 1 para que tengamos un plano debajo de la otra superficie. Esto termina luciendo así, y se puede rotar con un mouse:

Ttwig de superficie 3D http://sofes.miximages.com/r/12637gy.jpg

scatterplot3d

scatterplot3d es un poco más parecido a otras funciones de trazado en R ( lea la viñeta ). Aquí hay un ejemplo simple:

 temp <- seq(-pi, 0, length = 50) x <- c(rep(1, 50) %*% t(cos(temp))) y <- c(cos(temp) %*% t(sin(temp))) z <- c(sin(temp) %*% t(sin(temp))) scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis="blue", col.grid="lightblue", main="scatterplot3d - 2", pch=20) 

En este caso, deberá superponer las imágenes. El R-Wiki tiene una buena publicación sobre la creación de una imagen de fondo tanslucent .