Créer un tracé de surface 3D à partir des coordonnées(x,y,z)
-
la fonction
interp()
du packageakima
en R -
la fonction
persp3d()
du packagergl
en 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
z
correspondant à 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.