Tom*_*m O 2 r time-series ggplot2 dplyr
我想创建一个类似于下面的情节。基本上希望 x 轴从第 35 周开始到第 52 周,然后显示第 0-34 周。确实没能找到解决办法。x 轴似乎总是默认在第 0 周。我想我可以使用 week 作为.factor 并手动设置顺序,但这似乎需要很多工作。一定有一个更简单的解决方案。希望你能帮忙。
样本数据集。我没有将其设置为正态分布......可能应该有。
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)
这就是我的想法。您可以将yearand转换week为yearweekwith tsibble。您可以用来scale_x_yearweek定义您想要的位置date_breaks,并在标签中包含您想要的信息(例如,%U仅针对一周,或%Y-%U针对年周)。如果省略年份,可以直接将年份添加为单独的文本。
编辑 (2/2/21):从 更改scale_x_date为scale_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)