# Issue

This Content is from Stack Overflow. Question asked by gaut

I have the following chart

``````year <- 2022:2026
data <- 15:11
data2 <- 10:6
data3 <- 1:5

dat <- tibble(year, data, data2, data3)
data <- dat %>% group_by(year) %>% pivot_longer(all_of(starts_with('data'))) %>% ungroup() %>%
mutate(first_categ = case_when('data2'==name | 'data3'==name ~ value,
TRUE ~ 0L))
ggplot(data, aes(x = year, fill = name))+
geom_bar(aes(y = value), stat = 'identity', position = 'stack')+
geom_col(aes(y=first_categ), alpha = 0, color = 'black', size = 2)
`````` I’d like to have a separation between the two first colors (`data2` and `data3`) and the rest because for me, these colors belong to the same category.

Is it possible to remove the intermediate horizontal separation between the blue and green?

# Solution

This is trickier than you’d imagine. Effectively you need to map to different aesthetics and fake the guides to get this effect:

``````ggplot(data, aes(x = year)) +
geom_col(aes(y = value, color = "data"), fill = "#F8766D",
position = 'stack') +
geom_col(aes(y = value, fill = name), position = "stack",
data = subset(data, name != "data")) +
stat_summary(fun = sum, aes(y = first_categ), color = 'black',
alpha = 0, size = 2, geom = "bar") +
labs(color = "name") +
scale_fill_manual(values = scales::hue_pal()(3)[-1], name = NULL) +
guides(fill = guide_legend(override.aes = list(color = "black", size = 1.5),
byrow = TRUE),
color = guide_legend(order = 1)) +
theme(legend.margin = margin(20, 0, 20, 0),
legend.key.size = unit(10, "mm"),
legend.spacing.y = unit(-1.5, "mm"),
legend.box.background = element_blank(),
legend.background = element_blank(),
legend.title = element_text(margin = margin(0, 0, 20, 0)))
`````` ``` This Question was asked in  StackOverflow by  gaut and Answered by Allan Cameron It is licensed under the terms of
CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.```