将标签添加到 R 中的分类点边界

Posted

技术标签:

【中文标题】将标签添加到 R 中的分类点边界【英文标题】:Add labels to classification points boundaries in R 【发布时间】:2021-11-09 05:04:44 【问题描述】:

我正在做一个项目,我必须在我的图表上为一些散点周围的边界(圆圈)放置标签。[![在此处输入图像描述][2]][2]

如图所示,我想将 GrainSize 标签放在三角形内的三个环绕边界上。我正在使用带有 ggplot2 的 ggalt 包中的 geom_encircle() 命令。

例如:上面的图有 3 个类别,Setosa、Versicolor 和 Verginica 我希望这些标签也被放置在分类边界上,就像 setosa 的 eclips 应该标记为 setosa 和类似的其他 2 个类别。 我发现 ggforce 包很有用,但仅限于 eclips 或圆形,有什么方法可以在这三个圆圈(Setosa、Versicolor 和 Verginica)上贴上标签

【问题讨论】:

OP,您能否提供一些示例数据和绘图代码,以便可以复制它,我们可以帮助您吗?另外,不清楚您要做什么...将文本“粗”、“细”和“中”添加到三元情节内的情节区域? 抱歉,当时的问题可能还不清楚,现在很清楚了,我想我想在已分类的鸢尾花(Setosa、Versicolor 和 Verginica)周围的圈线中添加标签 【参考方案1】:

您可以尝试创建一个单独的标签数据框并根据需要放置分组标签;在这里找到了一个简单的解决方案。

library(ggplot2)
library(ggalt)
library(dplyr)

labs <- 
  iris %>% 
  group_by(Species) %>% 
  filter(Sepal.Length == max(Sepal.Length))
  

ggplot(iris, aes(Sepal.Width, Sepal.Length, colour = Species))+
  geom_point()+
  geom_encircle(expand = 0.01)+
  geom_text(data = labs, 
            aes(Sepal.Width, Sepal.Length, label = Species),
            nudge_y = 0.15)+
  theme(legend.position = "none")

由reprex package (v2.0.0) 于 2021 年 9 月 14 日创建

【讨论】:

非常感谢,它有效,但标签远离包围边界,考虑到我的数据具有遥远的值。 没有看到你的数据很难说;您可以在调用geom_text 时使用nudge_xnudge_y 控制x 和y 位置;你将不得不进行实验。您还可以通过选择替代过滤条件而不是max 来管理标签的位置 是的,我尝试通过添加 nudge_x( ) 值和更改 nudge_y( ) 来尝试,但这也改变了情节的大小,没关系它就足够了,非常感谢您的及时响应和善意。 嗯,看起来很奇怪;没有看到完整的代码和数据,我有点想知道该建议什么......

以上是关于将标签添加到 R 中的分类点边界的主要内容,如果未能解决你的问题,请参考以下文章

如何将上标添加到R中的复杂轴标签

R语言使用treemap包中的treemap函数可视化treemap图:treemap将分层数据显示为一组嵌套矩形自定义设置标签颜色标签背景色标签大小字体格式边界线条粗细标签位置等

支持向量机在 R语言中的实现和使用

使用 R 中的 plot_geo 将标签添加到伊朗地图的省份

R使用tmaptools为sf对象中的每一行创建边界框

多边形中的 r 点