Размещение интеллектуальной метки *1001* - это отдельная проблема, обсуждаемая здесь или здесь .Там нет окончательного и идеального решения, поэтому вам просто нужно выбрать его там.
Таким образом, вы бы перелистали обычную коробку с метками, как показано ниже:
set.seed(1501)
y <- c(4, 0, 7, -5, rnorm(16))
x1 <- c("a", "a", "b", "b", sample(letters[1:2], 16, T))
lab_y <- sample(letters, 20)
bx <- boxplot(y~x1)
out_lab <- c()
for (i in seq(bx$out)) {
out_lab[i] <- lab_y[which(y == bx$out[i])[1]]
}
identify(bx$group, bx$out, labels = out_lab, cex = 0.7)
Затем, во время identify()
работает, вы просто нажимаете на позицию, где вы хотите метку, как описано здесь .Когда закончите, просто нажмите «СТОП».Обратите внимание, что каждый выброс может иметь более одной метки!В своем решении я просто выбрал первое !!
PS: мне стыдно за цикл for, но я не знаю, как его векторизовать - не стесняйтесь публиковать улучшения.
РЕДАКТИРОВАТЬ: вдохновленный ссылкой Федерико Теперь я вижу, что это может быть сделано гораздо проще!Только эти 2 команды:
boxplot(y~x1)
identify(as.integer(as.factor(x1)), y, labels = lab_y, cex = 0.7)