Skip to menu

Plot inset 만들기

cardiomoon 2015.06.09 20:37 Views : 564

경우에 따라 plot 안에 다른 plot을 넣을 때가 있다. 예를 들어 0부터 2pi까지 sin값을 그래프로 그리면 다음과 같다.

require(ggplot2)
require(gridExtra)

p=ggplot(data.frame(x=c(0,2*pi)),aes(x=x))
p1=p+stat_function(fun=sin,colour="darkgreen",size=2)+theme_bw()
p1

또한 sin의 제곱 값을 그려보면 다음과 같다.

myfun2=function(x){
    sin(x)^2 
}
p2=p+stat_function(fun=myfun2,geom="area",colour="orange",fill="yellow",size=2)+
    theme_bw()+ylab(expression(sin(x)^2))

p2

또한 sin의 세제곱 값을 그려보면 다음과 같다.

myfun3=function(x){
    sin(x)^3 
}

p3<-p+stat_function(fun=myfun3,colour="blue",size=2)+
    theme_bw()+ylab(expression(sin(x)^3))
p3

이들 세개의 그래프를 하나로 그리려면 어떻게 할까 ? 여러가지 방법이 있지만 grid패키지의 viewport를 이용하는 것이 가장 간단하다. viewport()함수는 그래프의 전체 영역을 0부터 1로 생각하고 중심이 되는 x좌표,y좌표, 넓이, 높이로 정한다. 그리고 그 viewport에 출력하면 된다. 예를 들어 첫번째 plot오른쪽 위에 두번째 plot을 출력하려면 다음과 같이 하면 된다.

p1
vp2 <- viewport(x=0.75,y=0.75,width=0.4, height=0.4)
print(p2,vp=vp2)

마찬가지로 화면 왼쪽 아랫부분에 세번째 그래프를 출력하려면 다음과 같이 하면 된다.

p1
vp3 <- viewport(x=0.3,y=0.3,width=0.4, height=0.4)
print(p3,vp=vp3)

완성된 그래프에 글씨를 추가하려면 어떻게 하면 될까? grid.text를 쓰면 되는데 이떄 지정해주는 x,y좌표는 그래프 내의 좌표가 아닌 plot전체를 0부터 1까지 나는 좌표이다. 또한 글씨의 회전과 크기도 조절할 수 있다. 다음의 예를 보자.

p1
for (i in 0:10)  grid.text(i,x=i/10,y=i/10,rot=i*36,gp=gpar(fontsize=20))

세개의 그래프를 하나에 그리고 “A”,“B”,“C”등으로 주석을 추가하면 우리가 만들고 싶어하던 plot이 완성된다.

p1
print(p2,vp=vp2)
print(p3,vp=vp3)
grid.text("A",x=0.13,y=0.9,gp=gpar(fontsize=20))
grid.text("B",x=0.13,y=0.48,gp=gpar(fontsize=20))
grid.text("C",x=0.57,y=0.9,gp=gpar(fontsize=20))

No. Subject Author Date
534 생존분석 error file gracehn 2018.10.25
533 결측치 메우는 방법 문의 [1] 김태오 2018.10.19
532 boxplot 질문드립니다. [2] file jjunglammy 2018.10.17
531 출간올유 funnel plot 에 대해서 [2] file 노을 2018.10.15
530 교수님! cox 회귀분석 큐빅 스플라인 그래프 작성 질문드립니다! [1] susan 2018.10.15
529 메타분석 출간오류에 대하여 문의드립니다. file 노을 2018.10.14
528 교수님, 질문 드립니다. kjg 2018.10.06
527 로지스틱 회귀분석 김밥친구 2018.10.04
526 Enter calculcation equation을 넣는 형식 신희순 2018.10.04
525 Univariate and Multiple Logistic Regression: predictor의 선택 file 신희순 2018.10.04
524 R studio에서 data import 관련하여 문의드립니다. Jun 2018.10.04
523 통계 초보가 효과 크기에 대해 질문드립니다. 상냥한펭귄씨 2018.10.01
522 data 전처리 관련 질문입니다.. [1] file 망고링고 2018.09.22
521 반복 측정한 자료에서 증가한 비율의 차이가 두 집단간에 유의하게 다른지 알아보려고 합니다. 렁닥 2018.09.20
520 ㅠㅠ.. 초보적인 문제점 하나만 조언 부탁드립니다. [2] Solplz 2018.09.19
519 통계 방법의 선택과 관련된 질문. 김날 2018.09.19
518 회귀분석시 단계별 선택법에 관해 질문드립니다. fermion503 2018.09.18
517 교수님께. PPT download 오류 [1] giin 2018.09.17
516 scientific reports 투고 관련 문의 드립니다. [2] 날아라랭지 2018.09.16
515 Cross validation and ROC curve 신희순 2018.09.12