library(ggplot2)
cuts <- data.frame(Ref = c("p", "s", "m"),
vals = c(140, 300, 250),
stringsAsFactors = FALSE)
ggplot() +
geom_density(mapping = aes(x = disp),
data = mtcars) +
geom_vline(mapping = aes(xintercept = vals,
colour = Ref),
data = cuts,
show.legend = FALSE) +
geom_text(mapping = aes(x = vals,
y = 0,
label = Ref,
hjust = -1,
vjust = -1),
data = cuts)

Created on 2019-08-29 by the reprex package (v0.3.0)
Hope this helps.
(You can use the angle argument in aes also.)