ggplot:日付ラベルの調整

顔妻です。

今回はggplotで時系列データを扱うときの軸ラベルや軸線の調整です。

通常のグラフ

何も設定しないとggplotが自動で判別して調整します。分析目的によって、より細かく調整したいときがあると思いますので詳しくみていきましょう。

library(tidyverse)
 d <- read.csv("https://raw.githubusercontent.com/maruko-rosso/datasciencehenomiti/master/data/ShopSales.csv")

theme_set(theme_bw())
# 年月日抽出
 d$date <- as.Date(d$date)
 d$year <- substr(d$date,start = 1,stop = 4) 
 d$month <- substr(d$date,start = 6,stop = 7) 
 d$day <- substr(d$date,start = 9,stop = 10) 

# x軸ラベル設定なし
 d %>% 
   group_by(date) %>% 
   summarise(sales = sum(price,na.rm = T)) %>% 
   ggplot(aes(x = date,y = sales)) +
   geom_line() 

日付軸の調整①

ラベルの間隔を3日おきに、自動調整と同じですがラベル名を月日にしてみましょう。

# x軸ラベルの感覚と、ラベルの表示令
 d %>% 
   group_by(date) %>% 
   summarise(sales = sum(price,na.rm = T)) %>% 
   ggplot(aes(x = date,y = sales)) +
   geom_line() +
   scale_x_date(date_breaks = "3 day",
                date_labels = "%m/%d"
                 )

今度は軸ラベルの間隔を2週間毎に、軸ラベルの文字を年月日に変更してみましょう。

# x軸ラベルの感覚と、ラベルの表示令
 d %>% 
   group_by(date) %>% 
   summarise(sales = sum(price,na.rm = T)) %>% 
   ggplot(aes(x = date,y = sales)) +
   geom_line() +
   scale_x_date(date_breaks = "2 week",
                date_labels = "%y/%m/%d"
   )

日付軸の調整②

次は、軸のminor部分を調整しましょう。軸ラベル名を縦線毎にいれるとうるさくなるので、オススメの使い方です。

# minorラベルの調整
 d %>% 
   group_by(date) %>% 
   summarise(sales = sum(price,na.rm = T)) %>% 
   ggplot(aes(x = date,y = sales)) +
   geom_line() +
   scale_x_date(date_breaks = "3 day",
                date_labels = "%m/%d",
                minor_breaks = "1 day"
 )