투시도(persp), 등고선 그래프(contour)
투시도는 3차원 데이터를 마치 투시한 것처럼 그린 그래프며, 등고선 그래프는 높이가 같은 곳을 선으로 연결한 그래프다. 좌표로 말하자면 이들은 x, y, z 값을 그려주는 그래프로, z=f(x, y)처럼 z 값이 x, y에 따라 정해지는 값일 때 (x, y)에 따라 z가 어떻게 변하는지를 한눈에 보여준다.
persp : 투시도를 그린다. |
persp( # x, y, z에 대한 투시도를 그린다. x, y의 기본값은 z의 행, 열 개수만큼 # 0, 1 사이에 찍은 균일한 점들이다. x=seq(0, 1, length.out=nrow(z)), y=seq(0, 1, length.out=ncol(z)), z, # theta와 phi는 그래프를 얼마나 돌려서 표시할지를 지정한다. 각각 방위각과 여위도를 의미하며, # 쉽게 말해 theta는 그래프를 얼마나 좌우로 회전시킬지를, phi는 그래프를 얼마나 상하로 # 회전시킬지를 의미한다. theta = 0, phi = 15, ... ) |
contour : 등고선 그래프를 그린다. |
contour( # x, y, z에 대한 등고선 그래프를 그린다. x, y의 기본값은 z의 행, 열 개수만큼 # 0, 1 사이에 찍은 균일한 점들이다. x=seq(0, 1, length.out=nrow(z)), y=seq(0, 1, length.out=ncol(z)), z, ... ) |
outer : 배열의 외적(outer product)을 구한다. |
outer( X, # 벡터 또는 배열 Y, # 벡터 또는 배열 fun="*", # 계산에 사용할 함수 ... # fun에 추가로 넘겨줄 또 다른 인자들 ) outer(X, Y) 반환 값의 차원은 c(dim(X), dim(Y))며, 반환 값의 각 원소에 대해 A[c(index.x, index.y)] = FUN(X[index.x], Y[index.y])다. |
persp( ), contour( )에서 유용한 함수가 outer( )다. 이 함수를 사용하면 z = f(x, y)의 함수 관계가 있을 때 z를 손쉽게 계산할 수 있다. 예를 들어, x=1:5, y=1:3일 때 모든 x, y 조합에 대해 x + y를 계산해보자.
> outer(1:5, 1:3, "+")
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 3 4 5
[3,] 4 5 6
[4,] 5 6 7
[5,] 6 7 8
위 예에서 outer( )의 결과는 행렬이며, 이 행렬의 (m, n)에는 m + n 값이 저장되어 있음을 볼 수 있다.
fun에는 R 함수를 기술해도 된다.
> outer(1:5, 1:3, function(x, y) { x + y })
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 3 4 5
[3,] 4 5 6
[4,] 5 6 7
[5,] 6 7 8