(x,y,z) 좌표에서 3D 표면 플롯 만들기
    
    Jesse John
    2023년1월30일
    
    R
    R Plot
    
 
Base R과 여러 패키지는 수평면 위에 3차원 표면을 그리는 기능을 제공합니다. 대부분 x 및 y 값의 모든 조합에 대해 z 값이 입력으로 필요합니다.
즉, 그리드의 각 점에 대해 x-y 그리드와 z 값이 필요합니다.
(x,y,z) 값(좌표)의 데이터 프레임이나 행렬이 있을 때 점을 그릴 수 있지만 표면은 그릴 수 없습니다.
주어진 데이터와 표면을 플롯하기 위한 적절한 보간 기능을 사용하여 x 및 y 값의 모든 조합에 대한 z 값을 추정해야 합니다.
이 기사는 akima 패키지를 사용하여 x-y 값 그리드의 z 값을 추정하는 방법을 보여줍니다. 그런 다음 rgl 패키지를 사용하여 표면을 플로팅합니다.
R에서 akima 패키지의 interp() 기능
akima 패키지는 이변량 데이터의 보간 기능을 제공합니다.
interp() 함수는 x, y 및 z 벡터 세 개를 사용하고 해당 z 값과 함께 x-y 값의 40x40 그리드를 반환합니다.
기본적으로 선형 보간이 생성됩니다.
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 플롯을 생성합니다.

        튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
    
작가: Jesse John
    
