그래프(Graph)란?
- 데이터를 보기 쉽게 그림으로 표현한 것. 데이터를 그래프로 표현하며 추세와 경향성이 드러나기 때문에 특징을 쉽게 이해할 수 있고, 그래프를 만드는 과정에서 새로운 패턴을 발견하기도 함. 특히 분석 결과를 발표해야 한다면 데이터의 특징을 쉽게 이해할 수 있도록 그래프를 만드는 것이 좋음.
R 그래프의 종류
- 2차원 그래프, 3차원 그래프, 지도 그래프, 네트워크 그래프, 시간에 따라 변화하는 모션 차트, 마우스 조작에 반응하는 인터랙티브 그래프 등
사용하는 패키지
- ggplot2는 그래프를 만들 때 가장 많이 사용하는 패키지 / ggplot2 문법은 레이어(layer) 구조
1단계: 배경 설정(축) / 2단계: 그래프 추가(점, 막대, 선) / 3단계: 설정 추가(축 범위, 색, 표시)
■ 산점도 - 변수 간 관계 표현하기
산점도(Scater Plot): 데이터를 x축과 y축에 점으로 표현한 그래프
- 나이와 소득처럼 연속 값으로 된 두 변수의 관계를 표현할 때 사용됨 >> 변수 둘 다 연속형일 때
(1) 배경 설정하기
library(ggplot2) #ggplot2 패키지 로드
# x축은 displ, y축은 hwy로 지정해 배경 설정
ggplot(data=mpg, aes(x=displ, y=hwy))
>> 코드를 실행하면 R 스튜디오 우측 하단에 있는 플롯 창에 배경 그림이 생성
(2) 그래프 추가하기
- + 기호를 이용해 그래프 유형을 지정하는 함수를 추가
- 산점도를 그리는 함수 geom_point()
(** 참고) dplyr 패키지 함수들은 %>% 기호로 연결하는 반면 ggplot2 패키지 함수들은 + 기호로 연결
# 배경에 산점도 추가
ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point()
>> 앞에서 만든 배경 위에 점 표식이 추가된 산점도가 만들어짐. 산점도에 표시된 점들은 각각의 관측치(행)를 의미하고, 여기서는 각 점이 하나의 자동차 모델을 의미.
전반적으로 배기량이 큰 자동차일수록 고속도로 연비가 낮은 경향이 있다는 것을 알 수 있음
(3) 축 범위를 조정하는 설정 추가하기
- 축은 기본적으로 최솟값에서 최댓값까지 모든 범위의 데이터가 표현되도록 설정되어 있음
- 축 범위는 xlim()과 ylim()을 이용해 지정 가능. xlim()을 이용해 x축을 지정하고, 축이 시작되는 값과 끝나는 값을 쉼표로 나열하면 됨. ex) x축이 3~6까지만 표현되도록 설정: xlim(3, 6) / y축이 10~30까지만 표현되도록 설정: ylim(10, 30)
# x축 범위 3~6으로 지정
ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6)
<참고>
ggplot() 함수는 레이어 구조로 되어 있어, 각각의 요소를 어떻게 지정하느냐에 따라 다른 그래프가 생성됨
Q. ggplot과 qplot의 차이?
- 이전까지는 그래프를 만들 때 qplot()을 사용. qplot()은 기능은 많지 않지만 문법이 간단하기 때문에 주로 전처리 단계에서 데이터를 빠르게 확인해보는 용도로 활용함. 그러나 최종적으로 분석 결과를 보고하기 위해 그래프를 만들 때는 ggplot()을 사용한다. ggplot()을 사용하면 다양한 그래프를 만들 수 있고 색, 크기, 폰트 등 세부 요소들을 자유롭게 조절할 수 있다.
■ 막대 그래프 - 집단 간 차이 표현하기
막대 그래프(Bar Chart): 데이터의 크기를 막대의 길이로 표현한 그래프
- 성별 소득 차이처럼 집단 간 차이를 표현할 때 주로 사용 >> 범주형 + 연속형 (~별 ~ / ~당 ~)
가장 많이 사용되는 막대 그래프는 각 집단의 평균값을 막대 길이로 표현한 평균 막대 그래프이다. mpg 데이터를 이용해 drv(구동방식)별 평균 hwy(고속도로 연비) 막대 그래프를 만들어 보자.
(1) 집단별 평균표 만들기
- 평균 막대 그래프를 만들려면 집단별 평균표로 구성된 데이터 프레임 필요 (구동 방식별 평균 고속도로 연비)
library(dplyr)
df_mpg <- mpg %>%
group_by(drv) %>%
summarise(mean_hwy = mean(hwy))
(2) 그래프 생성하기
- aes의 x축에 범주를 나타내는 변수를 지정하고, y축에 평균값을 나타내는 변수를 지정
- 막대 그래프 만드는 함수: geom_col()
ggplot(data = df_mpg, aes(x = drv, y = mean_hwy)) + geom_col()
(3) 크기 순으로 정렬하기
- 막대는 기본적으로 범주의 알파벳 순서로 정렬됨
- reorder()를 사용하면 막대를 값의 크기 순으로 정렬 가능. reorder()에 x축 변수와 정렬 기준으로 삼을 변수를 지정하면 됨. (정렬 기준 변수 앞에 - 기호를 붙이면 내림차순으로 정렬)
ggplot(data = df_mpg, aes(x = reorder(drv, -mean_hwy), y = mean_hwy)) + geom_col()
>> 참고: 변수의 값이 숫자와 문자로 함께 구성되면 숫자 오름차순, 알파벳 오름차순으로 정렬됨
Q. geom_col() vs geom_bar()?
- 평균 막대 그래프는 데이터를 요약한 평균표를 먼저 만든 후 이 평균표를 이용해 만든다. 반면 빈도 막대 그래프는 별도로 표를 만들지 않고 원자료를 이용해 바로 만든다. 요약표를 이용하는지 원자료를 이용하는지에 따라 그래프를 만드는 절차와 함수가 다르므로 유의
(출처; 가천대학교 컴퓨터공학과, 이영호 교수님)
(출처; 쉽게 배우는 R 데이터 분석, 김영우)
'Programming Language > R' 카테고리의 다른 글
10. 텍스트 마이닝 (0) | 2019.05.30 |
---|---|
08 그래프 만들기 (2) - 선 그래프, 상자 그림 (0) | 2019.05.29 |
07. 데이터 정제하기 - 이상치 (0) | 2019.05.27 |
07. 데이터 정제하기 - 결측치 (0) | 2019.05.27 |
06. 자유자재로 데이터 가공하기 (0) | 2019.05.27 |