Another option where you use group
in your geom_text
aesthetics, so it knows which values to dodge:
library(ggplot2)
ggplot(fra_acti_valeur_par_type, aes(x = `type de séjour`, y =
`activité en valeur`,
fill = as.factor(annee))) +
geom_bar(stat = "identity", position = "dodge") +
ggtitle("Evolution du mix d'activité en valeur (CA/nombre de séjours)") +
labs(y = "CA/nombre de séjours",
x = "type de séjour",
fill = "année") +
geom_text(data = fra_acti_valeur_par_type,
aes(x = `type de séjour`, y = `activité en valeur` + 150, group = annee, label = format(`activité en valeur`, digits = 1)),
size = 3,
position = position_dodge(.9),
inherit.aes = TRUE,
na.rm = TRUE)
Output:
