Hi,
I hope this is of some help:
library(tidyverse)
cats <- c('ABC', 'DEF', 'GHI')
tbl <- crossing(catn = c(1,2,3),
met = c('Approved Volume',
'Approved Exposure',
'Approval Rate')) %>%
mutate(value = runif(9), cat = cats[catn])
my_height <- 0.95
my_width <- 0.95
extra <- 0.2
max_catn <- max(tbl$catn) + 1 + extra
TBL <- bind_rows(tbl,
tbl %>% group_by(met) %>%
summarise(value = sum(value)) %>%
ungroup %>%
mutate(catn = max_catn,
cat = 'Overall') %>%
select(catn, cat, met, value))
y_info <- TBL %>% select(catn, cat) %>% distinct %>% arrange(catn)
TBL <- TBL %>% mutate(met = factor(met, levels = c('Approved Volume',
'Approved Exposure',
'Approval Rate')))
pp <- ggplot(TBL) +
geom_tile(aes(x = met,
y = catn,
fill = value),
height = my_height,
width =my_width) +
geom_hline(yintercept = max_catn - 0.5 - (extra/2),
colour='red') +
theme_bw() +
scale_y_continuous(breaks = y_info$catn, labels = y_info$cat) +
scale_x_discrete(position = 'top') +
labs(x = '', y = '') +
theme(axis.text.y = element_text(angle = 90, hjust = 0.5))
print(pp)

Created on 2019-07-12 by the reprex package (v0.2.1)
Ron.