이번 장에서는 바이올린 플롯을 그리는 방법을 배우고 boxplot, point, stat_summary 등을 중첩시켜 그리는 방법을 배운다.
이번 장에서는 저자가 만든 moonBook 패키지에 포함되어 있는 acs 데이타를 사용한다. 이 데이타는 급성관동맥증후군(acute coronary syndrome, acs) 환자 857명의 데이타로 그 중 진단명인 Dx(Diagnosis)는 NSTEMI(Non-ST elevation Myocardial infacrtion(MI)), STEMI(ST-elevation MI), Unstable angina의 세개 중 하나이다. 먼저 화살표가 가리키는 대로 acs를 클릭하여 데이타를 선택하면 아래 그림과 같이 표가 나타난다.
x축 변수에 Dx(1), y축 변수에 age(2)를 선택하여 할당한 후 violin 체크박스를 선택하면(3) 그림과 같이 바이올린 플롯이 나타난다. 바이올린 플롯은 다수의 데이타 분포를 비교할때 사용하는 것으로 분포가 옆으로 나타나가 때문에 여러 개를 비교하는 것이 가능하다.
바이올린 플롯의 분포는 데이타의 최소값과 최대값까지로 기본 설정이 되어 있으며 바이올린 모양에서 편평한 끝 부분은 데이타의 극단을 나타낸다(trim =TRUE). trim 체크박스를 해제할 경우 꼬리가 나타난다(1). 또한 각 범주별로 바이올린의 면적이 동일하게 나타나지만 면적을 관찰갯수에 맞추어 조절하려면 scale을 count로 맞춘다(2). 이 예에서는 scale을 count로 맞추는 경우 상대적으로 NSTEMI군의 바이올린 면적이 작아지는 것을 볼 수 있다.
바이올린의 색깔을 채우기 위해 fill변수에 Dx를 할당하고(1) Palette를 Pastel2로 선택한다(2). 범례를 없애기 위해 범례 위치에 “none”을 선택한다(3).
바이올린 플롯과 함께 boxplot을 보여주기 위해 boxplot체크박스를 선택한다(1). boxplot의 fill변수에 “darkred”를 설정한다(2). 그리고 boxplot의 크기를 줄이기 위해 width를 0.1로 설정한다(3).
이 그래프에 산점도를 중첩시키기 위해 point 체크박스를 선택한다(1). 이 경우 각 점들이 일렬로 세워져 중첩되므로 알아보기 어렵다. 이런 경우 각 점의 위치에 무작위로 noise를 주어 알아볼 수 있도록 흩트리는 방법을 쓰는데 이것을 jittering이라고 한다. jittering을 위해 position 을 jitter로 한다(2). 그리고 점의 크기가 너무 크므로 size를 1로 한다(3).
평균의 표시를 위해 stat_summaty 체크박스를 선택한 후(1) 모양(shape)을 23, 크기(size)를 3으로 설정한다(2).
화면을 밑으로 내리면 R플롯이 나타나고 이 그래프를 그리는데 사용된 R 코드가 표시된다(주홍색 사각형).
R 명령어를 써서 이 그래프를 그리기 위해서는 다음 명령어를 사용하면 된다.
library(moonBook) # acs 데이타 사용을 위해
library(ggplot2) # ggplot()의 사용을 위해
ggplot(acs,aes(x=Dx,y=age,fill=Dx))+ # 데이타, 변수 할당
geom_violin(scale='count',trim=FALSE)+ # 바이올린 플롯
geom_boxplot(fill='darkred',width=0.1)+ # 박스플롯
geom_point(position='jitter',size=1)+ # 점그래프
stat_summary(geom='point',fun.y=mean,shape=23,size=3)+ # 평균표시
scale_fill_brewer(palette='Pastel2')+ # 팔레트 선택
theme(legend.position='none') # 범례 없앰