본문 바로가기
공부/IT-R프로그래밍

R데이터배우기 - [06] 그래프 만들기

by 썸볼 2017. 10. 24.

R데이터배우기 - [06] 그래프 만들기





1. R 그래프 
 - 데이터의 원자료나 통계표는 수많은 숫자와 문자로 구성되어 있어서 의미 파악이 어렵다.
 - 데이터를 그래프로 표현하면 추세와 경향성을 알기 쉽다.
 - ggplot2는 그래프를 만들때 가장 많이 사용하는 패키지 이다.
 - 산점도, 막대그래프,선그래프, 상자 그래프를 알아본다.

※ ggplot2 레이어 구조 
ggplot2는 레이어 구조로 되어있다.
배경을 만들고,
그위에 그래프 형태를 그리고,
마지막으로 축 범위위, 색, 표식 등을 설정한다.


  
  ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6)
    
                        데이터 축                              그래프종류      세부설명




(1) 산점도 그래프
- 데이터를 x측과 y측에 점으로 표현한 그래프를 산점도(Scater Plot) 라 한다.
- 산점도는 나이와 소득처럼 연속 값으로 된 두 변수의 관계를 표현할 때 사용한다.
- mpg데이터의 displ(배기량)과 hwy(고속도로 연비)로 산점도 그래프를 그린다.

1) 배경 설정하기


library(ggplot2)
 
# x축 displ, y축 hwy로 지정해 배경 생성
ggplot(data = mpg, aes(x = displ, y = hwy))


 
 

2) 그래프 추가하기
- dplyr 패키지는 함수들을 %>% 기호로 연결하지만 ggplot2 패키지 함수들은 + 기호로
 연결한다.
- 표시된 점들은 각각의 관측치(행)을 의미한다. 각 점이 하나의 자동차 모델을 의미한다.
- 그래프의 내용은 전반적으로 배기량이 큰 자동차일수록 고속도로 연비가 낮은 경향이 있다.


# 배경에 산점도 추가
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)





4) 그래프 이미지 파일로 저장하기
- 오른쪽 아래 이미지가 보여지는 창 메뉴에서 [Export] -> 서브세개의 메뉴가 나온다
  이미지로저장, PDF로저장, 메모리로 저장 등의 메뉴를 사용할 수 있다.








(2) 막대그래프
- 막대그래프(Bar Chart)는 데이터의 크기를 막대의 길이로 표현한 그래프입니다.
  성별 소득 차이처럼 집단 간 차이를 표현할 때 주로 사용한다.
- mpg데이터의 drv(구동방식)별 평균 hwy(고속도로 연비) 막대 그래프를 만든다.

1)집단별 평균표 만들기

- dplyr패키지를 이용하여 구동방식별 고속도로 연비로 구성 데이터프레임을 생성한다.

#install.packages("dplyr")

library(dplyr)
 
df_mpg <- mpg %>% 
  group_by(drv) %>%
  summarise(mean_hwy = mean(hwy, na.rm=T))
 
df_mpg



2)그래프 생성하기

ggplot(data = df_mpg, aes(x = drv, y = mean_hwy)) + geom_col()




3)크기순으로 정렬하기
- reorder()를 사용하면 막대를 값의 크기 순으로 정렬할 수 있다.
- 정렬기준 변수 앞 - 기호를 붙이면 내림차순으로 정렬합니다.


ggplot(data = df_mpg, aes(x = reorder(drv, -mean_hwy), y = mean_hwy)) + geom_col()



4)빈도 막대 그래프 만들기
- 빈도 막대 그래프는 값의 개수(빈도)로 막대의 길이를 표현한 그래프이다.
- y축 없이 x축만 지정하고, geom_col() 대신 geom_bar()를 사용한다.
- drv항목별 빈도 막대 그래프 그리기


 ggplot(data = mpg, aes(x = drv)) + geom_bar()



- x축에 연속적인 데이터를 지정하면 값의 분포를 파악할 수 있다.
- hwy변수의 분포를 나타낸 빈도 막대 그래프 그리기


 ggplot(data = mpg, aes(x = hwy)) + geom_bar()



(3) 선그래프
- 선그래프(Line Chart)는 시간에 따라 달라지는 데이터를 표현할 때 사용한다.
- 환율, 주가지수등 경제지표등을 표현한다.
- 일정시간 간격의 데이터를 시계열 데이터(Time Series Data)라 하고
  시계열 데이타를 선으로 표현한 그래프를 시계열 그래프라 한다.
- ggplot2패키지의 economics데이터로 시계열 그래프 그리기
- economics데이터는 미국의 경제 지표들을 월별로 나타낸 데이터이다.
- x 축 시간을 의미하는 date, y축 실업자 수 unemploy
- 선그래프 표현을 위해 geom_line()함수를 추가한다.


economics2 <-ggplot2::economics

head(economics2)
 
ggplot(data=economics2,aes(x=economics2$date, y=economics2$unemploy)) +
  geom_line()
 




※ 데이터 분석 설명
- 실업자 수가 약 5년주기로 등락을 반복하고, 2005년 이후 급격하게 증가 했다가 
   2010년 이후 다시 감소하고 있는 추세라는 것을 알 수 있다.


(4) 상자그림

- 상자그림(Box plot)은 데이터 분포(퍼져있는 형태)를 직사각형 상자 모양으로 표현한 그래프이다.
- 데이터의 특성을 좀 더 자세히 이해할 수 있다.
- mpg데이터의 drv(구동방식)별 hwy(고속도로 연비)를 상자그림으로 그린다.
- x축 drv, y축 hwy 지정후 상자 그림 표현을 위해 geom_boxplot()를 추가한다.


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


  

※ 데이터 분석 설명
- 4륜구동(4)  
  17~22사이에 대부분의 자동차가 모여있다.
  중앙값이 상자 밑면에 가까운것을 보면 낮은 값쪽으로 치우친 형태의 분포이다.
- 전륜구동(f)
  26~29 사이의 좁은 범위에 자동차가 모여 있는 뾰족한 형태의 분포라는 것을 알 수 있다.
  수염의 위, 아래에 점표식이 있는 것을 보면 연비가 극단적으로 높거나 낮은 자동차들이
  존재 한다는 것을 알 수 있다. 
- 후륜구동(r)
  17~24사이의 넓은 범위에 자동차가 분포하고 있다는 것을 알 수있다.
  수염이 짧고 극단치가 없는 것을 보면 대부분의 자동차가 사분위 범위에 해당한다는 것을
  알수있다.

  
  
※상자그림의 값과 설명


   

댓글