(x,y,z) 座標から 3D サーフェスプロットを作成する

Jesse John 2023年1月30日
  1. R の akima パッケージの interp() 関数
  2. R の rgl パッケージの persp3d() 関数
  3. 機能のデモンストレーション
(x,y,z) 座標から 3D サーフェスプロットを作成する

ベース R といくつかのパッケージは、水平面上に 3 次元表面をプロットする機能を提供します。それらのほとんどは、入力として xy の値のすべての組み合わせに対して z 値を必要とします。

つまり、グリッド上の各ポイントに x-y グリッドと z 値が必要です。

(x,y,z) 値(座標)のデータフレームまたはマトリックスがある場合、ポイントはプロットできますが、サーフェスはプロットできません。

与えられたデータと適切な補間関数を使用して表面をプロットすることにより、x 値と y 値のすべての組み合わせについて z 値を推定する必要があります。

この記事では、akima パッケージを使用して、x-y 値のグリッドの z 値を推定する方法を示します。次に、rgl パッケージを使用してサーフェスをプロットします。

R の akima パッケージの interp() 関数

akima パッケージは、二変量データの補間のための関数を提供します。

interp() 関数は、3つのベクトル xy、および z を取り、対応する z 値を持つ x-y 値の 40 行 40 列のグリッドを返します。

デフォルトでは、線形補間が生成されます。

R の rgl パッケージの persp3d() 関数

rgl パッケージは、3D インタラクティブグラフィックスを作成します。マウスを使用してプロットをズームおよび回転できます。

persp3d() 関数を使用してサーフェスをプロットし、points3d() 関数を使用して元のデータをプロットします。

R でプロットを表示するには、特定のオプション options(rgl.printRglwidget = TRUE) を設定する必要があります。

機能のデモンストレーション

次の手順を実行します。

  • 必要なパッケージがまだ利用できない場合は、インストールします。
  • 必要なパッケージをロードします。
  • サンプルデータフレームを作成します。
  • interp() を使用して、x-y 値のグリッドに対応する z 値のリストを作成します。
  • persp3d() を使用してサーフェスをプロットします。
  • points3d() を使用してポイントを追加します。

サンプルコード:

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

出力プロット:

rgl はインタラクティブな 3D プロットを生成します。

3D パースペクティブプロット

著者: 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.

関連記事 - R Plot