반응형
산점도 그래프를 회전하는 방법에 대해 알아봅시다. 아래 그래프를 그려볼 것입니다. 상관분석 예시 그림을 만들때 사용하였습니다.

먼저 정규분포 함수에서 임의추출하여 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)를 만큼 회전한 점 (a',b')를 구하는 방법은 아래와 같습니다.
수학적 원리는 링크를 참고해주세요.
데이터를 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 |
댓글
만다린망고님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.