1.1 Introduction
- ggplot2 : 그래프를 기술하고 구축하는 시스템인 그래픽 문법을 구현함.
cf) ggplot2의 이론적 토대에 대해 참고하고 싶으면 'The Layered Grammar of Graphics by Hadley Wickham'논문 참조
----https://vita.had.co.nz/papers/layered-grammar.pdf
1.1.1 Ready
- tidyverse설치 : R console 창에 다음과 같은 소스코드를 입력한다.
install.packages("tidyverse")
-tidyverse 로드 :
library(tidyverse)
── Attaching core tidyverse packages ─────────────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.0 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ───────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
- 다음과 같이 tidyverse 핵심 패키지들이 로드됨.
- 패키지는 한 번만 설치하면 되지만 but, 새로운 세션을 시작할 때마다 다시 로드해야 함
1.2 mpg DataFrame
- "엔진이 큰 차가 작은 차보다 연료를 더 많이 소비하는가?"라는 질문을 답하기 위해 그래프를 이용하는 것을 보일것이다.
- ggplot2에 있는 mpg Dataframe으로 답을 확인할 수 있음.
cf) Dataframe? : 변수들(열)과 관측값들(행)의 직사각형 형태 모음
cf) mpg? : 미 환경보호당국이 수집한 38개의 차 모델들에 대한 관측값들이 포함
- mpg파일을 열기 위해선 다음과 같이 실행가능하다.
mpg
# A tibble: 234 × 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
7 audi a4 3.1 2008 6 auto(av) f 18 27 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 audi a4 quattro 2 2008 4 manual(m6) 4 20 28 p compact
# ℹ 224 more rows
# ℹ Use `print(n = ...)` to see more rows
- mpg에는 다음과 같은 변수가 존재
displ : 엔진 크기 (단위 : 리터)
hwy : 고속도로에서의 자동차 연비(단위 : 갤런당 마일)
cf) 같은 거리를 주행할 때, 연비가 낮은 차는 연비가 높은차에비해 연료를 더 많이 소비
- mpg에 대해 더 알고자 한다면 콘솔창에 ?mpg를 실행하여 알수있음
1.3 ggplot 생성하기
- displ을 x축, hwy를 y축에 놓고 플롯을 그려보자 "해당 함수에 대해선 후에 서술한다. "
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y=hwy))
- 이 Plot을 통해 알수 있는 점 : 우하향관계, 즉 displ(엔진 크기)과 hwy(연료)이에 음의 관계가 있음을 시각적으로 알수있음.
- "엔진이 큰 차가 작은 차보다 연료를 더 많이 소비하는가?" 에 대한 질문에 답이 가능하다.
1.4 코드 해석
- ggplot2 에서는 ggplot() 함수로 Plot 시작함
- ggplot()을 하게 되면 좌표 시스템이 생성, 레이어를 추가 가능
- ggplot()의 첫 번째 인수 : 그래프에서 사용할 Data set
- geom_point() : 플롯에 점 레이어를 추가하여 산점도를 생성
cf) ggplot2에선 다양한. geom함수가 제공됨 --> 차후에 차차 알아갈 예정
cf) geom함수에는 각각 mapping인수가 존재.
cf) mapping ? : 데이터셋의 변수들이 시각적 속성으로 어떻게 매핑될지 정의
---> 해당 인수는 aes()와 쌍을 이름 aes()의 x,y인수는 x,y축으로 매핑될 변수를 지정함
1.5 Graph 작성 템플릿
ggplot(data = <Data>) +
<Geom Function>(mapping = aes(<Mapping>))
#<>로 둘러쌓인 부분은 해당되는 데이터 셋, 지옴 함수, 매핑모음으로 교환
1.6 연습문제.
Q1) ggplot(data = mpg)을 실행하면 무엇이 나오는가?
ggplot(data = mpg)
- 다음과 같이 빈 Plot이 생성됨
Q2) mpg의 행,열의 개수
- # A tibble: 234 × 11 : 즉 행의 개수 : 234개 , 열의 개수 : 11개
Q3) drv변수는 무엇을 나타내는가?
?mpg
- 해당코드를 통해 알아보자.
drv
the type of drive train, where f = front-wheel drive, r = rear wheel drive, 4 = 4wd
- 즉 자동차의 구륜 방식을 표기
- f : 전륜 구동 차량
- r : 후륜 구동 차량
- 4 : 사륜 구동 차량
Q4) hwy 대 cyl의 산점도를 만드시오
ggplot(data = mpg) +
geom_point(mapping = aes(x = hwy,y = cyl))
- x,y의 인수만 바꿔주면 된다.
- result
Q5) class 대 drv 산점도를 만들면 어떻게 되는가? 이 Plot이 유용하지 않은 이유를 서술하시오.
ggplot(data= mpg) +
geom_point(mapping = aes(x=class,y=drv))
- 다음과 같은 산점도가 나오게 되는데 해당 산점도Plot은 어떠한 연관관계도 없기 때문에 유용하지 않다.
'DS Study > R4DS(R언어)' 카테고리의 다른 글
[R4DS] [1-6] 위치 조정 (0) | 2024.03.30 |
---|---|
[R4DS] [1-5] 통계적 변환 (0) | 2024.03.30 |
[R4DS] [1-4] 기하 객체 (Geom 함수 정리) (0) | 2024.03.30 |
[R4DS] [1-3] Facet (0) | 2024.03.29 |
[R4DS] [1-2] 심미성 매핑 (0) | 2024.03.27 |