공부중 .../데이터과학개론
ggplot2로 데이터 시각화를 해보자
Chelsey
2022. 12. 8. 17:12
728x90
ggplot2의 구조는 다음과 같다.
tidyverse의 생태계에 존재하는 ggplot2 ...
그래픽 문법을 바탕으로 둔다.
ggplotDATA|geom 계열의 몸체 + coord 계열이 좌표축 = plot
# 필수인 부분
ggplot(data)
+ geom_FUNCTION(aes))
# 옵션인 부분
+ coord_FUNCTION
+ sacle_FUNCTION
+ theme_FUNCTION
+ ...
# 그리고 최종 결과 저장하기
ggsave('finalplot.pdf')
여러 개의 함수를 추가할 수 있다.
- geom 계열 함수 여러 개를 병렬적으로 추가 가능
- 세부적 옵션은 coord 계열 함수, facet , scale , theme 계열 함수로 추가 가능
- ggplot() , geom 계열 함수는 반드시! 있어야함
시각화를 하자면 ... 먼저 ...
패키지를 활성화해야 한다.
먼저 설치를 하자
library(tidyverse)
"""이러면 tidyverse 패키지도 활성화시켜 자동으로
ggplot2 , dpylyr, tibble data frame 사용환경이 갖춰진다."""
""" or
ggplot2 만 활성할 수도 있다"""
library(ggplot2)
ggplot()
시각화를 시작하는 단계
보통 aes() 함수 aesthetic 이 함께 존재한다 - 시각화 옵션 설정
ggplot(data, aes(x, y, color=factor(cy1))) + geom_point()
cy1 : 라벨 종류에 따라
geom 계열 함수
기본적으로 생성된 그래프에 추가로 적용 -> 새로운 시각화 구현
ggplot(data, aes(x, y, color=factor(cy1))) + geom_point()
+ geom_smooth( aes(group=123), se=FALSE )
group=123 은 factor로 만든 그룹만으로 표현할 때 라벨별로 따로 곡선이 적용되는 것이
그래프 전체적으로 곡선이 적용되도록 만들어 준다. ( => 부드러운 곡선의 그래프 완성!)
labs() , geom_text() , geom_label()
그래프에 제목, 축이름, 범례 지정하여 표현
특정 관측치를 출력할 때 geom_text() , geom_label()
데이터 프레임 편집 가능
show.legend=FALSE 옵션 지정해 범례에 문자가 출력되는 오류 방지
너무 많은 레이블이 출력돼 시각화에 어려움이 생기면 데이터 프레임 편집해서 몇 개의 관측치만 선별해서 정보 출력 가능
ggplot(data, aes(x, y, color=factor(cy1)))
+ geom_point()
+ labs( title = "Title" ,
+ x="xlabel" , y= "ylabel", capion="Data Source",
+ color="Cylinder")
+ geom_text(aes(label=rowname), # rowname 데이터만 뽑아낸다?
nudge_x=2.5, nudge_y=1.5, label.size=0.25, # 좌표의 관측치 값들의 라벨값 텍스트 꾸미기
show.legend=FALSE)
scale_x_continuous(), scale_y_continuous(), scale_color_discrete()
- 그래프의 척도를 조절할 수 있다. 기본값으로 나타나는 척도 값, 범례 값을 수정, 삭제할 수 있음.
(x , y 축에 표시된 값들) - 출력할 내용이 없음 : label = NULL
# 척도, 범례 전부 삭제
+ scale_x_continous(labels=NULL) + scale_y_continous(labels=NULL)
+ scale_color_discrete(label=NULL)
# 척도만 삭제
+ scale_x_continous(labels=NULL) + scale_y_continous(labels=NULL)
"""
breaks option
수직축 연속형 변수의 범위:10~40, 10씩 증가. 하는 척도 지정
삭제가 아닌 x는 기본값, y는 정해진 지정값으로 표현"""
+ scale_y_continuous(breaks=seq(10,40, by=10)
# 척도, 범례를 변수로 저장도 가능하다
x_axis <- scale_x_continuous(limits = range(data$col1))
coord_cartesian()
- x, y 범위 지정해서 범위내의 것만 출력시키기
- zooming
+ coord_cartesian(xlim=c(100, 150), ylim=c(10, 30))
"""
x축은 100에서 150, y축은 10에서 30 범위만 출력한다
"""
범례와 디자인 편집
심미적 요소를 고려한다 - 아름답게...
- 내재한 데이터 정보를 효과적으로 전달하게끔 쉽고 빠른 유도가 필요하다
- 데이터 과학자에게 인문학적 소양이나 심미적인 감각이 요구되는 이유이다.
- ggplot2 에서 theme() 로 범례 위치를 조정할 수 있다.
- 'legend.position='원하는 위치' 로 그래프에서 범례(라벨값)의 위치를 변경한다. (top, bottom...)
- guide_legend() 로 범례를 표시하는 행과 열의 수와 크기를 변경한다.
theme 계열 함수
- 그래프의 디자인 요소를 변경할 수 있다.
- 범례의 위치, 크기를 보존하기 원한다면 theme 계열의 함수로 배경 디자인을 변경한 다음 범례를 편집해야 한다.
+ theme_classic() """ 이걸 먼저, theme 계열 배경 디자인 변경 """
+theme(legend.position="bottom") """ 범례 편집 """
728x90