【发布时间】:2016-04-24 19:32:20
【问题描述】:
如果想创建一个带有重叠点的箱线图,这些点在右侧标记。我尝试了 geom_dl 形式的 directlabels 包,但卡住了。
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 下面建议工作得很好。但是,一些标签仍然重叠。有没有办法调整这个?
插件 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 版本已经过时了
标签: r ggplot2 overlap boxplot direct-labels