Créer un tracé de surface 3D à partir des coordonnées(x,y,z)

Jesse John 30 janvier 2023
  1. la fonction interp() du package akima en R
  2. la fonction persp3d() du package rgl en R
  3. Démonstration des fonctions
Créer un tracé de surface 3D à partir des coordonnées(x,y,z)

Base R et plusieurs packages fournissent des fonctions permettant de tracer une surface tridimensionnelle sur le plan horizontal. La plupart d’entre eux ont besoin d’une valeur z pour chaque combinaison de valeurs x et y en entrée.

En d’autres termes, ils ont besoin d’une grille x-y et de valeurs z pour chaque point de la grille.

Lorsque nous avons un data frame ou une matrice de valeurs (x,y,z) (coordonnées), nous pouvons tracer les points, mais pas la surface.

Nous devons estimer les valeurs z pour toutes les combinaisons de valeurs x et y en utilisant les données fournies et une fonction d’interpolation appropriée pour tracer la surface.

Cet article montrera comment utiliser le package akima pour estimer les valeurs z pour une grille de valeurs x-y. Nous allons ensuite tracer la surface à l’aide du package rgl.

la fonction interp() du package akima en R

Le package akima propose des fonctions d’interpolation de données bivariées.

La fonction interp() prend les trois vecteurs x, y et z et renvoie une grille 40 par 40 de valeurs x-y avec une valeur z correspondante.

Par défaut, une interpolation linéaire est produite.

la fonction persp3d() du package rgl en R

Le package rgl crée des graphiques interactifs 3D. Nous pouvons zoomer et faire pivoter le tracé à l’aide de la souris.

Nous utiliserons la fonction persp3d() pour tracer la surface et la fonction points3d() pour tracer les données d’origine.

Afin de visualiser les tracés dans R, nous devons définir une option particulière : options(rgl.printRglwidget = TRUE).

Démonstration des fonctions

Nous allons passer par les étapes suivantes.

  • Installez les packages requis s’ils ne sont pas déjà disponibles.
  • Chargez les packages requis.
  • Créez l’exemple de bloc de données.
  • Créer la liste des valeurs z correspondant à une grille de valeurs x-y à l’aide de interp().
  • Tracez la surface à l’aide de persp3d().
  • Ajouter les points à l’aide de points3d().

Exemple de code :

# 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")

Tracé de sortie :

rgl produit un tracé 3D interactif.

Tracé en perspective 3D

Auteur: 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.

Article connexe - R Plot