避免ggplot2中geom_point和geom_text的重叠

6
如何避免 ggplot2 中这两个图层重叠?我试图显示文本,使它们不在点的上方。 check_overlap 在避免文本重叠方面效果很好,但是不能与其他图层一起使用。
我还尝试了库 geom_text_repel,但该库不支持 check_overlap 并且会显示每个数据点的文本。
但我需要像 check_overlap 一样,不必为每个点都显示文本。
ggplot(dat, aes(x = CPI, y = HDI)) +
  geom_point(aes(color = Region), shape=21, size=4, position = "identity") +
  geom_text(data = dat, aes(label = Country), size=4, check_overlap = TRUE)

5
ggrepel是一种用于R语言的数据可视化包,它可以在绘制散点图、折线图和箱线图等图表时自动调整标签的位置,避免标签相互重叠。 - hrbrmstr
你能否移除每个数据点上重复的标签,然后使用ggrepel中的geom_text_repel吗? - Z.Lin
我已经尝试过geom_text_repel,但它会在geom_point中的每个数据点上显示一个标签或文本,这不是我想要的。 - Max
1个回答

2

geom_text_repel 不会为空字符串 "" 创建文本标签。然而,这些文本标签将会远离未被标记的数据点。

请尝试以下方法:

# Hide text labels for the first 3 data points
idx <- c(1,2,3)

dat$CountryLabel      <- dat$Country
dat$CountryLabel[idx] <- ""

library(ggrepel)
ggplot(...) + geom_text_repel(data = dat, aes(label = CountryLabel))

1
这不是问题的通用解决方案。我们希望避免geom_text和geom_point之间的重叠。 - Herman Toothrot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接