我有这个数据框
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轴上添加两个点。
答案 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)
答案 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))