📚해당 게시글은 '이지스 퍼블리싱' 출판, 데이터 분석가 '김영우'님이 지은 도서 "Do it! 쉽게 배우는 R 데이터 분석" 을 기반으로 작성된 게시글입니다. 저작권 문제 시 게시글을 삭제 하겠습니다 :)
오늘은 앞서 분석한 함수들을 활용해 그래프 만드는 방법을 배웠다.
그래프의 종류는 다양하지만, 산점도, 막대그래프, 선그래프, 상자 그림 등 기본적인 그래프를 생성하는 방법을 배웠다.
함수는 크게 다를 것 없어 생각보다 단순했다.
우선, R로 만들 수 있는 그래프는 다양하다. 데이터 분석가들이 R을 선호하는 이유 중 하나에 '우수한 그래프 기능'이 포함된다.
R에서는 2차원 그래프, 3차원 그래프, 지도 그래프, 네트워크 그래프, 시간에 따라 변화하는 모션차드, 인터랙티브 그래프 등 다양한 그래프를 생성할 수 있다.
지도그래프 등 심화 그래프(?)는 추후에 올릴 예정. 오늘은 기본에 충실해 기본적인 그래프들 생성 방법을 알아보자!
참고로, 그리프를 쉽게 만들 수 있는 패키지는 ggplot2 이다.
그래프를 만들기에 앞서 ggplot2의 레이어 구조를 이해하면 나중에 코딩할 때 쉽다.
ggplot2는 쉽게 말해, 아래 베이스부터 축 등 배경 설정 > 점/막대/선 등 그래프 추가 > 축 범위/색/표식 등 설정을 추가하는 3가지 레이어로 구성된다.
- 산점도 (변수 간 관계표현)
데이터를 x축과 y축에 점으로 표현한 그래프를 '산점도'라고 한다. 연속 값으로 된 두 변수의 관계를 표현할 때 사용한다.

앞으로 계속 쓰일 함수는 ggplot(data = '데이터명', aes(x='변수명', y='변수명')) 이다. (레이어 1 베이스, 축 등 설정)
dplyr 패키지의 함수들은 %>% 기호를 이용해 함수들을 나열했었다.
ggplot 패키지의 함수들은 + 기호로 함수를 연결한다.
+ geom_poin() 함수를 추가하면 데이터를 산점도로 나타낸다. (레이어 2 그래프 추가)
축 범위를 추가하고자 할 때는, xlim()과 ylim() 함수를 사용한다. 괄호안에는 축의 시작 범위와 끝 범위를 적어주면 된다. (레이어 3 축 범위 설정)
예를 들어, xlim(3,6)이면 x축의 변수를 3에서 6까지만 출력하고, ylim(3,5)면 y축의 변수들을 3에서 5까지만 출력한다.
cf.) ggplot()과 qplot() 차이
qplot()은 전처리 단계에서 데이터를 빠르게 검토하는 용도로 활용
ggplot()은 분석 결과를 보고하기 위해 그래프를 생성할 때 사용. (색, 크기, 폰트 등 세부 요소들 자유롭게 조절 가능)

- 막대 그래프 (집단 간 차이 표현)
막대 그래프는 데이터의 크기를 막대의 길이로 표현한 그래프다. 성별 소득 차이처럼 집단 간 차이를 표현할 때 주로 사용한다.

df_mpg라는 데이터 프레임에 '구동 방식(drv)별 평균 고속도로 연비(hwy)' 데이터를 생성해 막대그래프로 출력했다.
막대그래프를 출력하는 함수는 + geom_col()이다.

reorder(x축 변수, 정렬 기준으로 삼을 변수)함수를 이용하면 막대그래프를 크기순으로 정렬할 수 있다.
여기서, '정렬 기준으로 삼을 변수' 앞에 빼기 기호(-)가 붙으면 내림차순으로 정렬된다!
실습에서는, x 축은 drv(구동 방식) 이며, mean_hwy 변수를 기준으로 내림차순으로 나열할 것이기 때문에
reorder(drv, -mean_hwy)를 사용했다.
그럼, '빈도'막대 그래프는?
말 그대로, 빈도, 즉 값의 개수로 막대의 길이를 표현한 그래프이다. 빈도 막대 그래프는 y축없이 x축만 지정하고, geom_col() 대신 geom_bar()을 사용한다.

cf. ) geom_col()과 geom_bar()
평균 막대 그래프 geom_col()은 데이터를 요약한 평균표를 먼저 만든 후 이 평균표를 이용해 그래프 생성
빈도 막대 그래프 geom_bar()은 데이터를 활용하지 않고 원자료를 그대로 활용


- 선 그래프 (시간에 따라 달라지는 데이터 표현)

선그래프는 + geom_line()을 사용한다.
-상자 그림 (집단 간 분포 차이 표현하기)

상자그림은 geom_boxplot() 를 이용한다.
상자그림은 값은 분포도를 잘 보여준다. 따라서 극단치를 찾아 내는 등의 분석에 유용하다.
상자 그림 | 값 | 설명 |
상자 아래 세로선 | 아랫수염 | 하위 0~25% 내에 해당하는 값 |
상자 밑면 | 1사분위수 | 하위 25% 위치 값 |
상자 내 굵은 선 | 2사분위수 | 하위 50% 위치 값 (중앙값) |
상자 윗면 | 3사분위수 | 하위 75% 위치 값 |
상자 위 세로선 | 윗수염 | 하위 75~100% 내에 해당하는 값 |
상자 밖 점 표식 | 극단치 | 사분위 범위(Q1~Q3 간 거리)의 1.5배 |

지금까지와는 다르게, 오늘 한 내용은 함수가 모두 같아서 어려운 점이 없었다.
point, line, bar, col, boxplot 등만 잘 선택해서 geom_ 뒤에 붙히면 되는것ㅎ
근데 궁금한게 생겼다.. 이전 단원에서는 boxplot()$stats를 이용해 그래프 말고도 통계값을 표로 볼 수 있었는데,
geom_boxplot()은 통계값을 표로 산출하려면 코딩이 어뜨케 되어야하는것인가..
geom_boxplot()$stats도 안되던디....흑 이거 내일 찾아봐야게따ㅠㅠ
낼부터 9단원인데 9단원부터는 실전 데이터 분석이당ㅎㅎ 단원명이 한국인의 삶을 파악하라..! 재밌겠군🤭
'(통계분석) R' 카테고리의 다른 글
10.04(일) 데이터 분석 실전 (연령대에 따른 월급 차이, 연령대 및 성별 월급 차이, 직업별 월급 차이 분석) (0) | 2020.10.04 |
---|---|
10.02(금) 데이터 분석 실전 (성별에 따른 월급 차이, 나이에 따른 월급 차이) (0) | 2020.10.03 |
09.28(일) 데이터 정제 (빠진 데이터, 이상한 데이터 제거하기) (0) | 2020.09.28 |
09.25(금) 데이터 정렬, 파생변수 추가, 집단별 요약, 데이터 합치기 (0) | 2020.09.28 |
09.25(금) 데이터 전처리, 필요한 데이터 추출, 필요한 변수 추출 (0) | 2020.09.28 |