R에서 기본 그래픽스로 제공하는 도구 중
요인별로 구분된 산점도를 그릴때 심플하게 이용할 수 있는
coplot()
함수와 ggplot2 package 에서 coplot()
함수와 비슷한 성격의 faect_wrap()
함수에 대해 알아보고자
한다.
coplot()
도움말을 보면 “Conditioning plots” 즉 “조건화
그래프” 라는 제목으로 사용법이 설명되어 있다.
조건화 그래프는 언제 필요로 할까?
요인이 많은 데이터들을 산점도를 이용하여 시각화 할 때 분간이 쉽지
않아 요인별 특색을 찾기가 어려운 경우가 있다.
예시를 통해 설명을 이어가겠다.
ggplot2
package 에서의 faect_wrap()
, faect_grid()
함수
<- ggplot(diamonds, aes(x = carat, y = price, color = cut)) +
p1 geom_point(alpha = .5) +
labs(color = "")
p1
위 산점도를 간단히 설명하면
세공 상태별 다이아몬드의 가격과, 캐럿(다이아몬드의 무게)의 산점도를
ggplot2::daimonds
데이터셋을 이용해 출력한 결과이다.
결과물만을 보았을 때 세공 상태별 가격과, 캐럿의 분포를 뚜렷하게 확인
하기가 쉽지 않다.
종류가 5가지나 되고 데이터의 수도 많아지면서 난해하진 이 그래프는 캐럿과
가격이 정비례한다는 정보는 인지하기 쉬우나, 세공상태별로 특색의 차이를
인지하기는 매우 어렵다.
세공상태별로의 특색을 눈으로 확인하고 싶다면 아래처럼 요인별로 산점도를 따로 나누는 것도 좋은 방법일 것이다.
+ facet_wrap(~ cut, nrow = 5) p1
첫번째 그래프에서는 알기 쉽지 않던 요인별 분포를 적나라 하게 확인할
수 있게 된다.
가공상태가 좋지 않은 Fair 군의 다이아몬드 가격분포가 다른 군의 분포와
차이가 조금 있다는것을 첫번째 그래프로는 파악할 수 없었을 것이다.
요인별로 패널을 나누어 시각화 하는 스킬들은 도구별로 방법은
다르더라도 기본적으로 제공하는 편이며
위의 예시인 ggplot2 package 에서는 faect_wrap()
,
faect_grid()
함수등을 이용하여 구현이 가능하다.
coplot()
함수
ggplot2 package 가 아닌 기본 그래픽스에서 조건화 그래프를 그리려면
아래처럼 coplot()
함수를 이용하여 간단하게 볼 수 있다.
coplot(price ~ carat | cut, data = diamonds)
수학에서 조건(given) 을 “bar”(|) 로 표기하는것을 생각하고 formula 를 작성해 이용하면 되겠다.