美文网首页
ggrepel-解决散点图样品标签重叠,方便筛选样品

ggrepel-解决散点图样品标签重叠,方便筛选样品

作者: albor | 来源:发表于2018-12-09 21:34 被阅读25次


ggrepel解决标签之间重叠问题

简介

有时样本比较多,而我们想在图形中添加标签的时候,容易出现标签遮盖的问题。

尤其是在扩增子研究中,在相同基因型、环境条件宿主(温室植物、饲养动物)至少也需要6次以上生物学重复,如人类这种无法控制基因型和生活环境的研究对象,实验组至少30个起才容易发现有统计为意义的差异菌。

而在样品比较、样品筛选时又必须看清这些点名字,用于筛选掉一些记录错误、未报抗生素使用或隐性疾病等异常样品。ggplot2的辅助包ggrepel就是专门处理遮盖问题的专家。有了人类可读的可视化结果,在我们下游分析、样品筛选、异常样品鉴定更加方便高效。

ggrepel(https://github.com/slowkow/ggrepel)是发表在github上的开源包,使用之前是要先安装:%E6%98%AF%E5%8F%91%E8%A1%A8%E5%9C%A8github%E4%B8%8A%E7%9A%84%E5%BC%80%E6%BA%90%E5%8C%85%EF%BC%8C%E4%BD%BF%E7%94%A8%E4%B9%8B%E5%89%8D%E6%98%AF%E8%A6%81%E5%85%88%E5%AE%89%E8%A3%85%EF%BC%9A)

安装

Rstudio中安装稳定版本:

install.packages("ggrepel")

# 如果在R中,需要选择源或指定源
install.packages("ggrepel", repo="http://cran.us.r-project.org")

或者安装最新的开发版本:

install.packages("devtools", repo="http://cran.us.r-project.org")
library(devtools)
devtools::install_github("slowkow/ggrepel")

geom_text()添加样品标签

我们先看看geom_text()添加标签时的效果

library(ggplot2)
#使用系统数据集mtcars演示
ggplot(mtcars)+ geom_point(aes(wt, mpg), color="red")+ 
  geom_text(aes(wt, mpg, label=rownames(mtcars)))+ 
  theme_classic(base_size = 16)

image

可以看到可视化效果不是很好。接下来看看包ggrepel的效果。

geom_text_repel()解决样品标签重叠

geom_text_repel()是基于geom_text()

library(ggrepel)
set.seed(123)
ggplot(mtcars)+ geom_point(aes(wt, mpg), color="red")+ 
  geom_text_repel(aes(wt, mpg, label=rownames(mtcars)))+
  theme_classic(base_size = 16)

image

geom_label_repel()防标签重叠并添加背景色

geom_label_repel()是基于geom_label(),它将标签置于一个小方框中

ggplot(mtcars)+ geom_point(aes(wt, mpg), color="grey", size=5)+
  geom_label_repel(aes(wt, mpg, fill=factor(cyl), 
  label=rownames(mtcars)))+ theme_classic(base_size = 16)

image

点太小颜色不容易区分组,直接给标签上色是不是很容易区分样品和组,以及观察组内和组间的差异、筛选异常样品呢?

基于扩增子分析PCoA实战数据

测试数据和代码详见下文:

我们在此基础上添加标签、错开标签,以及按标签着色筛选样品。

geom_text添加样品名

# 绘制主坐标准轴的第1,2轴
p = ggplot(points, aes(x=x, y=y, color=genotype)) +
  geom_point(alpha=.7, size=2) + 
  labs(x=paste("PCoA 1 (", format(100 * eig[1] / sum(eig), digits=4), "%)", sep=""),
       y=paste("PCoA 2 (", format(100 * eig[2] / sum(eig), digits=4), "%)", sep=""),
       title="bray_curtis PCoA")
p + geom_text(aes(x, y, label=rownames(points)))+ theme_classic()

image

够乱吧,根本看不清。

geom_text_repel合理位置添加样品名

library(ggrepel)
p + geom_text_repel(aes(x, y, label=rownames(points)))+ theme_classic()

image

好多了吧!

geom_label_repel合理位置添加标签

需要调整文字和点不上色,只按标签背景填充色,代码如下:

ggplot(points, aes(x=x, y=y)) +geom_point(alpha=.7, size=2) + geom_label_repel(aes(x, y, fill=factor(genotype), label=rownames(points)))+ theme_classic()

image

另一种上色方式,按标签背景分组上色,好像选择样品看容易,比点着色看的清楚。

现在可以一眼看到异常样品的位置了。如果还无法确定,可以结合PCA和hculst的聚类结果综合排除异常样品。想在此图中对分组进一步添加置信区间,方便显示组间是否有差异,以及定义圈外异常样品,将在过几天与大家分享。

Reference

  1. 官方包下载和教程 https://github.com/slowkow/ggrepel
  2. 孙老湿画图系列第十一弹丨标签遮盖处理工具ggrepel http://baijiahao.baidu.com/s?id=1576516080050548076&wfr=spider&for=pc
  3. R语言可视化学习笔记之ggrepel包 https://mp.weixin.qq.com/s/ZKxzKZ4NBTcsJ6vFimxoGA?scene=25#wechat_redirect

相关文章

  • ggrepel-解决散点图样品标签重叠,方便筛选样品

    复制自woodcorpse的个人博客http://blog.sciencenet.cn/blog-3334560-...

  • 样品

    我们离开时收到的是一叠声的感谢。回去的路上,我的心莫名的刺痛了一下。 我叫刘谨华,是一家商场的电脑销售员。 我每天...

  • 实验室信息管理系统lims的常见功能

    样品管理 样品管理是实验室日常运行最为频繁的模块,它为样品分析评价提供了支持,包括:样品登录、样品管理、样品测试、...

  • 选购实验室振动筛分仪要注意哪些方面

    振动式筛分仪是实验室常用的分散筛选样品的自动化仪器设备,可代替人工对样品进行粒度筛选,很大程度上降低了使用人员的劳...

  • 实验室如何选择样品瓶

    样品瓶的种类 样品瓶一般分为:钳口盖样品瓶、螺纹口盖样品瓶、卡口盖样品瓶三种 三种样品瓶该如何选择? 钳口瓶本身的...

  • 关于工作效率的一点小思考

    最近转品,账号暂停快一周没有直播了。新品筛选准备8天过去了,查数据选品花了三天,下样品等样品花了四天,研究账号直播...

  • 防火窗消防产品3C-CCCF认证_送检样品要求

    一.样品数量:   1.型式试验样品数量:2 樘;   2.监督检验样品数量:1 樘;   3.变更确认检验样品数...

  • 样品管理流程

    实验室样品管理流程 1.样品的接收 样品的接收是整个样品检测工作的第一步,也是最重要的一步。样品的接收必须由专门的...

  • 换样品

    先点红色按钮关再转动钥匙开门换样品按屋内搜索按钮关门屋外搜索按钮等声音停止按开转钥匙

  • 寄送样品

    开始工作第一步——美术样品寄送。 微信群聊90人,收到19人回复,如果开学能够有6-8人发货,也是不错的了。 做课...

网友评论

      本文标题:ggrepel-解决散点图样品标签重叠,方便筛选样品

      本文链接:https://www.haomeiwen.com/subject/vjzkhqtx.html