公众号:生物信息学习
ggplot2画图时出现重合的点以及标签如何处理?有现成的包ggrepelmp.weixin.qq.com![a725a69fd9ad495fca55c5aa155d1ca5.png](https://i-blog.csdnimg.cn/blog_migrate/1bf1261d890071df3ff921f5a198bc7f.jpeg)
在R中散点图的时候会经常出现,点重合,点的标签重合比较严重的现象,这对我们观察数据有很大的干扰。
用ggrepel包可以很好的解决这个问题。
当我们创建一个数据框
a<-data.frame(num=c(1,2,3,1,4),n=2,name=c("a","b","c","d","e"))
给出的结果如下:
num n name
1 1 2 a
2 2 2 b
3 3 2 c
4 1 2 d
5 4 2 e
library(ggplot2)
ggplot(a)+geom_point(aes(n,num),color="red")+geom_text(aes(n,num,label=name))
![027da9dd9f20d102093de5bfb1685508.png](https://i-blog.csdnimg.cn/blog_migrate/134a97d7656e060e973f7aa51e0a3317.jpeg)
便签展示如上图所示,a和d重合,那如何把这两个标签分开展示呢,ggrepel就派上用场了。
基本款:
library(ggrepel)
ggplot(a)+geom_point(aes(n,num),color="red")+geom_text_repel(aes(n,num,label=name))
![f8c36e60524c81065dc084c030c22184.png](https://i-blog.csdnimg.cn/blog_migrate/79882807abd95033b5365bad71407748.jpeg)
其中a和d分开展示。当然图形也有很多可以修改的地方:
ggplot(a)+geom_point(aes(n,num),color="red")+geom_label_repel(aes(n,num,label=name))
展示的图形就如下所示:
![c6927adff5cb3284c105b8131f38e011.png](https://i-blog.csdnimg.cn/blog_migrate/b94ac52972fbdbb65b14e2f585ec4758.jpeg)
如果还不喜欢,可以再根据自己的需求去改。
大部分geom_text()
的参数都适用于geom_text_repel()
,除了以下几个:
- hjust
- vjust
- position
- check_overlap
ggrepel包为geom_text_repel()
与geom_label_repel()
提供了特有的参数设置:
- segment.color:连接点与标签的线段的颜色
- segment.size:线段的粗细
- segment.alpha:线段的透明度
- box.padding:文本框周边填充
- point.padding:点周围填充
- arrow:grid:arrow提供的箭头
- force:强制性将重叠文本散开
- max.oter:最大迭代次数
- nudge_x/y:标签开始位置在坐标轴的移动距离
- direction:允许标签的方向,x、y or both