데이터 시각화 [혼자 공부하는 R 데이터 분석 5주차]

김서윤·2025년 8월 14일
0
post-thumbnail

그래프 그리기

  • 데이터 시각화
    복잡해 보이는 수치 데이터를 이미지화하여 누구나 수비게 내용을 이해할 수 있도록 시각적으로 전달하는 것

그래프 기본 틀 그리기 : ggplot()함수

ggplot2 패키지에는 각종 그래프 함수가 포함되어 있음
기본적으로 우리가 알고 있는 대부분의 시각화는 이 패키지로 해결 가능

  • ggplot() 함수
    그래프를 표현하는 좌표를 그리기 ㅜ이한 판을 짜는 함수
ggplot(데이터 세트, aes(데이터 속성))
# aes()함수를 이용해 x축과 y축에 변수를 매핑하여 그래프의 가장 기본 틀을 생성
  • 그래프 기본 틀 생성하기
str(airquality)
ggplot(airquality, aes(x = Day, y = Temp))

위의 코드를 실행하면 plots 칸에 아래와 같은 그래프의 기본 틀이 생성됨

산점도 그리기 : geom_point()함수

매핑을 위해 작성한 ggplot()함수 뒤에 +geom_point()만 추가로 입력하면 그릴 수 있음

ggplot(airquality, aes(x = Day, y = Temp)) +  geom_point()

추가로 사이즈와 크기도 수정

geom_point(size = 크기 , color = "색상")
# 점 크기의 기본값은 1.5

선 그래프 그리기 : geom_line()함수

산점도와 마찬가지로 기존 geom_point() 함수 뒤에 +geom_line()함수 입력

ggplot(airquality, aes(x = Day, y = Temp)) +  geom_line()

막대 그래프 그리기 : geom_bar()함수

막대 그래프에서는 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")

상자 그림 그리기 : geom_boxplot()함수

airquality 데이터 세트를 이용해서 날짜별 온도 분포를 확인해보기

날짜별로 온도 분포를 확인해야 하므로 group 옵션에 day 변수를 지정하여 날짜별로 그룹을 설정

ggplot(airquality, aes(x = Day, y = Temp, group = Day )) + geom_boxplot()

히스토그램 그리기 : geom_histogram()함수

ggplot(airquality, aes(Temp)) + geom_histogram()

stat_bin() using bins = 30. Pick better value with binwidth.
위와 같은 안내 메시지가 같이 나타나는데 막대 구간을 30개로 조정했다는 의미이므로 직접 지정하고 싶다면 binwidth 옵션을 사용하여 아래와 같이 작성

ggplot(airquality, aes(Temp)) + geom_histogram(binwidth=1)

그래프에 그래프 더하기

ggplot(airquality, aes(x = Day, y = Temp)) + geom_line() + geom_point()


각 괄호 안에 크기와 색상을 조정하여 마음에 드는 그래프를 그리면 완성!!



그래프 객체 추가하기

사선 그리기 : geom_abline()함수

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()함수

평행선을 그래프에 추가하면 평행선을 기준으로 그래프 변동 추이를 좀 더 명확하게 파악할 수 있음

geom_hline(yintercept = y절편)
  • 그래프에 평행선 그리기
ggplot(economics, aes(x = date, y = psavert)) + geom_line() + geom_hline(yintercept = mean(economics$psavert))


이때 yintercept 옵션 값은 직접 수치로 입력해도 되지만, 함수를 사용할 수 있으며 여기서는 평균 값에 평행선을 그리므로 평균을 구하는 mean()함수를 yintercept 옵션에 지정

수직선 그리기 : geom_vline()함수

geom_vline(xintercept = x절편)

만약 날짜로 수직선을 그린다면, as.Date()함수를 이용해 날짜 형식으로 변환

레이블 입력하기 : geom_text()함수

그래프 제목이나 축 제목을 지정하는 것과는 다르게 그래프 위에 텍스트가 직접 표현됨

geom_text(aes(label = 레이블, vjust = 세로 위치, hjust = 가로 위치))

데이터 레이블을 입력할 위치에서 세로와 가로 값을 모두 0으로 입력하면 레이블을 각 점의 오른쪽 위, +rkqtdms 왼쪽/아래, -값은 오른쪽/위에 표시

도형 및 화살표 넣기 : annotate()함수

그래프 위에 사각형이나 화살표 등으로 특정 영역을 강조할 때 사용

annotate("모양", xmin = x축 시작, xmax = x축 끝, ymin = y축 시작, ymax = y축 끝)

alpha 옵션 = 투명도
fill 옵션 = 채우기 색상

  • 화살표의 경우
    모양을 결정하는 위치에 선을 의미하는 segment를 입력
    화살표를 의미하는 arrow = arrow() 옵션을 추가
    또, 선 스타일의 도형은 x, xend , y, yend로 표현

그래프 제목 및 축 제목 추가하기 : labs()함수

labs(x = "x축명", y = "y축명", title = "그래프 제목")

디자인 테마 적용하기 : theme()함수

theme_gray()함수 : 회색 바탕과 흰 선
theme_bw()함수 : 흰 바탕과 회색 선
theme_linedraw()함수 : 흰 바탕과 가늘고 검은 선
theme_light()함수 : 밝은 회색 바탕
theme_dark()함수 : 어두운 바탕
theme_minimal()함수 : 단순한 배경
theme_classic()함수 : 눈금과 안내선이 없는 기본 바탕
theme_void()함수 : 가장 간결한 바탕


지도 시각화 : ggmap 패키지

R에서는 지도를 API로 불러와 시각화

구글 지도 API 키 발급받기

  1. 구글 지도 홈페이지에서 [Get started] 클릭
  2. 구글 클라우드 플랫폼을 처음 사용하는 계정이라면 'My First Project' 프로젝트의 결제 사용 설정 창이 나타날 수 있으며 [결제 계정 만들기]를 클릭하여 가입 진행
  3. 약관 동의 후 계정 정보에 국가는 대한민국, 조직 설명 개인 프로젝트로 선택하고 계속 클릭
  4. 본인 확인
  5. 결제 정보를 확인 (계정 유형은 개인으로 선택하고 이름 및 주소 입력 후 계속)
  6. 결제 수단 입력
  7. 가입이 완료되어 구글 지도 플랫폼 사용 설정 화면으로 이동
  8. API 발급 완료
    키를 잘 저장해두고 [데모 빌드] 클릭
  9. API 키 보호 대화상자가 나타나면 API 호출 제한으로 생기는 오류를 방지하기 위해 나중에 클릭 후 실습 진행

ggmap 패키지로 구글 지도 활용하기

  • register_google()함수

발급받은 구글 지도 API키를 등록

register_google(key = "사용자 API 키")
  • get_googlemap()함수
    설정한 위치를 지도로 가져오는 함수
get_googlemap(center, maptype = "지도 유형")
## center : 위도와 경도 값을 넣거나 위치를 포함하는 문자열
## maptype : 가져올 지도 유형 지정
## 지도 유형 : terrain(지형), satellite(인공위성), roadmap(로드맵), hybied(인공위성 + 로드맵)
### 지도 유형 기본값 : terrain(지형)
  • ggmap()함수
    위치 데이터를 지도로 시각화

  • geocode()함수
    위치를 포함하는 문자열(지명 혹은 주소)을 위도와 경도 값으로 반환

profile
데이터 분석 취업 준비중

0개의 댓글