微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以条码样式绘制时间序列事件

如何解决如何以条码样式绘制时间序列事件

如何以条形码样式绘制时间序列事件,如下面的手工制作示例?

barcode style time series plot

对于测试,可以使用以下动物园系列:

Tdate = c("2020-04-20","2020-04-22","2020-05-16","2020-05-29","2020-06-20","2020-07-02","2020-07-18","2020-07-19","2020-07-22","2020-09-14","2020-10-10","2020-10-15","2020-11-22","2020-12-22","2020-12-24","2020-12-25")
Tevents = data.frame(station1=c(1,1,1),station2=c(1,station3=c(0,0) )
Zevents<-zoo(Tevents,as.Date(Tdate))

解决方法

你可以:

  • pivot_longer 数据根据station
  • geom_vline 绘制垂直线
  • 使用 facet_wrap 获取每个 station 的情节
library(tidyr)
library(dplyr)
library(ggplot2)

Tevents$dat <- as.Date(Tdate)


data <- Tevents %>% pivot_longer(cols = contains('station'),names_to = 'station')

ggplot(data) + geom_point(aes(x = dat,y = 2))+
               geom_vline(aes(xintercept  = dat),data = filter(data,value == 1)) +
               coord_cartesian(ylim = c(0,1))+
               facet_wrap(~station,ncol = 1,strip.position = 'left') +
               theme(axis.title.y       = element_blank(),axis.text.y        = element_blank(),axis.ticks.y       = element_blank(),panel.grid.minor.y = element_blank(),panel.grid.major.y = element_blank())

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。