그래프


그래프

R에는 데이터 분석가들을 위한 다양한 그래프들이 존재합니다. 2차원, 3차원, 지도, 시간 등에 따른 그래프를 만들 수 있습니다. 그 중에서 조금씩 사용해본 ggplot2 패키지는 산점도, 막대, 선, 상자 등 그래프를 만들 수 있습니다.

산점도

2차원 그래프에서 점을 이용하여 나타낸 그래프를 산점도 그래프라 합니다. 나이, 소득과 같은 연속적인 값으로 된 두 변수의 관계를 나타낼때 사용합니다.

추가적으로 ggplot2는 레이어(계층)구조로 되어있습니다. 배경 계층을 만들고 그 위에 그래프 형태 계층을 구성한 뒤 축, 범위, 색상, 표식 등의 계층 순으로 구성하게 됩니다.

기존에 사용한 mpg 데이터 프레임을 이용하여 산점도 그래프를 만들어 보겠습니다.

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

back_graph

위 코드는 ggplot2를 사용하기 위해 패키지를 넣어준 것과 데이터는 mpg 데이터 프레임을 이용하겠다는 것이며, x 축은 displ 속성, y 축은 hwy 속성으로 하겠다는 의미입니다.

여기서 geom_point()를 추가하면 해당 값들이 점으로 표현되게 됩니다.

> ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point()

point_graph

추가적으로 x, y 축에 대한 범위를 조정하고 싶은 경우 xlim(), ylim()을 이용하면 됩니다.

> ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6) + ylim(20, 40)

xlim_ylim

막대 그래프

막대 그래프는 막대 모양으로 나타낸 그래프를 말합니다. 이는 특정 집단 간의 차이를 표현할 때 사용됩니다.

집단 별 차이를 나타내므로 먼저 집단 별 통계를 산출해야 합니다.

> library(dplyr)
> df_mpg = mpg %>% group_by(drv) %>% summarise(mean_hwy = mean(hwy))
> df_mpg
# A tibble: 3 x 2
  drv   mean_hwy
  <chr>    <dbl>
1 4         19.2
2 f         28.2
3 r         21

mpg 데이터 프레임에서 drv 속성을 기준으로 그룹핑하고 summarise를 이용하여 hwy의 평균 값을 나태내주도록 하여 df_mpg 라는 새로운 데이터 프레임을 구성했습니다.

이제 막대그래프로 표현하도록 하겠습니다. 마찬가지로 ggplot을 이용하며 산점도와 비슷하게 사용할 수 있습니다. 산점도에서는 geom_point()를 사용했다면 막대 그래프는 geom_col()를 사용하면 됩니다.

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

bar_graph

해당 막대 그래프를 내림차순으로 표현하고자 하는 경우 X축을 기준으로 reorder() 함수를 사용하면 됩니다. X축을 기준으로 내림차순으로 표현되며 기준 값은 Y축 값이므로 -, + 를 붙여 표현하면 됩니다.

bar_desc

빈도 막대 그래프

빈도 수를 기준으로 막대 그래프를 그리는 경우 X 축만 속성을 지정하면 됩니다. 그러면 각 값들이 Y축에 표현됩니다.

위 그래프와 동일하게 geom_bar()를 이용하면 됩니다.

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

bar2

선 그래프

데이터를 선으로 이어 만든 그래프를 선 그래프라 합니다. 보통 시간에 따라 달라지는 데이터를 표현할 때 많이 사용됩니다. 가령, 환율, 주가, 경제 지표같은 것을 예로 들수 있습니다.

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

economics는 ggplot에 포함되어 있기 때문에 새로 데이터 프레임을 구성하지 않아도 됩니다. 다른 그래프와 마찬가지로 뒤에 geom_line()을 이용하여 나타낼 수 있습니다.

time_graph

상자 그래프

상자 그래프는 데이터가 퍼저 있는 정도를 직사각형 상자 모양으로 표현한 그래프를 뜻합니다. 이전 포스트에서 boxplot를 사용한 모양과 동일합니다.

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

box_graph

각 박스의 선, 점들에 대한 내용은 이전 포스트를 참고해주세요.




© 2017. by k3y6reak

Powered by k3y6reak