반응형
산점도 그래프를 회전하는 방법에 대해 알아봅시다. 아래 그래프를 그려볼 것입니다. 상관분석 예시 그림을 만들때 사용하였습니다.
먼저 정규분포 함수에서 임의추출하여 x와 y를 생성합니다.
#데이터
x=rnorm(1000,10,3)
y=rnorm(1000,10,1)
그래프로 그려보면 아래와 같습니다. 의도적으로 상하방향이 납작하게 설정하였습니다. 표준편차를 작게 해주면 됩니다.
#데이터
x=rnorm(1000,10,3)
y=rnorm(1000,10,1)
#plot
plot(x,y,xlim=c(0,20),ylim=c(0,20),main="0deg")
회전하기 위해 회전행렬을 정의합니다. (a,b)를 $\theta$ 만큼 회전한 점 (a',b')를 구하는 방법은 아래와 같습니다.
$\begin{bmatrix}
a'\\
b'
\end{bmatrix}
=
\begin{bmatrix}
cos(\theta) & -sin(\theta) \\
sin(\theta) & cos(\theta)
\end{bmatrix}
\begin{bmatrix}
a\\
b
\end{bmatrix}$
수학적 원리는 링크를 참고해주세요.
데이터를 45도 회전하는 코드는 아래와 같습니다. (10,10)을 중심으로 회전하였습니다. x,y를 하나의 행렬로 만들어 준 뒤, 10을 빼주었습니다. 10을 빼준 이유는 10,10을 원점으로 만들어 회전시키기 위함입니다. 회전행렬을 정의하고 곱해주었습니다. 회전한 뒤에 다시 10을 더해주었습니다. (이 내용도 수학적 원리를 설명한 링크에 나옵니다.)
#데이터
x=rnorm(1000,10,3)
y=rnorm(1000,10,1)
#45deg 도 회전
data=rbind(x,y)-10
theta=pi/4
RotMat=matrix(c(cos(theta),sin(theta),-sin(theta),cos(theta)),nrow=2)
data_rot1=RotMat %*% data
data_f1=data_rot1+10
마찬가지 방법으로 -45도 회전시킨 데이터를 만들고. 각각 그래프를 그려주었습니다. 전체코드는 아래와 같습니다.
#데이터
x=rnorm(1000,10,3)
y=rnorm(1000,10,1)
#45deg 도 회전
data=rbind(x,y)-10
theta=pi/4
RotMat=matrix(c(cos(theta),sin(theta),-sin(theta),cos(theta)),nrow=2)
data_rot1=RotMat %*% data
data_f1=data_rot1+10
#-45deg 도 회전
data=rbind(x,y)-10
theta=-pi/4
RotMat=matrix(c(cos(theta),sin(theta),-sin(theta),cos(theta)),nrow=2)
data_rot2=RotMat %*% data
data_f2=data_rot2+10
#plot
par(mfrow=c(1,3))
plot(x,y,xlim=c(0,20),ylim=c(0,20),main="0deg")
plot(data_f1[1,],data_f1[2,],xlab='x',ylab='y',xlim=c(0,20),ylim=c(0,20),main="45deg")
plot(data_f2[1,],data_f2[2,],xlab='x',ylab='y',xlim=c(0,20),ylim=c(0,20),main="-45deg")
반응형
'R 주제 > R 기초 및 통계 강의' 카테고리의 다른 글
[R강의] 113. 패키지들 설치경로 확인하기 (0) | 2021.06.10 |
---|---|
[R강의] 112. 상위 5개 숫자 추출하기 (2) | 2021.05.31 |
[R강의] 110. 데이터분석 결과를 '표'로 출력하는 방법 두 가지 (2) | 2021.05.26 |
[R강의] 109. 도수분포다각형 (0) | 2021.03.24 |
[R강의] 108. 표준정규분포표 만들기 (0) | 2021.03.22 |
댓글