52周x轴gglplot2起点

Tom*_*m O 2 r time-series ggplot2 dplyr

我想创建一个类似于下面的情节。基本上希望 x 轴从第 35 周开始到第 52 周,然后显示第 0-34 周。确实没能找到解决办法。x 轴似乎总是默认在第 0 周。我想我可以使用 week 作为.factor 并手动设置顺序,但这似乎需要很多工作。一定有一个更简单的解决方案。希望你能帮忙。

2019年加拿大流感

样本数据集。我没有将其设置为正态分布......可能应该有。

set.seed(99)
fludata <-data.frame('year'= '2019', 'week'= seq(1,52,by =1), 'cases' = sample(0:17, 52, replace=T))

ggplot(fludata,aes(x=week, y = cases)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 7

这就是我的想法。您可以将yearand转换weekyearweekwith tsibble。您可以用来scale_x_yearweek定义您想要的位置date_breaks,并在标签中包含您想要的信息(例如,%U仅针对一周,或%Y-%U针对年周)。如果省略年份,可以直接将年份添加为单独的文本。

编辑 (2/2/21):从 更改scale_x_datescale_x_yearweek

library(tsibble)
library(ggplot2)

set.seed(99)

fludata <-data.frame(
  year = c(rep(2019, 18), rep(2020, 34)), 
  week = c(35:52, 1:34),
  cases = sample(0:17, 52, replace=T)
)

fludata$yr_wk <- yearweek(paste(fludata$year, 'week', fludata$week))

fludata %>% 
  ggplot(aes(yr_wk, cases)) + 
  geom_line() + 
  scale_x_yearweek(date_breaks="2 weeks", date_labels = "%U") 
Run Code Online (Sandbox Code Playgroud)

按周顺序绘图