ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • R로 그래프 만들기 /ggplot2 패키지 /R 시각화
    머신러닝 with 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

     

     

     

    반응형

    댓글

Designed by Tistory.