Treemap with data comparing recent and previous week

Hi,

Good day.

First I would like to express my deepest thanks to your AppliedEpi team for helping me create my treemap of C19 cases per region (17 regions) for recent week.

Now, may I ask if it’s possible to add another information on this treemap, particularly the number of C19 cases in previous week and % change from previous week.

For example (something like this):
“NC region
120 cases
(5% higher than week 41)”

The following is my script on the treemap bearing only the recent week:

 file_names <- list.files("C:/Users/bajadorj/Desktop/Rstudio/treemap/data/epics")   
  
  df_all <- data.frame()
  
  for (file in file_names){   
    region_name <- str_remove(file, pattern = "EpidemicCurve_DateOfReporting_") 
    region_name <- str_remove(region_name, pattern = ".csv")  
    
    
    df_raw <- read_csv(paste0("C:/Users/bajadorj/Desktop/Rstudio/treemap/data/epics/", file))  
    
    
    if(!is.Date(df_raw$Date)){
      df_raw <- df_raw %>% 
        mutate(
          Date = mdy(Date),    
        )
    }
    
    
    df_clean <- df_raw %>%     
      clean_names() %>%         
      rename(                   
        date_report = date, 
        cases = number_of_daily_cases,
        cases_7dma = x7dma 
      ) %>% 
      select(                   
        date_report,
        cases, 
        cases_7dma
      ) %>% 
      mutate(                   
        date_week = floor_date(date_report, week_start = 1, unit = "week"),  
        week_report = week(date_week),   
        year_report = year(date_week)    
      ) %>% 
      filter(year_report == 2023)  
    
    
    df_weeklycases <- df_clean %>%   
      group_by(date_week, week_report, year_report) %>% 
      summarize(cases = sum(cases),   
                cases_7dma = sum(as.numeric(cases_7dma), na.rm=TRUE),    
                n = n()) %>%   
      mutate(region = region_name)
    
    df_all <- rbind(df_all, df_weeklycases)
    
  }

 
  
  
  data2 <- df_all %>% 
    group_by(region)%>%
    filter(year_report!=2022) %>% 
    filter(week_report==max(week_report))%>%
    filter(region!="NAT") %>% 
    mutate(regions.index=paste(region, cases, sep="\n")) %>% 
    mutate(regions.index2=paste(regions.index, "\ncases", sep="")) 

  
  png("treemap1.png", width = 480, height = 480, units = "px")  #cant save as ggsave because treemap is a different package
  treemap <-treemap(data2,
      index="regions.index2",
      vSize="cases",
      title = "COVID-19 cases per Region, Week 42, Country X",
      fontsize.labels = 12,
      palette = "HCL",
      bg.labels= 220,
      fontsize.title = 10,
      border.col=c("gray", "gray"),
      fontcolor.labels = "gray35",
      lowerbound.cex.labels = 0.4,
      sortID = "-size",
      inflate.labels = FALSE,
      fontface.labels = c(rep("plain")),
      align.labels=list(
        c("center", "center"))
    )    

dev.off()
 dput(head(data2))
structure(list(date_week = structure(c(19646, 19646, 19646, 19646, 
19646, 19646), class = "Date"), week_report = c(42, 42, 42, 42, 
42, 42), year_report = c(2023, 2023, 2023, 2023, 2023, 2023), 
    cases = c(37, 22, 5, 126, 50, 204), cases_7dma = c(34.1428571428571, 
    17.8571428571429, 12.2857142857143, 114.571428571429, 44.7142857142857, 
    225.142857142857), n = c(7L, 7L, 7L, 7L, 7L, 7L), region = c("BA", 
    "BI", "CA", "CEL", "CEN", "CL"), regions.index = c("BA\n37", 
    "BI\n22", "CA\n5", "CEL\n126", "CEN\n50", "CL\n204"), regions.index2 = c("BA\n37\ncases", 
    "BI\n22\ncases", "CA\n5\ncases", "CEL\n126\ncases", "CEN\n50\ncases", 
    "CL\n204\ncases")), class = c("grouped_df", "tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -6L), groups = structure(list(
    region = c("BA", "BI", "CA", "CEL", "CEN", "CL"), .rows = structure(list(
        1L, 2L, 3L, 4L, 5L, 6L), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L), .drop = TRUE))
#>    date_week week_report year_report cases cases_7dma n region regions.index
#> 1 2023-10-16          42        2023    37   34.14286 7     BA        BA\n37
#> 2 2023-10-16          42        2023    22   17.85714 7     BI        BI\n22
#> 3 2023-10-16          42        2023     5   12.28571 7     CA         CA\n5
#> 4 2023-10-16          42        2023   126  114.57143 7    CEL      CEL\n126
#> 5 2023-10-16          42        2023    50   44.71429 7    CEN       CEN\n50
#> 6 2023-10-16          42        2023   204  225.14286 7     CL       CL\n204
#>    regions.index2
#> 1   BA\n37\ncases
#> 2   BI\n22\ncases
#> 3    CA\n5\ncases
#> 4 CEL\n126\ncases
#> 5  CEN\n50\ncases
#> 6  CL\n204\ncases


dput(head(df_all))
structure(list(date_week = structure(c(19359, 19366, 19373, 19380, 
19387, 19394), class = "Date"), week_report = c(1, 2, 3, 4, 5, 
6), year_report = c(2023, 2023, 2023, 2023, 2023, 2023), cases = c(21, 
23, 10, 11, 5, 9), cases_7dma = c(21.2857142857143, 25.1428571428571, 
14, 8.71428571428571, 9.42857142857143, 8), n = c(7L, 7L, 7L, 
7L, 7L, 7L), region = c("BA", "BA", "BA", "BA", "BA", "BA")), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -6L), groups = structure(list(
    date_week = structure(c(19359, 19366, 19373, 19380, 19387, 
    19394), class = "Date"), week_report = c(1, 2, 3, 4, 5, 6
    ), .rows = structure(list(1L, 2L, 3L, 4L, 5L, 6L), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L), .drop = TRUE))
#>    date_week week_report year_report cases cases_7dma n region
#> 1 2023-01-02           1        2023    21  21.285714 7     BA
#> 2 2023-01-09           2        2023    23  25.142857 7     BA
#> 3 2023-01-16           3        2023    10  14.000000 7     BA
#> 4 2023-01-23           4        2023    11   8.714286 7     BA
#> 5 2023-01-30           5        2023     5   9.428571 7     BA
#> 6 2023-02-06           6 

But I will understand if it’s too complicated to do.
Thank you.

Regards,
Echo