머신러닝 with R

R로 그래프 만들기 /ggplot2 패키지 /R 시각화

에빙빙 2019. 7. 25. 19:28

R의 장점 중 하나는 시각화와 관련한 다양한 그래프를 표현하는 기능을 포함하고 있다는 것이다. 

2차원, 3차원 그래프는 물론 산점도, 상자 도표, 지도 그래프, 네트워크 그래프, 모션 차트, 3D 그래프 등

다양한 함수를 사용하면 만들지 못하는 그래프가 없다. 

그래프를 그리는 패키지 중 가장 기본적으로 사용되는 것이 ggplot2이고, 최소한의 설정으로 빠르게 결과물을 만들어 낼 수 있다.

 

 

ggplot2는 3가지 레이어 구조로 구성되어 있다. 

1) 배경 설정(축 설정)

 

2) 그래프 추가(점, 막대, 선)

 

3) 설정 추가(축 범위, 색, 표식 등)

 

 

[산점도 그래프 만들기]

산점도(Scater Plot)는 데이터를 x축과 y축에 점으로 표현한 그래프이다.

나이와 소득처럼, 연속 값으로 된 두 변수 간의 관계를 표현할 때 사용한다.

geom_point( ) 라는 함수를 추가해줘 산점도를 표현한다. 

 

mpg 데이터를 이용해 산점도 그래프를 만들어 예를 들어보자. 

각 코드를 단계별로 실행해서 plot 창에 그려진 그래프의 변화 모습을 보자.

 

 

library(ggplot2)

ggplot(data = mpg, aes(x = displ, y = hwy))
#mpg 데이터로 x 축에 displ, y 축 hwy로 지정해 배경 생성

ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point()
#배경에 산점도 추가

ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6)
# x축 범위를 3~6으로 지정

ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6) + ylim(10, 30)
# x축 범위를 3~6, y축 범위를 10~30 으로 지정

 

 

그럼 앞에서 사용했던 qplot() 함수와 ggplot() 함수의 차이점은 무엇일까?

qplot( )은 주로 전처리 단계에서 데이터 확인용으로 문법이 간단하면서 기능도 단순하다.

ggplot( )은 최종 보고용으로 많이 사용되며, 그래프의 색이나 크기, 폰트 등 세부 조작이 가능하다.

 

 

 

[막대그래프] 

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

geom_col( ) 과 geom_bar( ) 이 있는데 전자는 평균값을 막대 길이로 표현할 때 사용하고, 

후자는 값의 개수 즉, 빈도를 막대 길이로 표현할 때 사용한다.

 

 

library(dplyr)

df_mpg <- mpg %>%
	group_by(drv) %>%
	summarise(mean_hwy = mean(hwy))
    
df_mpg

ggplot(data = df_mpg, aes(x =drv, y = mean_hwy)) + geom_col() #1번
ggplot(data = df_mpg, aes(x = reorder(drv, -mean_hwy), y = mean_hwy)) + geom_col() #2번
#mean_hwy의 크기가 큰 것부터 drv가 정렬됨


ggplot(data = mpg, aes(x = drv)) + geom_bar() 
#x축 범주 변수, y축은 빈도 (drv의 빈도가 y값) #3번

pplot(data = mpg, aes(x = hwy)) +geom_bar()
#x축 연속변수, y축 빈도 #4번
	

 

 

 

1번 2번 그래프

 

 

3번 4번 그래프

 

 

[선 그래프]

선 그래프(Line Chart)는 데이터를 선으로 표현한 그래프이며, 

일정 시간 간격을 두고 나열된 시계열 데이터(Time Series Data)를 선으로 표현한 시계열 그래프(Time Series Chart)가 포함된다. 환율이나 주가지수 등 경제 지표가 시간에 따라 어떻게 변하는지 표현할 때 활용된다.

 

ggplot(data = economics, aex(x = date, y = unemploy)) + geom_line()

 

 

 

 

[상자 그림]

상자 그림(Box Plot)은 데이터 분포를 직사각형의 상자 모양으로 표현한 그래프로, 분포를 알 수 있기 때문에 평균만 볼 때보다, 데이터의 특성을 좀 더 자세히 이해할 수 있다.

ggplot(data = mpg, aes(x = drv, y = hwy) +geom_boxplot()

 

 

상자그림 설명
상자 아래 세로선 아래 수염 하위 0~25% 내에 해당하는 값
상자 밑면 1사분위수(Q1) 하위 25% 위치 값
상자 내 굵은 선 2사분위수(Q2) 하위 50% 위치 값 (중앙값)
상자 윗면 3사분위수(Q3) 하위 75% 위치 값
상자 위 세로선 윗수염 하위 75~100% 내에 해당하는 값
상자 밖 점 표식 극단치 Q1, Q3 밖 IQR을 벗어난 값

** IQR = 사분위 범위(Q1~Q3간 거리) × 1.5

 

 

 

반응형