You cannot apply this when you have a continuous variable. I tried to somewhat replicate what I think you want to do. I created height categories and then applied the color argument on them.
library(tidyverse)
set.seed(123)
height <- sample(150:180,30, replace = T)
name <- rep(c("A", "B", "C"), 10)
value <- sample(40:90, 30, replace = T)
df <- data.frame(name, height, value)
df %>%
arrange(name, height)
#> name height value
#> 1 A 152 44
#> 2 A 154 81
#> 3 A 156 52
#> 4 A 163 56
#> 5 A 167 51
#> 6 A 171 48
#> 7 A 174 64
#> 8 A 176 62
#> 9 A 176 66
#> 10 A 180 58
#> 11 B 152 82
#> 12 B 154 66
#> 13 B 157 47
#> 14 B 158 73
#> 15 B 159 57
#> 16 B 164 75
#> 17 B 169 84
#> 18 B 171 54
#> 19 B 174 80
#> 20 B 174 71
#> 21 C 158 72
#> 22 C 159 78
#> 23 C 160 71
#> 24 C 163 46
#> 25 C 168 53
#> 26 C 168 46
#> 27 C 175 49
#> 28 C 175 51
#> 29 C 177 77
#> 30 C 178 68
df %>%
mutate(height_fac = case_when(
between(height, 150, 164) ~ "150-164",
T ~ "165+"
)) %>%
group_by(name, height_fac) %>%
summarise(mean_val= mean(height)) %>%
ggplot(aes(x= name, y= mean_val, fill= height_fac))+
geom_col(position = "dodge")
#> `summarise()` has grouped output by 'name'. You can override using the
#> `.groups` argument.

Created on 2023-04-17 with reprex v2.0.2