Créer un tracé de surface 3D à partir des coordonnées(x,y,z)
-
la fonction
interp()du packageakimaen R -
la fonction
persp3d()du packagerglen R - Démonstration des fonctions
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
zcorrespondant à une grille de valeursx-yà l’aide deinterp(). -
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.

