놀고 싶어요

[R Programming] ggplot2를 이용한 기본 그래프 그리기 - 파이차트, 막대그래프, 히스토그램, Box Plot, 선 그래프 본문

R

[R Programming] ggplot2를 이용한 기본 그래프 그리기 - 파이차트, 막대그래프, 히스토그램, Box Plot, 선 그래프

챌린지 2021. 5. 12. 16:23

차트를 그리기 위해서는 차트 그리기용 패키지를 사용해야 한다.

가장 널리 사용되고 강력한 시각화 패키지로 ggplot2가 있다.

 

시각화로 개략적인 데이터 특성 파악이 가능하다.

 

 

예시) 

성별에 대한 파이차트 를 그리기 위해 성별 기준으로 데이터 집계를 한다.

data <- bike_data2 %>% group_by(Gender) %>% summarise(Counts = n()) %>% mutate(Percentage = Counts / sum(Counts))

 

bike_data2를 성별로 그룹지어 요약한다.

group by 를 이용하여 성별로 집계함.

summarise 함수: 어떤 함수를 포함시켜가지고 집계할 건지  나타냄.

n(): n이라고 하는 몇 개 인지를 세는 의미의 함수. sum등 다른 함수 사용 가능하다.

 

mutate() 요약 결과를 Percentage라는 새 컬럼에 제시. 각 성별 항목의 빈도를 총 빈도의 합으로 나누어 성별 비율을 계산함.

mutate() 함수: 새롭게 만들어진 컬럼을 처리하는 함수. percentage라는 함수로 새로운 컬럼을 만듦

 

결과 값을 data 변수에 저장한다.

성별 기준의 빈도와 비율을 집계한 tibble이 형성 된다.

 

 

 

library(ggplot2)

ggplot2는 아주 강력한 시각화 툴로서 tidyverse 설치시 자동으로 설치된다. 설치 안되어 있으면 별도 설치 필요하다.

 

2021.05.08 - [개발/R] - tidyverse 특징과 함수

 

 

ggplot(ggplot함수에 사용할 데이터, 그래프 축을 그리는 방법)

aes는 aesthetic(미적) 단어에서 온 표현. 그래프의 미적 표현값을 정의한다.

여러 개의 층을 + 로 더해 쌓아서 표현함

그래프의 축, 표현 방법 등 그래프의 기본 : 아래 레이어로 정의

기본 레이어 위에 한 층 씩 쌓아가는 형식으로 그래프를 그린다.

 

 

 

 

 

파이 차트

: 범주형 변수 하나로 그릴 수 있는 차트

 

ggplot(data, aes(x="", y = Percentage, fill = Gender)) + geom_bar(width=1, stat="identity")+coord_polar("y")

 

식을 보면 몇 개의 코드 덩어리가 + 로 연결되어 있음을 알 수 있다.

x축 이름 적지 않고, y축 이름은 Percentage, 그래프 채우는 기준을 Gender로 정의했다.

 

 

geom_bar: 어떤 그래프를 그릴 것인지 표현하고 그래프의 특징 정의

width: 폭

stat=“identity” 필수적으로 막대 그래프의 폭을 정함 - 막대 그래프를 돌돌 말아서 원형으로 변형함

 

coord_polar: 막대 그래프를 원형으로 변환.

ggplot에서는 막대그래프로 먼저 만들고 축을 원처럼 만드는 파이차트가 널리 쓰이는 편이다.

 

 

막대 그래프

: 범주형 변수 하나로 그릴 수 있는 차트

ggplot(data, aes(x=Gender, y = Percentage, fill = Gender)) + geom_bar(stat="identity")

 

 

 

히스토그램

: 하나의 변수로 그릴 있음. 수치형 데이터의 분포를 있다.

좌측 그래프: ggplot(bike_data2, aes(x=Distance)) + geom_histogram()

우측 그래프:ggplot(bike_data2, aes(x=Distance)) + geom_histogram(binwidth = 2000, fill='skyblue', color='black')

 

히스토그램 조정하는 항목 중요한 기본 사항 몇가지

binwidth: x축의 간격을 나누는 정도

fill: 컬러

color: 테두리

 

이동거리(Distance) 항목 대상으로 시각화하였다. 좌측에 많이 치우친 데이터임을 있다.

 

 

 

 

상자 그림 (box plot) 상자-수염 그래프

거리가 5000이하인 데이터만 추출하여 변수를 생성한다.

under_5000 <- bike_data[bike_data2$Distance < 5000,]


좌측 그래프: ggplot(under_5000, aes(x=Distance)) + geom_boxplot()

   -> 그래프가 옆으로 그려짐 -> x축에 Distance 넣었기 때문

우측 그래프: ggplot(under_5000, aes(x=Gender, y=Distance)) + geom_boxplot(aes(fill=Gender))

 

 

 

그래프

: 선그래프는 x, y 변수로 그린다. 

 

 

사용할 데이터를 weather 데이터를 이용해 만든다.

group_by(time) 시간대별로

summarize(): 평균 기온을 계산하여 data변수에 넣는다.

 

data <- weather %>% group_by(time) %>% summarize(mean_temp = mean(temp))

data

 

ggplot(data, aes(x=time, y=mean_temp)) + geom_line(color='red') + geom_point()

x축 time, y축 평균기온 

line 색 red

geom_point x축 값이 있는 곳에 점을 찍는다.

 

12시나 24시 온도가 갑자기 다른걸 보고 데이터가 잘못됨을 알 수 있다.

-> 시각화를 하면 이러한 정보를 쉽게 얻을 있다.