Using ggplot it is possible for sure!
df = tibble(Kat = rep(c("A", "B", "C"), 2),
SubKat = rep(c(1,2), each = 3),
value = c(3750, 2500, 1100,
4351, 2468, 1856)) %>%
mutate(label = if_else(SubKat == 2, value, NULL))
ggplot(df, aes(x = Kat, y = value,
group = SubKat, label = label)) +
geom_col(aes(fill = as.factor(SubKat)),
width = 0.8,
colour = "grey90", size = 1, # outline
position = position_dodge(width = 0.5) # overlap
) +
theme_classic() +
scale_y_continuous(expand = expansion(mult = c(0, 0.1)),
breaks = seq(0,4500, 500)) +
scale_fill_manual(values = c("#4474a5", "#93a9d0")) + # colours
geom_text(position = position_dodge(width = 0.5),
vjust = 2) +
theme(axis.line = element_line(colour = "#868686"),
axis.ticks = element_blank(),
panel.grid.major.y = element_line(colour = "#868686"),
legend.position = "none",
axis.title = element_blank())