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




en varias (2)

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?


Answers

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://www.quantmod.com/examples/chartSeries3d/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 trama de superficie 3D. No creo que haya una manera fácil de hacer esto aparte de crear las dos tramas 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 rgl ) 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 trama 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:

Trama de superficie 3D http://i45.tinypic.com/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 .







r 3d statistics plot