ggrepel:仅在一个方向排斥文字,并返回排斥文字的值

ggrepel:仅在一个方向排斥文字,并返回排斥文字的值,第1张

概述我有一个数据集,其中每个数据点都有一个被约束的x值(表示一个定量变量的实际实例),y值是任意的(仅存在提供扩展文本的维度)和一个标签.我的数据集可能非常大,并且通常会出现文本重叠,即使我尽可能地跨越y轴传播数据. 因此,我试图使用新的ggrepel.但是,我试图将文本标签保持在x值位置,同时只允许它们在y方向上相互排斥. 作为示例,下面的代码产生32个数据点的图,其中x值表示汽车中的气缸数,并且y 我有一个数据集,其中每个数据点都有一个被约束的x值(表示一个定量变量的实际实例),y值是任意的(仅存在提供扩展文本的维度)和一个标签.我的数据集可能非常大,并且通常会出现文本重叠,即使我尽可能地跨越y轴传播数据.

因此,我试图使用新的ggrepel.但是,我试图将文本标签保持在x值位置,同时只允许它们在y方向上相互排斥.

作为示例,下面的代码产生32个数据点的图,其中x值表示汽车中的气缸数,并且y值被随机确定(没有意义,而是为文本绘制提供第二维度目的).没有使用ggrepel,文本中有重大的重叠:

library(ggrepel)library(ggplot2)set.seed(1)data = data.frame(x=runif(100,1,10),y=runif(100,label=paste0("label",seq(1:100)))origPlot <- ggplot(data) +  geom_point(aes(x,y),color = 'red') +  geom_text(aes(x,y,label = label)) +  theme_classic(base_size = 16)

我可以使用ggrepel来补救文本重叠,如下所示.但是,这不仅改变了y值,还改变了x值.我试图避免改变x值,因为它们代表实际的物理含义(气缸数):

repelPlot <- ggplot(data) +  geom_point(aes(x,color = 'red') +  geom_text_repel(aes(x,label = label)) +  theme_classic(base_size = 16)

作为一个说明,我不能允许文本的x值改变的原因是因为我只绘制文本(而不是点).然而,ggrepel中的大多数示例似乎保持了点的位置(使得它们的值保持为真),并且仅排斥了标签的x和y值.然后,点和连接到标签的段(你可以看到在我的第二个情节例子).

为了演示,我在上面的两个例子中保留了分数.但是,我只保留文本(因此将删除分数和分数),让我有这样的一些东西:

repelPlot2 <- ggplot(data) + geom_text_repel(aes(x,label = label),segment.size = 0) + theme_classic(base_size = 16)

我的问题是双重的:

1)我是否可以在y方向排斥文字标签?

2)我可以获得一个包含文本的新(排斥)y值的结构吗?

谢谢任何建议!

解决方法 ggrepel版本0.6.8(使用devtools :: github_install从GitHub安装)现在支持一个“direction”参数,它只能以“x”或“y”方向排斥标签.

repelPlot2< - ggplot(data)geom_text_repel(aes(x,segment.size = 0,direction =“y”)theme_classic(base_size = 16)
获取y值更难 – 一种方法可以是使用ggrepel中的“repel_Boxes”函数来获取排斥值,然后使用geom_text将它们输入到ggplot中.有关该方法的讨论和示例代码,请参见https://github.com/slowkow/ggrepel/issues/24.请注意,如果使用最新版本,repel_Boxes函数现在也有一个“direction”参数,它包含“both”,“x”或“y”.

总结

以上是内存溢出为你收集整理的ggrepel:仅在一个方向排斥文字,并返回排斥文字的值全部内容,希望文章能够帮你解决ggrepel:仅在一个方向排斥文字,并返回排斥文字的值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存