복잡해 보이는 수치 데이터를 이미지화하여 누구나 수비게 내용을 이해할 수 있도록 시각적으로 전달하는 것
ggplot2 패키지에는 각종 그래프 함수가 포함되어 있음
기본적으로 우리가 알고 있는 대부분의 시각화는 이 패키지로 해결 가능
그래프를 표현하는 좌표를 그리기 ㅜ이한 판을 짜는 함수
ggplot(데이터 세트, aes(데이터 속성))
# aes()함수를 이용해 x축과 y축에 변수를 매핑하여 그래프의 가장 기본 틀을 생성
str(airquality)
ggplot(airquality, aes(x = Day, y = Temp))
위의 코드를 실행하면 plots 칸에 아래와 같은 그래프의 기본 틀이 생성됨
매핑을 위해 작성한 ggplot()함수 뒤에 +geom_point()만 추가로 입력하면 그릴 수 있음
ggplot(airquality, aes(x = Day, y = Temp)) + geom_point()
추가로 사이즈와 크기도 수정
geom_point(size = 크기 , color = "색상")
# 점 크기의 기본값은 1.5
산점도와 마찬가지로 기존 geom_point() 함수 뒤에 +geom_line()함수 입력
ggplot(airquality, aes(x = Day, y = Temp)) + geom_line()
막대 그래프에서는 aes()함수의 x축만 지정하면 됨
ggplot(mtcars, aes(x = cyl)) + geom_bar(width = 0.5)
위의 경우 x축에 값이 없는 범주인 5~7까지 포함되어 있는데 빈 범주를 제외하고 싶다면 수치형인 데이터를 범주화할 수 있는 factor()함수를 사용
ggplot(mtcars, aes(x = factor(cyl) )) + geom_bar(width = 0.5)
geom_bar()함수 안에 aes()함수를 이용하여 누적할 열을 지정
누적할 변수가 값이 비어있는 범주면 누적이 제대로 표현되지 않아 반드시 factor() 함수를 사용해야함
이때, fill 옵션으로 factor(gear)를 지정하면 gear 변수의 범주별 빈도가 막대 그래프에 색상으로 채워짐
ggplot(mtcars, aes(x = factor(cyl) )) + geom_bar(aes(fill = factor(gear)))
선버스트 차트 = 계층 구조의 데이터를 수준별로 비율을 표시하는 그래프
누적 막대 그래프에 coord_polar()함수를 추가하면 선버스트 차트로 변환 가능
이를 도넛 처트로 바꾸고 싶다면 theta = "y"를 추가
ggplot(mtcars, aes(x = factor(cyl) )) + geom_bar(aes(fill = factor(gear))) + coord_polar(theta = "y")
airquality 데이터 세트를 이용해서 날짜별 온도 분포를 확인해보기
날짜별로 온도 분포를 확인해야 하므로 group 옵션에 day 변수를 지정하여 날짜별로 그룹을 설정
ggplot(airquality, aes(x = Day, y = Temp, group = Day )) + geom_boxplot()
ggplot(airquality, aes(Temp)) + geom_histogram()
stat_bin()
usingbins = 30
. Pick better value withbinwidth
.
위와 같은 안내 메시지가 같이 나타나는데 막대 구간을 30개로 조정했다는 의미이므로 직접 지정하고 싶다면 binwidth 옵션을 사용하여 아래와 같이 작성ggplot(airquality, aes(Temp)) + geom_histogram(binwidth=1)
ggplot(airquality, aes(x = Day, y = Temp)) + geom_line() + geom_point()
각 괄호 안에 크기와 색상을 조정하여 마음에 드는 그래프를 그리면 완성!!
geom_abline(intercept = 절편, slope = 기울기)
ggplot(economics, aes(x = date, y = psavert)) + geom_line() + geom_abline(intercept = 12.18671, slope = -0.0005444)
y 절편 값 12.18671로 직선과 만나는 y축 좌표가 정해지고, 기울기 값 -0.0005444로 직선의 경사도가 표현
평행선을 그래프에 추가하면 평행선을 기준으로 그래프 변동 추이를 좀 더 명확하게 파악할 수 있음
geom_hline(yintercept = y절편)
ggplot(economics, aes(x = date, y = psavert)) + geom_line() + geom_hline(yintercept = mean(economics$psavert))
이때 yintercept 옵션 값은 직접 수치로 입력해도 되지만, 함수를 사용할 수 있으며 여기서는 평균 값에 평행선을 그리므로 평균을 구하는 mean()함수를 yintercept 옵션에 지정
geom_vline(xintercept = x절편)
만약 날짜로 수직선을 그린다면, as.Date()함수를 이용해 날짜 형식으로 변환
그래프 제목이나 축 제목을 지정하는 것과는 다르게 그래프 위에 텍스트가 직접 표현됨
geom_text(aes(label = 레이블, vjust = 세로 위치, hjust = 가로 위치))
데이터 레이블을 입력할 위치에서 세로와 가로 값을 모두 0으로 입력하면 레이블을 각 점의 오른쪽 위, +rkqtdms 왼쪽/아래, -값은 오른쪽/위에 표시
그래프 위에 사각형이나 화살표 등으로 특정 영역을 강조할 때 사용
annotate("모양", xmin = x축 시작, xmax = x축 끝, ymin = y축 시작, ymax = y축 끝)
alpha 옵션 = 투명도
fill 옵션 = 채우기 색상
- 화살표의 경우
모양을 결정하는 위치에 선을 의미하는 segment를 입력
화살표를 의미하는 arrow = arrow() 옵션을 추가
또, 선 스타일의 도형은 x, xend , y, yend로 표현
labs(x = "x축명", y = "y축명", title = "그래프 제목")
theme_gray()함수 : 회색 바탕과 흰 선
theme_bw()함수 : 흰 바탕과 회색 선
theme_linedraw()함수 : 흰 바탕과 가늘고 검은 선
theme_light()함수 : 밝은 회색 바탕
theme_dark()함수 : 어두운 바탕
theme_minimal()함수 : 단순한 배경
theme_classic()함수 : 눈금과 안내선이 없는 기본 바탕
theme_void()함수 : 가장 간결한 바탕
R에서는 지도를 API로 불러와 시각화
발급받은 구글 지도 API키를 등록
register_google(key = "사용자 API 키")
get_googlemap(center, maptype = "지도 유형")
## center : 위도와 경도 값을 넣거나 위치를 포함하는 문자열
## maptype : 가져올 지도 유형 지정
## 지도 유형 : terrain(지형), satellite(인공위성), roadmap(로드맵), hybied(인공위성 + 로드맵)
### 지도 유형 기본값 : terrain(지형)
ggmap()함수
위치 데이터를 지도로 시각화
geocode()함수
위치를 포함하는 문자열(지명 혹은 주소)을 위도와 경도 값으로 반환