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