如何避免在 R 图中重叠标签?

机器算法验证 r 数据可视化 散点图
2022-02-06 10:22:30

我正在尝试在 R 中标记一个非常简单的散点图。这就是我使用的:

plot(SI, TI)
text(SI, TI, Name, pos=4, cex=0.7)

结果是平庸的,如您所见(点击放大):

在此处输入图像描述

textxy我尝试使用该功能来弥补这一点,但效果并不好使图像本身更大不适用于密集簇。

是否有任何功能或简单的方法来弥补这一点并让 R 绘制不重叠的标签?


这是我拥有的数据的一小部分:

Name;SI;TI
01_BAD_talking_head;6.944714;4.421208
01_GOOD_talking_head;5.680141;4.864035
01_GOOD_talking_head_subtitles;7.170114;4.664205
4个回答

查看新包ggrepelggrepel 为 ggplot2 提供几何图形以排斥重叠的文本标签。它适用于 geom_text 和 geom_label。

在此处输入图像描述

图取自这篇博文

directlabels包就是这样做的从它的网页

这个包试图通过提供大量有用的函数来使直接标记在日常统计实践中成为现实,这些函数使得使用 lattice 和 ggplot2 等高级绘图系统可以轻松地直接标记常见图。

但是,密集的地块可能并不总是可能的。

这是一个简短的例子:

set.seed(123)
a <- c(rnorm(10,-3,2),rnorm(10,3,2))
b <- c(rnorm(10,-3,2),rnorm(10,3,2))
dfr <- data.frame(a,b)
dfr$t <- c(paste("A",1:10,sep=""),paste("B",1:10,sep=""))
direct.label(xyplot(b~a,dfr,groups=t, col="black"))

我确实设法摆脱了点着色col="black",但不是标签。

我建议你看一下wordcloud包装。我知道这个包并不完全关注点,而是标签本身,而且风格似乎相当固定。但是,我使用它得到的结果仍然非常惊人。另请注意,有问题的软件包版本是在您提出问题时发布的,所以它仍然很新。

http://blog.fellstat.com/?cat=11

文本图()输出

我在使用的几个绘图中遇到了类似的问题,并编写了一个使用力场模拟来调整对象位置的基本包。与上述一些解决方案相比,优势在于 2D 中相对对象接近度的动态调整。虽然有很多改进是可能的,包括启发式和与 ggplot 的集成等,但它似乎完成了任务。下图说明了功能:

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

目前还没有针对各种区域和点分布的启发式方法,因为该解决方案满足了我的需求,我想尽快为人们提供一些有用的东西,但我会在中期添加这些内容。此时,我建议将图表缩放到 100x100 并返回,并根据需要稍微调整默认的吸引和排斥参数。