티스토리 뷰
반응형
ggplot2 로 그래프를 그리다보면, 날짜별로 막대/선그래프를 그릴때가 있다. 날짜형식이다 보니, 월/일 아니면 일자만 나오게 하던가 또는 요일도 덧붙여서 나오게 하고 싶은 생각이 들곤 하는데 어떻게 설정해야할지 막막하다. 하지만 scale_x_date 함수를 사용하게되면 대부분의 x축상에 나타는 날짜 표현방식을 쉽게 설정할 수 있다. 아래의 경우는 일자(요일) 이런 방식으로만 표현했다.
오늘 다뤄볼 데이터는 질병관리청에서 관리하는 확진자수 데이터이고, 엑셀상의 데이터를 r로 읽을때, 날짜가 숫자형으로 나오기때문에 아래 소스상에 보면 아시듯이 origin 을 1899-12-30 으로 지정해서 변환했다. 어쨋든 최근 7일간의 확진자수를 가져왔다.
library(tidyverse)
library(patchwork)
library(readxl)
library(lubridate)
tb_covid1 = read_excel(path = "~/20220726/covid19_220726.xlsx")
tb_covid2 = tb_covid1 %>%
rename(date = 일자, total = `계(명)`, local = `국내발생(명)`,
imported = `해외유입(명)`, deaths = `사망(명)`) %>%
tail(-1) %>%
mutate(date = as.Date(as.integer(date), origin = "1899-12-30")) %>%
mutate_at(3:5, str_replace, pattern = "-", replacement ="0") %>%
mutate_at(3:5, as.double) %>%
mutate(wday = wday(date, label = T), .after = date) %>%
mutate(month = month(date), .after = "wday") %>%
mutate(week = isoweek(date), .after = "month")
tb_covid_2207 = tb_covid2 %>% filter(date >= ymd('2022-07-26') - days(7-1))
# A tibble: 7 × 8
date wday month week total local imported deaths
<date> <ord> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2022-07-20 수 7 29 76379 75952 427 12
2 2022-07-21 목 7 29 71146 70829 317 17
3 2022-07-22 금 7 29 68603 68283 320 31
4 2022-07-23 토 7 29 68548 68255 293 30
5 2022-07-24 일 7 29 65428 65096 332 18
6 2022-07-25 월 7 30 35883 35540 343 17
7 2022-07-26 화 7 30 99327 98974 353 17
이 데이터를 활용해서 막대그래프를 그려보면, x축의 값이 내가 원하는 간격도 아니고, 표현방식도 요일은 나오지도 않고 있다.
ggplot(tb_covid_2207, aes(date, total)) +
geom_col(width = 0.6)
이렇게 하면 듬성듬성 x축 표시가 매일 하나씩 나오게 된다.
ggplot(tb_covid_2207, aes(date, total)) +
geom_col(width = 0.6) +
scale_x_date(date_breaks = "1 days")
반응형
근데 내가 원하는 건 년도-월은 빼고, 일자에 요일만 붙여서 간략하게 하고 싶었다. 간단하다 아래와 같이 날짜 포맷을 지정해주면된다. 포맷관련 문자열 정보는 여기를 클릭해서 확인하면 된다.
ggplot(tb_covid_2207, aes(date, total)) +
geom_col(width = 0.6) +
scale_x_date(date_labels = "%d(%a)", date_breaks = "1 days")
그런데 한글로는 못하는 걸까? 아니다. locale설정만 바꿔주고 다시 그래프를 실행하면 된다.
Sys.setlocale("LC_ALL", "ko_KR.UTF-8")
이렇게 해서 완성한게, 아래 이미지 이다.
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 맥북
- SVN
- ipTIME
- 이클립스
- eclipse
- github
- 도넛차트
- 셀프개통
- 알뜰요금제
- ubuntu
- ggplot2
- Oracle
- MyBatis
- javascript
- python
- Google Chart Tools
- Spring
- 아이맥
- ggplot
- R
- vagrant
- java
- 마인크래프트
- docker
- heroku
- 자급제폰
- MySQL
- ktm모바일
- 막대그래프
- MongoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함