It's always best to make your questions reproducible. Check it out: making R reproducible questions.
In lieu of the data I don't have, I made some to answer your question. To set a position at the same height for all labels, you can set y
in geom_text
to a static number.
Here's an example:
set.seed(3523)
df1 = data.frame(coloring = rep(LETTERS[1:2], 4),
x = rep(LETTERS[1:4], each = 2),
y = runif(8, 10, 29))
ggplot(df1, aes(x = x, y = y, fill = coloring)) +
geom_col(position = position_dodge(.9)) +
geom_text(aes(y = 10, label = round(y, 1)),
position = position_dodge(.9))

You said you wanted the values above the bars. You can set it to a known value or you can use the data to set a singular static value, like this:
ggplot(df1, aes(x = x, y = y, fill = coloring)) +
geom_col(position = position_dodge(.9)) +
geom_text(aes(y = max(y) + 1, label = round(y, 1)),
position = position_dodge(.9))

If you didn't want them at the same height, but you wanted them at the same distance from the bars, you can do that in a variety of different ways. Here is one method.
ggplot(df1, aes(x = x, y = y, fill = coloring)) +
geom_col(position = position_dodge(.9)) +
geom_text(aes(y = y + 1, label = round(y, 1)),
position = position_dodge(.9))
