R을 사용하여 등고선지도 오버레이로 3D 표면도 플로팅
R을 사용하여 플로팅하려는 3- 튜플 데이터 세트 (X, Y, Z 포인트)가 있습니다.
데이터에서 표면도를 만들고 표면도에 등고선도를 겹쳐서 등고선이 "그림자"또는 표면도에서 투영 된 인상을 만들고 싶습니다. 등고선지도는 표면도 아래에 나타납니다.
내 데이터 세트는 다음과 같습니다.
Axis | Data Type
-------------------
X | Date value
Y | Float value
Z | Float value
이것을 어떻게 달성 할 수 있습니까?
편집하다:
당신의 차원 중 하나가 날짜라는 것을 방금 봤습니다. 이 경우 3 차원 시계열을 차트로 표시하도록 설계된 Jeff Ryan의 chartSeries3d 를 살펴보십시오 . 여기서 그는 시간에 따른 수익률 곡선을 보여줍니다.
원래 답변 :
내가 이해했듯이, 당신은 3D 표면도 아래에있는 평면의 투영이되는 countour 맵을 원합니다. 두 개의 플롯을 만든 다음 결합하는 것 외에는 쉽게 할 수있는 방법이 없다고 생각합니다. 여기 에 공간보기가 도움이 될 수 있습니다 .
3D 플로팅을위한 두 가지 기본 R 패키지는 rgl (또는 관련 misc3d 패키지를 사용할 수 있음 ) 및 scatterplot3d 입니다.
rgl
rgl 패키지는 OpenGL을 사용하여 대화 형 3D 플롯을 생성합니다 ( rgl 웹 사이트에서 자세히 알아보기 ). 다음은 surface3d
함수 를 사용하는 예입니다 .
library(rgl)
data(volcano)
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table
col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for each point
open3d()
rgl.surface(x, y, z, color=col, alpha=0.75, back="lines")
alpha 매개 변수는이 표면을 부분적으로 투명하게 만듭니다. 이제 표면의 대화 형 3D 플롯이 있고 그 아래에 카운트지도를 만들려고합니다. rgl을 사용하면 기존 이미지에 더 많은 플롯을 추가 할 수 있습니다.
colorlut <- heat.colors(zlen,alpha=1) # use different colors for the contour map
col <- colorlut[ z-zlim[1]+1 ]
rgl.surface(x, y, matrix(1, nrow(z), ncol(z)),color=col, back="fill")
이 표면에서 나는 다른 표면 아래에 평면이 있도록 heights = 1을 설정했습니다. 이것은 다음과 같이 보이며 마우스로 회전 할 수 있습니다.
산점도
scatterplot3d는 R의 다른 플로팅 함수와 조금 더 비슷 합니다 (비 네트 읽기 ). 다음은 간단한 예입니다.
temp <- seq(-pi, 0, length = 50)
x <- c(rep(1, 50) %*% t(cos(temp)))
y <- c(cos(temp) %*% t(sin(temp)))
z <- c(sin(temp) %*% t(sin(temp)))
scatterplot3d(x, y, z, highlight.3d=TRUE,
col.axis="blue", col.grid="lightblue",
main="scatterplot3d - 2", pch=20)
이 경우 이미지를 오버레이해야합니다. R-Wiki 에는 황갈색 배경 이미지를 만드는 데 대한 멋진 게시물이 있습니다.
'program story' 카테고리의 다른 글
스트림에서 instanceof 확인 (0) | 2020.12.06 |
---|---|
__utma는 무엇을 의미합니까? (0) | 2020.12.05 |
정적 변수와 const 변수의 차이점은 무엇입니까? (0) | 2020.12.05 |
스크롤하는 동안 항상 머리글을 정적으로 유지하는 방법은 무엇입니까? (0) | 2020.12.05 |
소급하여 git repo에 --recursive 추가 (0) | 2020.12.05 |