使用 ggplot 和 lubridate 创建季度访谈

Creating a quarterly time interview using ggplot and lubridate

我使用 ggplot 和 lubridate 创建了一个时间序列图,描述了两年期间的疾病事件。我似乎无法找到一种方法让 X 轴标签来描绘年份和季度。

library(tidyverse)
Event.number <- c(1:30)
Event.date <- sample(seq(as.Date('2010/01/01'), as.Date('2012/12/31'), by="day"), 30)      
Disease <- c("A", "A", "B", "A", "B","A", "A", "B", "A", "B","A", "A", "B", "A", "B","A", "A", "B", "A", "B" ,"A", "A", "B", "A", "B","A", "A", "B", "A", "B")

data.frame(Event.number, Event.date, Disease) %>% 
  mutate(Year.Quarter = quarter(Event.date, with_year = TRUE)) %>% 
  select(Event.number, Year.Quarter, Disease) %>% 
  group_by(Year.Quarter, Disease) %>% 
  count(name = "Cases") %>% 
  ggplot(aes(Year.Quarter, Cases, colour = Disease))+
  geom_point()+
  geom_line()+
  theme_minimal()

如有任何帮助或建议,我们将不胜感激。

根据问题下的评论,如图所示更改 mutate 以使用 yearqtr class 并将 scale_x_yearqtr() 添加到 ggplot 命令。另请注意,group_by/count 语句可以简化为 count 语句。请参阅 ?scale_x_yearqtr 中的 format= 参数以进一步自定义标签。

library(zoo)

DF <-  data.frame(Event.number, Event.date, Disease) %>% 
  mutate(Year.Quarter = as.yearqtr(Event.date)) %>%
  select(Event.number, Year.Quarter, Disease) %>% 
  count(Year.Quarter, Disease, name = "Cases")

ggplot(DF, aes(Year.Quarter, Cases, colour = Disease)) +
    geom_point() +
    geom_line() +
    theme_minimal() +
    scale_x_yearqtr(n = 99)