With additional styling, we can get even closer if you'd like:
library(ggplot2)
tot <- c(82/107, 25/107)
ptot <- round(tot * 100)
# we can use a factor with levels to set the order
# note: if we omit levels, defaults to alphabetical order.
types <- factor(c("vrai", "faux"),
levels = c("vrai", "faux"))
df <- data.frame(type = types,
perc = ptot)
ggplot(data = df) +
geom_col(aes(x = type,
y = perc,
fill = type),
color = "black") +
geom_text(aes(x = type,
# perc / 2 places label in the middle
y = perc / 2,
label = perc)) +
scale_y_continuous("% de réponses",
# expand to remove extra space
expand = c(0,0),
# set the limits
limits = c(0, 80),
# set breaks for y-axis labels
breaks = seq(0, 80, 10)) +
scale_x_discrete("Type de réponses") +
scale_fill_manual(breaks = c("vrai","faux"),
values = c("lightblue", "magenta")) +
ggtitle("Questionnaire 1: Tri global") +
theme_bw() +
theme(panel.grid = element_blank(), # remove gray grid
panel.border = element_blank(), # remove border
axis.line.y = element_line()) # add back the y-axis