Erstellen ein 3D-Oberflächendiagramm aus(x,y,z)-Koordinaten
-
die
interp()
-Funktion desakima
-Pakets in R -
die
persp3d()
-Funktion desrgl
-Pakets in R - Demonstration der Funktionen
Base R und mehrere Pakete bieten Funktionen zum Zeichnen einer dreidimensionalen Oberfläche über der horizontalen Ebene. Die meisten von ihnen benötigen einen z
-Wert für jede Kombination von x
- und y
-Werten als Eingabe.
Mit anderen Worten, sie benötigen ein x-y
-Gitter und z
-Werte für jeden Punkt auf dem Gitter.
Wenn wir einen Datenrahmen oder eine Matrix von (x,y,z)
-Werten (Koordinaten) haben, können wir die Punkte darstellen, aber nicht die Oberfläche.
Wir müssen die z
-Werte für alle Kombinationen von x
- und y
-Werten schätzen, indem wir die gegebenen Daten und eine geeignete Interpolationsfunktion verwenden, um die Oberfläche darzustellen.
Dieser Artikel zeigt, wie man das akima
-Paket verwendet, um die z
-Werte für ein Raster von x-y
-Werten zu schätzen. Wir plotten dann die Oberfläche mit dem Paket rgl
.
die interp()
-Funktion des akima
-Pakets in R
Das Paket akima
stellt Funktionen zur Interpolation bivariater Daten bereit.
Die Funktion interp()
nimmt die drei Vektoren x
, y
und z
und gibt ein 40-mal-40-Gitter von x-y
-Werten mit einem entsprechenden z
-Wert zurück.
Standardmäßig wird eine lineare Interpolation erzeugt.
die persp3d()
-Funktion des rgl
-Pakets in R
Das Paket rgl
erstellt interaktive 3D-Grafiken. Wir können das Diagramm mit der Maus zoomen und drehen.
Wir werden die Funktion persp3d()
verwenden, um die Oberfläche zu plotten, und die Funktion points3d()
, um die Originaldaten zu plotten.
Um die Plots in R anzuzeigen, müssen wir eine bestimmte Option setzen: options(rgl.printRglwidget = TRUE)
.
Demonstration der Funktionen
Wir werden die folgenden Schritte durchlaufen.
-
Installieren Sie die erforderlichen Pakete, falls sie noch nicht verfügbar sind.
-
Laden Sie die erforderlichen Pakete.
-
Erstellen Sie den Beispieldatenrahmen.
-
Erstellen Sie die Liste der
z
-Werte, die einem Raster vonx-y
-Werten entsprechen, mitinterp()
. -
Plotten Sie die Oberfläche mit
persp3d()
. -
Fügen Sie die Punkte mit
points3d()
hinzu.
Beispielcode:
# 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")
Ausgabeplot:
rgl
erzeugt einen interaktiven 3D-Plot.