因此,我试图使用新的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:仅在一个方向排斥文字,并返回排斥文字的值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)