/ggweekly

๐Ÿ—“ ๐Ÿ–จ Easy, printable, custom calendars and week planners

Primary LanguageROtherNOASSERTION

ggweekly

The goal of ggweekly is to easily create custom weekly planners with ggplot2.

Installation

You can install ggweekly from GitHub with devtools

devtools::install_github("gadenbuie/ggweekly")

Example

This is a basic example which shows you how to create a weekly planner covering April, May, and June of 2019.

library(ggweekly)
ggweek_planner(
  start_day = "2019-04-01", 
  end_day = "2019-06-30", 
)

You can also create traditional calendars as well.

ggweek_planner(
  start_day = "2019-04-01", 
  end_day = "2019-06-30", 
  show_month_boundaries = FALSE, 
  show_month_start_day = FALSE,
  week_start = "isoweek",
  week_start_label = "week"
) + 
  ggplot2::ggtitle("2019") +
  ggplot2::facet_wrap(~ month, scales = 'free')

Use week_start to choose between weeks that start on Monday ("isoweek") or weeks that start on Sunday ("epiweek"). You can also set (or remove) the weekend color fill with weekend_fill.

ggweek_planner(
  start_day = "2019-04-01", 
  end_day = "2019-06-30", 
  show_month_boundaries = FALSE, 
  show_month_start_day = FALSE,
  week_start = "epiweek",
  week_start_label = "week",
  weekend_fill = "#FFFFFF"
) + 
  ggplot2::ggtitle("2019") +
  ggplot2::facet_wrap(~ month, scales = 'free')

Project Planning

Create a tibble of days to highlight and pass into highlight_days.

project_days <- dplyr::tribble(
          ~day,             ~label,    ~color,     ~fill,
  "2019-07-02", "Project Kick Off", "#02307a", "#02307a",
  "2019-07-12",          "LOI Due", "#02307a", "#02307a",
  "2019-07-26",      "First Draft", "#02307a", "#02307a",
  "2019-08-05",        "Work week", "#bf006c", "#bf006c",
  "2019-08-06",                 NA,        NA, "#bf006c",
  "2019-08-07",                 NA,        NA, "#bf006c",
  "2019-08-08",                 NA,        NA, "#bf006c",
  "2019-08-09",                 NA,        NA, "#bf006c",
  "2019-08-23", "Final Submission", "#02307a", "#02307a"
)


ggweek_planner(
  start_day = "2019-07-01",
  highlight_days = project_days
) +
  ggplot2::ggtitle("A Very Important Project")

Printable Calendars

Hereโ€™s a printable calendar of 8 week time periods for 2019 and 2020:

The code chunk below shows how this PDF was created and can be adjusted as needed. I included margins to the left and below the calendar for extra notes.

start_date <- lubridate::floor_date(lubridate::ymd("2019-01-01"), "week", week_start = 1)
end_date <- lubridate::ceiling_date(lubridate::ymd("2019-12-31"), "week", week_start = 1) - 
  lubridate::days(1)
week_dates <- seq(start_date, end_date, by = "56 day")

pdf(here::here("printable", "2019-weekly-planner.pdf"), width = 8.5, height = 11)
for (idx_week in seq_along(week_dates)) {
  gcal <- ggweek_planner(start_day = week_dates[idx_week]) +
    ggplot2::theme(plot.margin = ggplot2::margin(1, 2, 3, 0.5, "in")) +
    ggplot2::ggtitle(paste(
      strftime(week_dates[idx_week], "%B %e, %Y"),
      strftime(week_dates[idx_week] + 55, "%B %e, %Y"),
      sep = " โ€” "
    ))
  print(gcal)
}
dev.off()
#> png 
#>   2
#> png 
#>   2

And here are fullpage yearly calendars for 2019 and 2020.

g2019 <- ggweek_planner(
  start_day = "2019-01-01", 
  end_day = "2019-12-31", 
  show_day_numbers = TRUE, 
  show_month_boundaries = FALSE, 
  show_month_start_day = FALSE,
  week_start_label = "week"
) + 
  ggplot2::ggtitle("2019") +
  ggplot2::facet_wrap(~ month, scales = 'free')

ggplot2::ggsave(
  file = here::here("printable", "2019-full-year.pdf"),
  plot = g2019,
  width = 11, height = 8.5
)

Please note that the โ€˜ggweeklyโ€™ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.