- 期間を持った時系列データをグラフに出したかった。 ガントチャートのような。
library("dplyr")
##
## Attaching package: 'dplyr'
##
## The following objects are masked from 'package:stats':
##
## filter, lag
##
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
"2014-10-01 00:00:00" %>%
as.POSIXct %>%
seq(.,len=24,by="1 hour") -> s # 時系列ベクトル作成
head(s)
## [1] "2014-10-01 00:00:00 JST" "2014-10-01 01:00:00 JST"
## [3] "2014-10-01 02:00:00 JST" "2014-10-01 03:00:00 JST"
## [5] "2014-10-01 04:00:00 JST" "2014-10-01 05:00:00 JST"
item<-LETTERS[1:length(s)] %>% paste("SCHEDULE_",.,sep="")
head(item)
## [1] "SCHEDULE_A" "SCHEDULE_B" "SCHEDULE_C" "SCHEDULE_D" "SCHEDULE_E"
## [6] "SCHEDULE_F"
data.frame(
name=item[order(rnorm(length(item)))], # ランダムソート
start_time=s,
end_time=s+60*60
) -> time.df # ラグをもつデータフレームを作成
head(time.df)
## name start_time end_time
## 1 SCHEDULE_N 2014-10-01 00:00:00 2014-10-01 01:00:00
## 2 SCHEDULE_K 2014-10-01 01:00:00 2014-10-01 02:00:00
## 3 SCHEDULE_A 2014-10-01 02:00:00 2014-10-01 03:00:00
## 4 SCHEDULE_C 2014-10-01 03:00:00 2014-10-01 04:00:00
## 5 SCHEDULE_G 2014-10-01 04:00:00 2014-10-01 05:00:00
## 6 SCHEDULE_B 2014-10-01 05:00:00 2014-10-01 06:00:00
library("ggplot2")
# 描画時のフォント設定
windowsFonts(consolas = windowsFont("Consolas")) # http://sudori.info/stat/stat_fig_font.html
myplot_opt<-list(
theme(text=element_text(family="consolas"))
)
p <- qplot(data=time.df,x=name,ymin=start_time,ymax=end_time,geom="linerange")+myplot_opt
p+coord_flip() # 軸の入れ替え

# 描画順序を時系列順に変更するため nameの水準集合(levels)を変更。
time.df$name <- factor(time.df$name,levels=rev(time.df$name))
p <- qplot(data=time.df,x=name,ymin=start_time,ymax=end_time,geom="linerange")+myplot_opt
p+coord_flip() # 軸の入れ替え

# 両端を点で描画
p+coord_flip()+
geom_point(aes(y=start_time))+
geom_point(aes(y=end_time))
