使用ggplot和lubridate创建季度时间访谈

使用ggplot和lubridate创建季度时间访谈,r,ggplot2,label,lubridate,timeserieschart,R,Ggplot2,Label,Lubridate,Timeserieschart,我使用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",

我使用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()
库(tidyverse)
事件数量%
各组(年度、季度、疾病)%>%
计数(name=“Cases”)%%>%
ggplot(不良事件(年度、季度、病例、颜色=疾病))+
几何点()+
geom_线()+
主题_极小值()


任何帮助或建议都将不胜感激

根据问题下的注释,将
mutate
更改为使用
yearqtr
类,并将
scale\u x_yearqtr()
添加到
ggplot
命令中。还请注意,
groupby
/
count
语句可以简化为一个
count
语句。有关标签的进一步自定义,请参见
scale\u x\u 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)
图书馆(动物园)
DF%
突变(Year.quarty=as.yearqtr(Event.date))%>%
选择(事件号、年份、季度、疾病)%>%
计数(年度、季度、疾病、名称=“病例”)
ggplot(DF、aes(年度、季度、病例、颜色=疾病))+
几何点()+
geom_线()+
主题_极小值()+
比例尺x年QTR(n=99)

或许可以使用
动物园
套餐查看一下
scale\u x_yearqtr
…谢谢@G.Grothendieck,效果非常好。我可以问一下吗?x轴标签是否可以包括年份(仅在实际年份间隔内)和介于两者之间的季度(使用主次线?)我意识到这是一个稍有不同的问题,我非常满意您提供的上述解决方案。还有一个简短的咨询请求:我是否应该学习使用zoo软件包而不是lubridate?(这是否被认为是处理时间/日期数据的最新、最新的方法?)实际上是动物园前的Lubab酸盐。它主要用于时间序列,但确实定义了yearmon和yearqtr类,这些类似乎更有用。