Если вы хотите создать ящик с наложенными точками, которые помечены справа. Я попробовал geom_dl
форму directlabels
пакет, но застрял.создайте вертикально неперекрывающиеся метки рядом с boxplot, используя ggplot2
library(ggplot2)
library(directlabels)
set.seed(0)
x <- data.frame(label=LETTERS[1:15],
x="a",
y = rnorm(15))
x$xpos <- as.numeric(x$x) + .25
g <- ggplot(x, aes(x=x, y=y)) +
geom_boxplot(width=.4) +
geom_point(col="blue")
этикетки положение без контроля перекрытия с использованием метода last.points
.
g + geom_dl(aes(x=xpos, label=label), method = "last.points")
Используя метод last.qp
, чтобы избежать дублирования терпит неудачу.
g + geom_dl(aes(x=xpos, label=label), method = "last.qp") # fails
Error in approx(df[, x.var], df[, tiebreak.var], xvals) :
need at least two non-NA values to interpolate
Любые идеи, как получить geom_dl
работает или достижения надлежащего placemant по-другому?
Надстройка на
Используя метод last.bumpup
, как @lukeA предлагаемых ниже работает достаточно хорошо. Однако некоторые метки все еще перекрываются. Есть ли способ настроить это?
Add-2
Я думаю, что проблема возникает только при использовании фактора более чем на один уровень на x
.
set.seed(0)
x <- data.frame(label=LETTERS[1:24],
g1 = c("a"),
g2 = c("a", "b"),
y = rnorm(24))
x$g1 <- as.factor(x$g1)
x$g2 <- as.factor(x$g2)
x$xpos1 <- as.numeric(x$g1) + .25
x$xpos2 <- as.numeric(x$g2) + .25
Размещение ярлыков для первого участка в порядке. Для второго с двумя уровнями перекрытия остаются.
# one group
ggplot(x, aes(x=g1, y=y)) +
geom_boxplot(width=.4) +
geom_point(col="blue") +
geom_dl(aes(x=xpos1, label=label), method= "last.bumpup")
Два уровня
# two groups
ggplot(x, aes(x=g2, y=y)) +
geom_boxplot(width=.4) +
geom_point(col="blue") +
geom_dl(aes(x=xpos2, label=label), method= "last.bumpup")
Я использую '' directlabels_2015.12.16' и ggplot2_2.1.0'. –
Ах, спасибо! Моя версия directlabels была устаревшей – jaimedash