Я думаю, что вы хотели строки для 85% и 95%. Это делает обе строки и маркирует их, используя некоторые поддельные данные. Я также добавил options(scipen=5)
, чтобы избежать научного обозначения на оси у.
## Bogus data
set.seed(1234)
x = pmax(rnorm(400, 225, 70), 0)^2
options(scipen=5)
boxplot(x[x>0], log = "y")
abline(h = quantile(x,c(0.85, 0.95)), col = 'red')
text(x=0.6, y = quantile(x,c(0.85, 0.95)), pos=c(1,3), cex=0.8,
labels = round(quantile(x,c(0.85, 0.95))), col = 'red')
Обновлен:
Если вы заставите строку пройти по тексту, ее будет трудно прочитать. Так как вы хотите "выравнивание", возможно, вы бы предпочли просто отрезок линии вместо полной линии Таким образом, текст может быть на том же уровне, что и строка. Изменить цвета так же просто, как предоставить список желаемых цветов.
options(scipen=5)
boxplot(x[x>0], log = "y")
segments(c(0.8,0.8), quantile(x,c(0.85, 0.95)),
c(1.2,1.2), quantile(x,c(0.85, 0.95)), col=c('red', 'seagreen'))
text(x=0.64, y=quantile(x,c(0.85, 0.95)), cex=0.8, col=c('red', 'seagreen'),
labels = paste(c("85th percentile = ", "95th percentile = "),
round(quantile(x,c(0.85, 0.95)))))