Crear un gráfico de superficie 3D a partir de coordenadas(x, y, z)

Jesse John 30 enero 2023
  1. la función interp() del paquete akima en R
  2. la Función persp3d() del Paquete rgl en R
  3. Demostración de las funciones
Crear un gráfico de superficie 3D a partir de coordenadas(x, y, z)

Base R y varios paquetes proporcionan funciones para trazar una superficie tridimensional sobre el plano horizontal. La mayoría de ellos necesitan un valor z para cada combinación de valores x e y como entrada.

En otras palabras, necesitan una cuadrícula x-y y valores z para cada punto de la cuadrícula.

Cuando tenemos un dataframe o matriz de valores (x,y,z) (coordenadas), podemos trazar los puntos, pero no la superficie.

Necesitamos estimar los valores z para todas las combinaciones de valores x e y utilizando los datos proporcionados y una función de interpolación adecuada para trazar la superficie.

Este artículo mostrará cómo usar el paquete akima para estimar los valores z para una cuadrícula de valores x-y. Luego trazaremos la superficie usando el paquete rgl.

la función interp() del paquete akima en R

El paquete akima proporciona funciones para la interpolación de datos bivariados.

La función interp() toma los tres vectores x, y y z y devuelve una cuadrícula de 40 por 40 de valores x-y con un valor z correspondiente.

Por defecto, se produce una interpolación lineal.

la Función persp3d() del Paquete rgl en R

El paquete rgl crea gráficos interactivos en 3D. Podemos hacer zoom y rotar la trama usando el mouse.

Usaremos la función persp3d() para trazar la superficie y la función points3d() para trazar los datos originales.

Para ver los gráficos en R necesitamos establecer una opción particular: options(rgl.printRglwidget = TRUE).

Demostración de las funciones

Seguiremos los siguientes pasos.

  • Instale los paquetes necesarios si aún no están disponibles.
  • Cargue los paquetes necesarios.
  • Cree el dataframe de muestra.
  • Crea la lista de valores z correspondientes a una grilla de valores x-y usando interp().
  • Traza la superficie usando persp3d().
  • Añade los puntos usando points3d().

Código de ejemplo:

# INSTALL AND LOAD THE PACKAGES.
# Uncomment and run the concerned line to install the package.
#install.packages("akima")
library(akima)
#install.packages("rgl")
library(rgl)

# CREATE THE SAMPLE DATA.
set.seed(1)
x=rnorm(50)
set.seed(2)
y=rnorm(50)
z=c(rep(5,5),rep(-10,5), rep(3,15), rep(20,5), seq(5,15, length.out=10), rep(0,5), rep(3,5))
XYZ=data.frame(x,y,z)

# INTERPOLATE THE Z VALUES.
a_mat=interp(XYZ$x, XYZ$y, XYZ$z)

# PLOT THE SURFACE AND THE POINTS.
options(rgl.printRglwidget = TRUE)
persp3d(a_mat$x, a_mat$y, a_mat$z, col="yellow")
points3d(x,y,z, col="red")

Gráfico de salida:

rgl produce un gráfico 3D interactivo.

gráfico de perspectiva 3D

Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

Artículo relacionado - R Plot