언어/R

4. 그래프 그리기

차가운오미자 2021. 6. 15. 16:39

 

R은 2차원, 3차원, 지도, 네트워크 등 다양한 그래프를 지원하는데 (그래서 인기있음!) 그래프를 그릴 때는 gglot2 패키지를 자주 사용한다.

 

1. ggplot의 그래프

ggplot문법은 레이어 구조로 구성되어있다.

Theme
Cooridnates
Statistics
Facets
Geometries: 데이터를 표현할 도형 (ex. 그래프, 선, 막대 등)
Aesthetics: 축 스케일, 색, 채우기 등 미적인 요소들
Data: 시각화하려는 데이터

 

코딩에서 사용하는 실제적인 단계는 다음과 같다:

 

Step1 : 배경설정

ex) ggplot(data=mpg, aes(x=displ,y=hwy))

Step 2: 그래프 추가

ex) geom_point()

Step 3: 설정 추가

ex) xlim(3,6)+ylim(0,2)

 

각 단계는 + 기호를 이용해서 이어준다.

ex) ggplot(data=mpg, aes(x=displ,y=hwy))+geom_point()+xlim(3,6)+ylim(0,25)

 

2. 산점도 그리기

(1) 데이터로는 mpg 데이터를 사용한다.

(2) x축은 displ, y축은 hwy이다.

(3) 산점도는 geom_point() 함수로 그린다.

(4) 추가설정 부분: x축의 범위는 3~6이고, y축의 범위는 0~25이다.

library(dplyr)
library(readxl)
library(ggplot2)

mpg <- as.data.frame(ggplot2::mpg)
ggplot(data=mpg, aes(x=displ, y=hwy))+geom_point()+xlim(3, 6)+ylim(0,25)

 

3. 막대 그래프 그리기

(1) 그래프를 그리기 위해 데이터 프레임을 만들어준다. drv를 기준으로 그룹핑을 해준다. (4, f, r) 그리고 hwy의 평균을 막대그래프로 그릴 것이다.

(2) data에 위에서 만든 데이터 프레임을 넣어준다.

(3) x축은 drv로, y축은 mean_hwy로 지정해준다.

(4) geom_col()은 막대그래프를 뜻한다.

(5) x축에 reorder()함수를 사용해서 drv이 내림차순으로 정렬되게 했다.

### 막대 그래프 ###
# dataframe for the graph
v_mpg <- mpg %>% 
  group_by(drv) %>% 
  summarise(mean_hwy = mean(hwy))
ggplot(data=v_mpg, aes(x=drv, y=mean_hwy))+geom_col()
# 올림차순으로 drv를 정렬해서 그래프 그리기
# => reorder()함수
ggplot(data=v_mpg, aes(x=reorder(drv, mean_hwy))+geom_col()

정렬하지 않은 막대그래프 (좌) / 정렬된 막대그래프 (우)

 

4. 빈도막대 그래프 그리기

(1) 데이터는 위에서 만든 v_mpg

(2) x축은 drv, y축은 없다

(3) geom_bar() 은 빈도막대 그래프를 그리는 함수다.

#4. 빈도막대 그래프 그리기
ggplot(data=v_mpg, aes(x=drv))+geom_bar()
# y가 없음!
# 4, f, r 모두 있어서 모두 1인것

 

5. 선그래프 그리기

1) 데이터는 ggplot안의 economics 데이터를 사용한다.

2) x축은 date이고 y축은 unemploy (실업자수) 이다.

3) 선그래프를 그리는 함수는 geom_line() 이다. date의 흐름에 따라 실업자수의 증감을 볼 수 있다.

4) 주로 시간에 따른 변화를 나타낼 때 사용한다.

5) ggplot 안에 economics 라는 데이터를 사용한다.

#5. 선그래프
economics <- as.data.frame(ggplot2::economics)
ggplot(data=economics, aes(x=date, y=unemploy))+geom_line()