머신러닝 및 딥러닝/R

[데이터 분석/R] 데이터 시각화 with ggplot2: 산점도 만들기

삡삐in오즈 2021. 6. 8. 12:29
728x90
반응형


이번 글에서는 R에서 ggplot2 패키지를 사용하여 데이터 시각화
밑글을 참고하여 ggplot2나 tidyverse를 설치하시면 됩니다 :)

 

[데이터 분석 with R] R 스튜디오에서 패키지 설치하기 (feat. 자주 쓰이는 패키지 추천)

R 패키지란? R 패키지란 사용자들이 만들어 놓은 함수 function이랑 데이터셋 모음집이다. R의 기본 기능을 개선하거나 새로운 기능을 추가할 수 있다. 데이터 분석에서 자주 쓰이는 패키지: ggplot2 -

benn.tistory.com

 


ggplot2 라이브러리 불러오기


제일 먼저 tidyverse 라이브러리를 불러옵니다.
* tidyverse 라이브러리에는 ggplot2가 포함되어 있어 ggplot2를 따로 불러올 필요는 없습니다.

library(tidyverse)

 

데이터셋 - 내장된 데이터셋 mpg


이 글에서는 ggplot2 패키지에 포함되어 있는 데이터셋인 mpg를 사용해서 산포도 (scatter plot)을 그려보도록 하겠습니다.

먼저 mpg 데이터셋입니다.
이 데이터셋은 38개의 차 모델의 연비 데이터를 포함하고 있습니다.

mpg 데이터셋의 속성 features



ggplot()

ggplot2 패키지를 사용해서 그래프를 그릴 때는 ggplot() 함수로 먼저 객체를 초기화해줘야 한다. 그리고 원하는 구성을 +를 이용해 추가해줄 수 있다.

ggplot() + 차트 구성



예)

출처: ggplot2.tidyverse.org/reference/

ggplot(data) + geom_bar() 막대차트
ggplot(data) + geom_abline() 라인차트


여기서 ggplot()을 사용하여 차트를 초기화시키는 방법이 여러 가지 있다.

  • ggplot(): 먼저 차트/객체를 생성하고 다양한 레이어를 추가할 때 e.g. 다양한 데이터셋을 사용할 때 유용
  • ggplot(df): 데이터셋을 지정해놓은 객채. 동일한 데이터로 여러 가지 스타일의 차트를 만들 때 사용하기 유용
  • ggplot(df, aes(x, y, 등등): 모든 레이어가 동일한 데이터와 동일한 aes() 설정을 사용할 때 유용


mpg 데이터셋을 사용하여 만든 막대차트. 세 줄 다 동일한 막대차트를 만든다.

ggplot() + geom_bar(mpg, aes(class)) ggplot(mpg) + geom_bar(aes(class)) ggplot(mpg, aes(class)) + geom_bar()




산포도 geom_point()

R스튜디오

산포도 scatter plot은 두 변수의 관계를 살펴볼 수 있는 그래프이다.
ggplot2에서 산포도를 그리는 기본 문법은 아래와 같다.

ggplot(data=데이터셋) + geom_point(aes(x=x축변수, y=y축변수))



x축에 displ 배기량과 y축에 hwy 고속도로 연비의 관계를 살펴보기 위해 산포도를 만들어 보겠습니다.

ggplot(data=mpg)+geom_point(mapping=aes(x=displ, y=hwy)) ggplot(mpg)+geom_point(aes(displ, hwy)) # data=, mapping= 생략 가능




color= ""를 통해서 색깔을 바꿀 수 있습니다.
여기에 RGB 문자열을 넣어도 되고 R에서 제공하는 색깔 이름을 넣어줘도 됩니다.

ggplot(data=mpg)+geom_point(mapping=aes(x=displ, y=hwy), color="magenta")





3번째 변수 (예를 들면 차 종류 class) 별로 색깔을 바꾸고 싶다면 'color=변수 이름'을 추가해주면 됩니다.

ggplot(data=mpg)+geom_point(mapping=aes(x=displ, y=hwy, color=class))

 

제조회사, 자동차 종류에 따라 색을 넣어준 경우



만약에 'alpha=변수 이름'을 넣어준다면 변수의 레벨에 따라 포인트 투명도를 조절해 구별 가능합니다.

ggplot(data=mpg)+geom_point(mapping=aes(x=displ, y=hwy, alpha=class), color="plum4")

다만 밑과 같은 경고 메시지가 뜰 수 있습니다.

Warning message:
Using alpha for a discrete variable is not advised.

차 종류는 불연속 변수 (discrete variable)이라 그러데이션 별로 차 종류를 나누는 게 그래프를 이해하는데 이해가 안 되기 때문입니다.

예를 들어 연속형 변수인 cty를 사용해서 차트를 만들면 경고 메시지가 안 뜹니다.
작은 숫자 10을 연하게 35를 제일 진하게 cty 변수를 나누는 게 차트를 읽는데 의미가 있기 때문입니다.

ggplot(data=mpg)+geom_point(mapping=aes(x=displ, y=hwy, alpha=cty), color="plum4")


 

728x90
반응형