트위티의 열하일기
4. 그래프 만들기 (ggplot2) 본문
# ggplot2 패키지
그래프를 만들 때 가장 많이 사용하는 패키지. 이를 통해 산점도, 막대 그래프, 선 그래프, 상자 그림을 만들 수 있음
[layer 구조]
배경을 만듦 → 그 위에 그래프 형태를 그림 → 축 범위, 색, 표식 등 설정 추가
* qplot() vs ggplot()
- gplot()은 기능은 많지 않지만 문법이 간단 → 전처리 단계에서 데이터를 빠르게 확인해 보는 용도로 활용
- 최종적으로 분석 결과를 보고하기 위해 그래프를 만들 때 → ggplot() 사용
# 산점도(Scatter Plot)
데이터를 x축과 y축에 점으로 표현한 그래프. 연속 값으로 된 두 변수의 관계를 표현할 때 사용됨.
1. 배경 설정하기 (그래프를 그릴 배경 생성)
- data에 사용할 데이터 지정
- aes에 x축, y축에 사용할 변수 지정
# x 축은 displ, y 축은 hwy 로 지정해 배경 생성
ggplot(data = mpg, aes(x = displ, y = hwy))
2. 그래프 추가하기 (그린 배경 위에 그래프 추가하기)
- '+' 기호를 활용해 그래프 유형을 지정하는 함수 추가
# 배경에 산점도 추가
ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point()
3. 축 범위를 조정하는 설정 추가하기
- '+' 기호를 활용해 그래프 설정을 변경하는 코드 추가
- 데이터 전체가 아니라 일부만 표현하고 싶을 때 축 범위를 설정
- 축 범위는 xlim(), ylim()을 이용해 지정
# x축 범위 3~6으로 지정
ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6)
# x축 범위 3~6, y축 범위 10~30으로 지정
ggplot(data = mpg, aes(x = displ, y = hwy)) +
geom_point() +
xlim(3, 6) +
ylim(10, 30)
# 막대 그래프 (Bar chart)
데이터의 크기를 막대의 길이로 표현한 그래프. 집단 간 차이를 표현할 때 주로 사용
1. 집단별 평균표로 구성된 데이터 프레임 만들기
- dplyr 패키지를 이용해 데이터 프레임 만듦
library(dplyr)
df_mpg <- mpg %>%
group_by(drv) %>%
summarise(mean_hwy = mean(hwy))
df_mpg
# 결과
# A tibble: 3 × 2
drv mean_hwy
<chr> <dbl>
1 4 19.2
2 f 28.2
3 r 21
* '구동 방식별 평균 고속도로 연비'로 구성된 데이터 프레임 만듦
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()
4. 빈도 막대 그래프
값의 개수(빈도)로 막대의 길이를 표현한 그래프.
- x축만 지정 (y축 지정할 필요 없음)
- geom_bar() 사용: 빈도 막대 그래프 표현
- [유의!] 별도로 표를 만들지 않고 원자료를 이용해 바로 만듦 (↔ unlike 평균 막대 그래프)
ggplot(data = mpg, aes(x=drv)) + geom_bar()
# 선 그래프 (Line Chart)
데이터를 선으로 표현한 그래프. 시간에 따라 달라지는 데이터를 표현할 때 이용 (e.g. 환율, 주가지수)
- 시계열 데이터 (Time Series Data): 일정 시간 간격을 두고 나열된 데이터
- 시계열 그래프 (Time Series Chart): 시계열 데이터를 선으로 표현한 그래프
1. 시계열 그래프 만들기
- geom_line() 사용: 선 그래프로 표현
ggplot(data = economics, aes(x = date, y = unemploy)) + geom_line()
# 상자 그림 (Box Plot)
데이터의 분포(퍼져 있는 형태)를 직사각형 상자 모양으로 표현한 그래프.
평균만 볼 때보다 데이터의 특징을 더 자세히 이해할 수 있음
- geom_boxplot() 사용: 상자 그림으로 표현
*참고
- ggplot2로 만든 다양한 그래프와 코드 살펴보기
https://r-graph-gallery.com/ggplot2-package.html
Data visualization with R and ggplot2 | the R Graph Gallery
ggplot2 is the most famous package for data visualization with R. This page offers tip and tricks concerning its usage.
r-graph-gallery.com
- ggplot2의 확장 패키지들 (만들 수 있는 새로운 형태의 그래프 탐색)
https://exts.ggplot2.tidyverse.org/
ggplot2 extensions
Submit your ggplot2 extensions so that other R users can easily find them. To do so, simply submit a pull request using these simple instructions.
exts.ggplot2.tidyverse.org
'Programming Languages > R' 카테고리의 다른 글
5. 텍스트 마이닝 (0) | 2025.02.27 |
---|---|
실전 데이터 분석 프로젝트 (0) | 2025.02.20 |
3. 데이터 가공, 정제하기 (0) | 2025.02.13 |
2. 데이터 프레임, 데이터 불러오기, 데이터 분석의 기초 (0) | 2025.02.06 |
[심화] R 패키지 DLM 논문 리뷰 (0) | 2025.02.06 |