데이터 시각화는 데이터 분석 결과를 쉽게 이해할수 있도록 시각적으로 표현하는 과정임
데이터를 요약하고, 한눈에 살펴볼수있도록 돕는 시각화가 필수임
필수요소
정보 이해를 돕는 데이터 구조 파악
적절한 데이터 표현 기법 사용
효과적인 시각화 디자인
실무에서 가장 많이 사용되는 시각화 도구
treemap(트리맵 생성)
사각 타일의 형태로 구성 데이터에 존재하는 계층구조 표현가능
treemap() 함수
treemap(data,
index=c(“계층구조1”, “계층구조2”),
vSize = “크기 기준변수”)
install.packages("treemap") #패키지 설치
library(treemap) #패키지 불러오기
data("GNI2014") #데이터 불러오기
head(GNI2014) #데이터 확인하기
treemap(GNI2014,
index = c("continent", "iso3"), #계층구조 설정
vSize = "population", #타일 크기
vColor = "GNI", #타일 색상
type = "value", #타일 컬러링 방법
bg.labels = "yellow", #레이블 배경색
title = "세계 GNI") #트리맵 제목
symbols(버블차트 생성)
산점도 위에 버블의 크기로 정보를 표시하는 시각화 방법
별도의 패키지 설치 안해도됌
symbols() 함수
symbols(x축 변수, y축 변수,
circles = 원 기준 변수)
state <- data.frame(state.x77) #매트릭스 -> 데이터프레임 변환
symbols(state$Illiteracy, state$Murder, #원의 x, y 좌표의 열
circles = state$Population, #원의 반지름 열
inches = 0.3, #원의 크기 조절 값
fg = "white", #원의 테두리 색
bg = "lightgray", #원의 바탕색
lwd = 1.5, #원의 테두리 두께
xlab = "문맹률", #x축 범례
ylab = "살인율", #y축 범례
main = "문맹률과 살인율 버블차트") #버블차트 제목
text(state$Illiteracy, state$Murder, #텍스트가 출력될 x, y 좌표
rownames(state), #출력할 텍스트
cex = 0.6, #폰트 크기
col = "brown") #폰트 컬러
mosaicplot(모자이크 플롯 생성)
다중변수 범주형 데이터에 대해 각 변수의 그룹별 비율을 면적으로 표시하여 정보를 전달
mosaicplot() 함수
mosaicplot(~ x축변수+ y축변수,
data = 데이터프레임)
data(mtcars)
mosaicplot(~gear+vs,
data = mtcars,
color = TRUE,
main = "Gear & Vs")
ggplot(데이터 시각화 통합 도구)
기본함수를 사용해 그래프를 그릴수있지만, 더욱 심미적인 그래프 작업을 위해 ggplot패키지를 주로 사용
install.packages("ggplot2")
library(ggplot2)
기본구조
ggplot(data = 데이터프레임, aes(x=x축 변수, y=y축 변수)) # 그래프 틀
+ <geom_FUNCTION>(stat=“identity”, width =수치, fill ="컬러") # 그래프 형태
막대 그래프
범주형 변수에 대한 값의 빈도 개수를 표시하는 그래프
library(ggplot2) #ggplot 패키기 가져오기
month <- c(1, 2, 3, 4, 5, 6) #월 벡터
weight <- c(40, 48, 47, 45, 43, 39) #몸무게 벡터
df <- data.frame(month, weight) #월 & 몸무게 데이터프레임
ggplot(data=df, aes(x = month, y = weight)) #x, y축 지정
+ geom_bar(stat = "identity", width = 0.8, fill = "steelblue")
#막대 높이, 막대 폭, 막대 색상 지정하여 그래프 생성
선그래프
무언가가 지속적으로 변화하는것을 기록할때 유용
library(ggplot2)
head(Orange)
ggplot(data= Orange,
aes(x = age, y = circumference)) # 그래프 작성 대상 지정
+ geom_line(aes(color = Tree)) # 선그래프 생성
산점도
변수간의 상관관계를 표현하기 위해 사용
평균에서 벗어난 이상치 값 파악할때 유용
data(mtcars)
library(ggplot2)
ggplot(data=mtcars, aes(x = hp, y = mpg))
+ geom_point()
상자 그래프
연속형 변수에 대한 데이터 분포를 표시
최소 최대값을 표시하며 분포와 이상치를 찾는데 특화됨
library(ggplot2)
ggplot(data=mtcars, aes(y = hp)) + geom_boxplot()
차원축소란 고차원 데이터를 2-3차원으로 축소하는 기법
차원축소 이유 : 2~3차원으로 축소된 데이터로 산점도를 작성하여 데이터 분포 확인을 위해
차원축소 방법 : 3차원 상의 물체를 빛에 비추면 그림자가 생기는 것과 비슷한 방법 활용
Rtsne() 함수 사용
library(Rtsne)
library(ggplot2)
library(survival)
cancer <- gbsg[, c("age", "size", "grade", "nodes")] #gbsg 데이터셋 중 필요한 열만 추출
grade <- cancer$grade #grade 열 추출
#4차원 데이터를 2차원으로 축소하기
tsne <- Rtsne(cancer, dim = 2, perplexity = 10, check_duplicates = FALSE)
#차원축소 결과 시각화
tsneDF <- data.frame(tsne$Y)
ggplot(data=tsneDF, aes(x=X1, y=X2, color = grade)) + geom_point(size = 2)
요약정리
데이터 시각화
– 트리맵 treemap() 함수
treemap(data, index=c(“계층구조1”, “계층구조2”), vSize=“크기 기준변수”)
– 버블차트 symbols() 함수
symbols(x축 변수, y축 변수, circles = 원 기준 변수)
– 모자이크 플롯 mosaicplot() 함수
mosaicplot(~ x축 변수 + y축 변수, data = 데이터프레임)
ggplot
ggplot(data = 데이터프레임, aes(x=x축 변수, y=y축 변수)) # 그래프 틀
+ <geom_FUNCTION>(stat=“identity”, width =수치, fill ="컬러") # 그래프 형태
– geom_FUNCTION
geom_bar: 막대 그래프
geom_line: 선 그래프
gom_point: 산점도
geom_boxplot: 상자 그래프
차원 축소
– Rtsne(데이터프레임, dim = 차원 수, perplexity = 10, check_duplicate= F)