每个因子的开始和结束日期的水平线

时间:2016-11-11 10:50:46

标签: r ggplot2

我有这个数据框

ses <- data.frame("Sport"=c("NBA", "NFL", "MLB", "NHL"), 
                  "reg_ses_start"=(as.Date(c("2016-10-25", "2016-09-08", "2016-04-03", "2016-10-12"))),
                  "reg_ses_end"=as.Date(c("2017-04-12","2017-01-01", "2016-11-02", "2017-04-09" )))

我想用水平线显示每项运动的开始和结束日期。我想使用ggplot,但不能真正看到我如何在x轴上添加两个点。

2 个答案:

答案 0 :(得分:1)

我首先使用as.POSIXct格式化日期:

ses <- data.frame(Sport = ses$Sport,
             start = as.POSIXct(ses$reg_ses_start, format="%Y-%m-%d"), 
             end = as.POSIXct(ses$reg_ses_end, format="%Y-%m-%d"))

您可以将geom_rect用于此

library(ggplot2)
ggplot() + geom_rect(data=ses, aes(xmin=start, xmax=end,
                              ymin=Sport, ymax=Sport, color=Sport),size=10)

enter image description here

答案 1 :(得分:0)

你想要这样的东西(如果你需要改变x / y轴标签)吗?

library(scales)
ses$SportID <- 1:4
ggplot() +
  geom_segment(data = ses, aes(x = reg_ses_start, y = SportID, xend = reg_ses_end, yend = SportID, col= Sport), size = 2)+
  scale_x_date( breaks=date_breaks("5 days")) + 
  xlab('Time') + 
  theme(axis.text.x = element_text(angle=90, vjust = 0.5))

enter image description here