1. 想用日期做横坐标,aes里为什么不直接用x=Date?
2. label(标签)和scale(坐标刻度)是两样东西。
3. 示例中“scale_x_date(date_breaks = '1 year')”就是修改刻度,你的应用应该改成“1 month‘。
- library(tidyverse)
- x <- seq(as.Date('2005-01-01'), as.Date('2022-12-31'), by='months')
- y <- sample(c(1:20), length(x), replace = T)
- df <- as.data.frame(x)
- df <- cbind(df, y) |>
- mutate(year = year(x), month = month(x))
- df2 <- df |>
- group_by(year) |>
- summarise(y = sum(y)/10)
- df2 <- df2 |>
- mutate(x = paste0(year, '0701'))
- df2$x <- as.Date(df2$x, '%Y%m%d')
- ggplot(NULL, aes(x, y)) +
- geom_line(data=df, col='blue', alpha=.5) +
- labs(x='Date', y='Number of Cases') +
- scale_y_continuous(expand = c(0,0),limits = c(0,20),
- sec.axis = sec_axis(~./5, name = 'Rate of Year',
- breaks = seq(0, 4, .5))) +
- scale_x_date(date_breaks = '1 year') +
- theme(axis.text.x = element_text(angle = 45)) +
- geom_line(data=df2, col='red') +
- geom_point(data = df2, col='brown')
复制代码