gpt4 book ai didi

r - 使用 ggplot2 在箱线图旁边创建垂直不重叠的标签

转载 作者:行者123 更新时间:2023-12-02 01:26:35 41 4
gpt4 key购买 nike

如果要创建一个带有重叠点的箱线图,并在右侧标记。我尝试从 directlabels 包中获取 geom_dl,但卡住了。

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") 

enter image description here

使用方法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 运行或以其他方式实现适当的放置?

附加组件

使用下面@lukeA 建议的方法 last.bumpup 效果很好。但是,一些标签仍然重叠。有办法调整吗?

enter image description here

附加组件 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")

enter image description here

两个层次

# 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")

enter image description here

最佳答案

您可以使用 last.bumpup 方法,它结合了last.pointsbumpup ( last.bumup <- list("last.points","bumpup") ):

g + geom_dl(aes(x=xpos, label=label), method = "last.bumpup")  

enter image description here

关于r - 使用 ggplot2 在箱线图旁边创建垂直不重叠的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36821601/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com