경우에 따라 plot 안에 다른 plot을 넣을 때가 있다. 예를 들어 0부터 2
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))
Comment 0
No. | Subject | Author | Date |
---|---|---|---|
914 | R을 이용한 조건부과정분석 [1] | MJ89 | 2020.08.18 |
913 | 로그인 에러가 자주뜹니다. [1] | 피터팬79 | 2021.01.11 |
» | Plot inset 만들기 | cardiomoon | 2015.06.09 |
911 | 생존분석 중에 문의 드립니다. [1] | hahachristi | 2017.05.03 |
910 | R에서 그룹별 사분위수 계산 [2] | 버블 | 2021.05.04 |
909 | Sigmoid curve (회귀분석) 질문드립니다. [1] | chanheebox | 2017.09.19 |
908 | 메타분석 질문 [2] | 남일성 | 2017.10.06 |
907 | WGCNA 분석 [1] | zkbi | 2020.04.23 |
906 | Univariate and Multiple Logistic Regression: predictor의 선택 | 신희순 | 2018.10.04 |
905 | Survival 패키지를 이용한 KM curve 작성시 오류 문의 [10] | 스날푸 | 2020.04.15 |
904 | 교수님 안녕하세요. multipleROC package에 관해 질문드리고 싶습니다. [4] | 포카리 | 2021.03.09 |
903 | effect size 문의 | 보라도리 | 2019.09.28 |
902 | 안녕하세요 r 구조방정식 질문이 있습니다 [6] | 마술샘 | 2016.02.23 |
901 | standard error 에 관한 질문입니다. [6] | R까기 | 2016.01.28 |
900 | 생존분석에서 연속형변수의 cutpoint에 대해 질문드립니다. [2] | zepiros15 | 2018.12.17 |
899 | 생존 분석시 문제 [3] | selteen | 2016.06.09 |
898 | 결측치 제거에 관한 문의입니다. [1] | 방랑자 | 2015.03.26 |
897 | 8개의 군에서 Cox regression 에러 [5] | 정암 | 2017.05.21 |
896 | R 3.2.3 is released!!! [1] | fermat39 | 2015.12.15 |
895 | scientific reports 투고 관련 문의 드립니다. [2] | 날아라랭지 | 2018.09.16 |