Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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 29 30
Tags
more
Archives
Today
Total
관리 메뉴

자료 매번 검색하기 귀찮아서 만든 블로그

GGPLOT2 - scale_x_date 사용하기 (Time series x축 다루기) 본문

R

GGPLOT2 - scale_x_date 사용하기 (Time series x축 다루기)

쿠키아버님 2021. 12. 4. 20:01

Time series 그림을 그릴 때, 날짜 표기형식이나 날짜의 범위, 날짜 간격 등을 정할 때 사용한다

 

library(ggplot2)

date <- seq(as.Date('2021-12-04'), as.Date('2022-12-03'), 'days')

values<-runif(365)

df <-data.frame(date=date, values=values)

ggplot(df)+
  geom_line(aes(date, values))

아래와 같은 그림이 있다고 할 때,

 

1. 날짜 표시 간격을 지정

2. 날짜 표시 형식을 지정

3. 날짜 범위 지정

을 위해 scale_x_date 를 사용한다

 

ggplot(df)+
  geom_line(aes(date, values))+
  scale_x_date(date_breaks = "1 months", #표시할 날짜 간격 지정
               date_labels = "%y-%m-%d", #표시 형식 지정
               limits = as.Date(c("2022-1-01", "2022-11-1")) #날짜 범위 지정
               )

※ 그림이 너무 작거나, 날짜 간격이 조밀한 경우 텍스트가 겹치는 현상이 발생하는데, 

이런 경우에는 폭을 넓히거나, 텍스트를 회전시키는 방법을 선택했다

 

ggplot(df)+
  geom_line(aes(date, values))+
  scale_x_date(date_breaks = "1 months", #표시할 날짜 간격 지정
               date_labels = "%y-%m-%d", #표시 형식 지정
               limits = as.Date(c("2022-1-01", "2022-11-1")) #날짜 범위 지정
               )+
  theme(axis.text.x = element_text(angle=90))

 

 

날짜 라벨과 간격을 수동으로 조절하고 싶은 경우, breaks와 labels를 사용한다

 

예를 들어서 1월, 5월, 11월만 축에 표현하고 싶은 경우, 아래와 같이 작성한다.

ggplot(df)+
  geom_line(aes(date, values))+
  scale_x_date(breaks=c(as.Date("2022-01-01"),
                        as.Date("2022-05-01"),
                        as.Date("2022-11-01")),
               labels=c("January", "May", "November"))

 

요렇게