GGplot and geom_histogram

Thank you @GreyMerchant,

I have read and expanded a code a bit and now I have got this:

ggplot(my_variable, aes(x = my_variable)) + geom_histogram(aes(y=..density..), position = "identity", binwidth=2, color="#e9ecef", alpha=0.9) + stat_density(col = "red", size = 1, alpha=.1) + 
 ggtitle("My_variable histogram")  +
 theme_ipsum() +  
 theme(plot.title = element_text(size=15)) +
 scale_y_continuous("Counts", breaks = round(ybreaks / (2 * n_obs), 3), labels = ybreaks) + 
 scale_y_continuous("Density", sec.axis = sec_axis(
  trans = ~ . * 2 * n_obs, name = "Counts", breaks = ybreaks)) + scale_x_continuous(breaks = seq(0, 25, 2.5), lim = c(0, 25)) + scale_x_continuous(breaks = breaks, labels = labels, limits = c(-5,30)) +
scale_x_continuous(breaks = scales::pretty_breaks(n = 20)) +
 geom_vline(xintercept=mean(my_variable$my_variable), color="green", size = 1) +
 geom_vline(xintercept=median(my_variable$my_variable), color="purple", size = 1)
labs(x = "my_variable") +
 geom_bar(stat = "count") + 
stat_count(geom = "text", colour = "white", size = 3.5,
aes(label = ..count..),position=position_stack(vjust=0.5))


my_variable <- c(
  12.901, 5.605, 7.959, 7.824, 17.713, 16.642, 20, 16.44, 18.783,
  8.145, 8.539, 8.081, 4.389, 5.972, 18.69, 14.026, 12.01, 1.933,
  1, 17.341, 15.358, 17.801, 13.872, 17.018, 9.63, 17.894, 11.272,
  5.542, 6.514, 17.892
)


my_variable <- data.frame(my_variable)

library(tidyverse)
library(hrbrthemes)


n_obs = sum(!is.na(my_variable$b))


ybreaks = seq(0, 25,5) 

n_obs = sum(!is.na(my_variable$b))

breaks <- seq(0, 25, 2.5)

labels <- as.character(breaks)
labels[!(breaks %% 2.5 == 0)] <- ''
tick.sizes <- rep(.5, length(breaks))
tick.sizes[(breaks %% 2.5 == 0)] <- 1

and I would like to place number of values on each bin (and percent of total), I have tried as you can see, but it
not gives me what I want. Please help.
Something like in here:
https://forum.posit.co/t/labels-in-histograms/118194

best,