ggplot2 기초
2019. 4. 17. 13:19ㆍR/Basic
Data Visualiation의 필수 도구
기본 함수보다는 복잡하지만, 엑셀에도 구현하기 힘든 퀄리티와 복잡한 그래프를 순식간에 생성해 낸다
설치
이 쪽을 선택하면 설치와 로딩이 간편너무나도 유명한 패키지라서 tidyverse에 포함되어 있다.
# The easiest way to get ggplot2 is to install the whole tidyverse:
install.packages("tidyverse")
# Alternatively, install just ggplot2:
install.packages("ggplot2")
# Or the the development version from GitHub:
# install.packages("devtools")
devtools::install_github("tidyverse/ggplot2")
ggplot2의 레이어 구조
Data
데이터를 단순히 입력해서는 아무일도 일어나지 않는다
ggplot(data=mtcars)
AESTHETICS
aes(x, y, .... )
데이터를 표시할 축을 설졍해주는 단계. 역시 그래프가 생성되지 않는다
ggplot(data=mtcars, aes(x=mpg, y=wt))
GEOMETRICS
데이터를 좌표계에 뿌려줄 방법을 설정해주는 함수
ggplot(data=mtcars, aes(x=mpg, y=wt)) + geom_point()
ggplot(data=mtcars, aes(x=mpg, y=wt)) + geom_dotplot( binwidth = 2)
FACETS
Facet을 사용하면 동시에 여러개의 그래프를 출력할 수 있다.
특정 변수를 그룹화하여 소규모의 다양한 그래프를 출력한다
ggplot(data=mtcars, aes(x=mpg, y=wt))
+ geom_point()
+ facet_grid(gear ~ .) #Facets
-
facet_grid : 데이터를 그리드 패널로 변경
-
facet_wrap : 1차원 배치를 2 차원으로 변경
ggplot(data=mtcars, aes(x=mpg, y=wt)) + geom_point()
+ facet_wrap(~gear, ncol=2)
ggplot(data=mtcars, aes(x=mpg, y=wt))
+ geom_point()
+ facet_grid(gear ~cyl )
STATISTICS
aesthetic에 데이터를 매핑하기 전에 데이터를 요약할 필요가 있다.
geom에 관련된 기본 기능이 있지만, 더 명확한 결과물을 얻기 위해서는 다른 방법을 써야 한다
ggplot(data=mtcars, aes(x=mpg, y=wt))
+ geom_point()
+ facet_grid(gear ~ .)
+ stat_smooth()
COORDINATES
좌표 시스템은 좌표계를 변경할 수 있다.
-
데카르트 좌표 (cartesian coordinate)
-
극 좌표
-
원 좌표
ggplot(data=mtcars, aes(x=mpg, y=wt)) + geom_point()
+ facet_grid(gear ~ .) + stat_smooth()
+ coord_cartesian(xlim = c(13, 30))
ggplot(data=mtcars, aes(x=mpg, y=wt)) + geom_point()
+ facet_grid(gear ~ .) + stat_smooth()
+ coord_cartesian(xlim = c(1, 40))
THEME
ggplot(data=mtcars, aes(x=mpg, y=wt)) + geom_point()
+ facet_grid(gear ~ .) + stat_smooth()
+ coord_cartesian(xlim = c(13, 30)) + theme_dark()
ggplot(data=mtcars, aes(x=mpg, y=wt)) + geom_point()
+ facet_grid(gear ~ .) + stat_smooth()
+ coord_cartesian(xlim = c(13, 30)) + theme_dark()
+ theme(axis.text.x = element_text(colour="blue", size=rel(1.2)),
axis.title.x = element_text(size=rel(2)),
plot.background = element_rect(fill = 'green', colour = 'red'))