데이터 시각화(with ggplot2) 1편
ggplot2 패키지는 R, python에서 그래프를 쉽게 그릴 수 있는 패키지입니다. 처음엔 구조가 복잡해 보일 수는 있어도, 명령어 패턴만 파악하면 다양한 그래프를 자유자재로 그릴 수 있습니다. 또한 R에서의 기타 시각화 패키지들 중 상당 수는 ggplot2를 활용하는 패키지가 많기 때문에, R을 활용할 때, ggplot2를 알고 있는 것이 매우 중요합니다. ggplot2의 자세한 부분은 인터넷에서 쉽게 찾을 수 있기 때문에, 여기서는 대략적인 것만 다루고 넘어가도록 하겠습니다.
- 그리는 방법
손으로 그래프 그리는 것과 똑같다고 생각하면 됩니다. 손으로 그래프를 그리는 경우는 다음과 같을겁니다.
- 범례, 제목, 글씨 등 기타 옵션을 수정한다. ggplot2로 그리는 방법
축을 그린다 -> ggplot(데이터명,aes(x=변수1,y=변수2)) (x축, y축을 정해준다.)
- ggplot은 ggplot2의 시작 명령어이며, 여기서 그래프를 그릴 데이터와, 변수를 설정해 줍니다.
- aes는 aesthetic의 약자로, 그래프에 변수를 설정해줄 때는 무조건 aes안에 들어가 있어야 합니다.
그래프를 그린다 -> geom_histogram (히스토그램을 그린다.)
- geom_bar( ) , 막대도표를 그리겠다.
- geom_histogram( ) , 히스토그램을 그리겠다.
- geom_boxplot( ), 박스플롯을 그리겠다.
- geom_line( ), 선 그래프를 그리겠다.
기타 옵션을 수정하여, 그래프를 정교하게 그린다.
- labs( ) , 범례 제목 수정
- ggtitle( ), 제목 수정
- xlabs( ), ylabs( ), x축 y축 이름 수정
1. 축을 그린다.
2. 그래프를 그린다.
그래프 종류
시각화를 위한 그래프는 여러 종류의 그래프들이 있습니다. 그 중 대표적인 그래프들을 다룰 예정입니다. 하지만 먼저 알아두어야 할 것이, 시각화 방법도 표현하고자 하는 변수들의 특성에 따라, 결정이 됩니다. 평소 그래프를 볼 때는 별 생각이 없었을 수 있어도, 그릴 때는 항상 염두에 두고 있어야 합니다.
막대 도표(Bar plot) [이산형 변수 하나를 집계 내는 그래프, 1차원]
자주 봤을 막대 도표입니다. 막대 도표는 이산형 변수를 x축으로 두고, y축은 자동으로 집계(Counting)된 값들을 표현하는 도표입니다.
library(ggplot2) # 패키지 부착
# 기본
ggplot(DATA,aes(x=salary)) + #x축에 salary 설정, y축은 자동으로 집계된 값이 표현되기 때문에 설정 X
geom_bar()
# 색 설정_1
ggplot(DATA,aes(x=salary)) +
geom_bar(fill = 'royalblue') # royalblue색으로 색 채우기
# 색 설정_2
ggplot(DATA,aes(x=salary)) +
geom_bar(aes(fill=left)) # left에 따라 색깔을 자동으로 부여, 변수로 설정해줄 때는 항상 aes안에 설정해줘야 됨.
# 범례 이름 편집
ggplot(DATA,aes(x=salary)) +
geom_bar(aes(fill=sales)) +
labs(fill = "Divided by left")
# 축 이름 편집
ggplot(DATA,aes(x=salary)) +
geom_bar(aes(fill=left)) +
labs(fill = "Divided by left") +
xlab("봉급") + ylab("") # ""의 경우 축 제목에 아무것도 표시 안하겠다는 의미
# 축 순서 바꾸기.
# 축 순서를 ggplot2에서 바꿀 수 있으나, 그래프마다 옵션 수정하는 것은 귀찮으니, 변수 자체의 순서를 바꾼 다음 표시하는 것이 효율적.
DATA$salary=factor(DATA$salary,levels=c("low","medium",'high'))
# Factor 변수인 salary의 levels 순서를 "low", "medium", "high" 순으로 변경
ggplot(DATA,aes(x=salary)) +
geom_bar(aes(fill=sales)) +
labs(fill = "Divided by Sales") +
xlab("봉급") + ylab("") # ""의 경우 축 제목에 아무것도 표시 안하겠다는 의미