4

浮動小数点数の3D行列があり、Rを使用してこの行列の平滑化された3D表面を作成したいと思います。どんな提案でも歓迎します。ありがとう

今私はscatterplot3dを使用しています...しかし、この関数は滑らかな表面を生成しませんでした

x<-read.table("/Users/me/Desktop/data.txt")
scatterplot3d(x$V1, x$V2, x$V3, highlight.3d = TRUE, angle = 30, col.axis = "blue", col.grid = "lightblue", cex.axis = 1.3, cex.lab = 1.1, pch = 20)
4

3 に答える 3

2

値がz軸の値である2Dマトリックス(x、y)を作成できる場合は、次を使用できます。

persp

これはRグラフギャラリーの例です。perspの例

于 2013-03-07T16:28:46.940 に答える
2
require(misc3d)

a <- 2/5

wsqr <-  1 - a^2
w <- sqrt(wsqr)
denom <- function(a,w,u,v) a*((w*cosh(a*u))^2 + (a*sin(w*v))^2)

fx <- function(u,v) -u + (2*wsqr*cosh(a*u)*sinh(a*u)/denom(a,w,u,v))
fy <- function(u,v) 2*w*cosh(a*u)*(-(w*cos(v)*cos(w*v)) - (sin(v)*sin(w*v)))/denom(a,w,u,v)
fz = function(u,v) 2*w*cosh(a*u)*(-(w*sin(v)*cos(w*v)) + (cos(v)*sin(w*v)))/denom(a,w,u,v)


parametric3d(fx = fx, fy = fy, fz = fz, 
             umin = -17, 
             umax = 17, 
             vmin = -77, 
             vmax = 77, 
             n = 100,
             color = c("grey17","grey21","red4","darkred","red4","grey21","grey17"),
             engine = "rgl")

ここに画像の説明を入力してください

于 2013-03-07T16:31:04.017 に答える
2

mba.surfパッケージからスムージングに適していると思います。MBA上記のlarrydagが示唆しているように、perspそれをイメージするのもよいでしょう。以下のコードは、mba.surf関数のヘルプページからのものです(3列のデータフレームのLIDARを交換してください)。

data(LIDAR)
mba.int <- mba.surf(LIDAR, 300, 300, extend=TRUE)$xyz.est
# Two ways of imaging....
image(mba.int, xaxs="r", yaxs="r")
persp(mba.int, theta = 135, phi = 30, col = "green3", scale = FALSE,
  ltheta = -120, shade = 0.75, expand = 10, border = NA, box = FALSE)

ここに画像の説明を入力してください

于 2013-03-07T16:47:02.513 に答える