こんな感じ。もっとうまい方法がある気もしつつ。
library(tidyverse) set.seed(19) d <- tibble( value = rgamma(10000, shape = 1) ) q <- quantile(d$value, probs = 0:4*0.25) l <- tibble(label = names(q), value = unname(q)) ggplot() + geom_density(data = d, aes(value), fill = alpha("grey", 0.7)) + geom_vline(data = l, aes(xintercept = value), colour = alpha("red", 0.5), linetype = "dashed", size = 2) + geom_label(data = l, aes(x = value, y = Inf, label = label), vjust = 1) + theme_minimal()
追記:
ちょっと調べてみたんですが,Infってggplotでちょっと特殊な扱いしてるっぽいですね.なので端っことなるとInfがいい感じなのですが,vjust = "inward"の方がスマートかなって思いました.一番下の例みたいに... https://t.co/gAIyECYhd4
— kazutan v3.4.0 (@kazutan) 2017年6月14日