首页 > 解决方案 > 将标签与ggplot中的日历季度对齐

问题描述

考虑这个简单的例子

tibble(date = c(ymd('2021-01-01'),
                ymd('2021-04-01')),
       value = c(10, 20)) %>% 
  ggplot(aes(x = date, y = value)) + geom_col()

在此处输入图像描述

如您所见,条形图以 为中心date。相反,我希望第一个条形图跨越 1 月到 3 月(第一季度)和 4 月到 6 月(第二季度)。

我怎样才能做到这一点?谢谢!

标签: rggplot2

解决方案


或许,我们可以调整scale_x_date

library(dplyr)
library(ggplot2)   
library(lubridate)
library(stringr)
start <- seq(min(tbl1$date), max(tbl1$date), by = '3 months')
end <- start %m+% months(2)
start_end <- str_c(format(start, '%b %Y'), format(end, '%b %Y'), sep='--')
tbl1 %>% 
    ggplot(aes(x = date %m+% days(40), y = value)) + 
      geom_col() + 
      scale_x_date(breaks = start, labels = start_end) + 
      xlab("date")

-输出 在此处输入图像描述

数据

tbl1 <- tibble(date = c(ymd('2021-01-01'),
                ymd('2021-04-01')),
       value = c(10, 20))

推荐阅读