Erstellen ein 3D-Oberflächendiagramm aus(x,y,z)-Koordinaten

Jesse John 2 Juni 2022
  1. die interp()-Funktion des akima-Pakets in R
  2. die persp3d()-Funktion des rgl-Pakets in R
  3. Demonstration der Funktionen
Erstellen ein 3D-Oberflächendiagramm aus(x,y,z)-Koordinaten

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 von x-y-Werten entsprechen, mit interp().
  • 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.

3D-Perspektivdiagramm

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.

Verwandter Artikel - R Plot