(x,y,z) 座標から 3D サーフェスプロットを作成する
Jesse John
2023年1月30日
R
R Plot

ベース R といくつかのパッケージは、水平面上に 3 次元表面をプロットする機能を提供します。それらのほとんどは、入力として x
と y
の値のすべての組み合わせに対して z
値を必要とします。
つまり、グリッド上の各ポイントに x-y
グリッドと z
値が必要です。
(x,y,z)
値(座標)のデータフレームまたはマトリックスがある場合、ポイントはプロットできますが、サーフェスはプロットできません。
与えられたデータと適切な補間関数を使用して表面をプロットすることにより、x
値と y
値のすべての組み合わせについて z
値を推定する必要があります。
この記事では、akima
パッケージを使用して、x-y
値のグリッドの z
値を推定する方法を示します。次に、rgl
パッケージを使用してサーフェスをプロットします。
R の akima
パッケージの interp()
関数
akima
パッケージは、二変量データの補間のための関数を提供します。
interp()
関数は、3つのベクトル x
、y
、および z
を取り、対応する z
値を持つ x-y
値の 40 行 40 列のグリッドを返します。
デフォルトでは、線形補間が生成されます。
R の rgl
パッケージの persp3d()
関数
rgl
パッケージは、3D インタラクティブグラフィックスを作成します。マウスを使用してプロットをズームおよび回転できます。
persp3d()
関数を使用してサーフェスをプロットし、points3d()
関数を使用して元のデータをプロットします。
R でプロットを表示するには、特定のオプション options(rgl.printRglwidget = TRUE)
を設定する必要があります。
機能のデモンストレーション
次の手順を実行します。
サンプルコード:
R
rCopy# 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 プロットを生成します。
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Jesse John