science图表_Science:组合图表绘制

写在前面

有些事情做了很痛苦,但是不做更难受。比如今天谈到的这件事情,我花了一天加一个晚上时间才写了一个这个功能:Science组合图表的实现。这部分一共写了三个函数,一个门特尔检验,一个ggplot版本的相关热图绘制,还有连线图形绘制。为什么我花费了这么多时间呢?一方面这个功能的实现要想做的灵活点,就必须有一个ggplot版本的相关热图轮子,公开的轮子不好用,所以我自己造了一个,功能很基础哈,只是一个雏形,但是可以作为后面组合图表的轮子。这几个独立的函数也很有用,但是不细化了。

早在之前我们就推送过science组合图表的推文了,我们做的也是比较早的,ggplot版本的,例如;

  • 终于你也可以做这张图了;

  • science 级别的组合图表函数升级了;

  • science组合图表第二次重大升级了;

  • 最终版本Science级组合图表绘制;

  • Science这张惊艳图表终于完成了:最终稳定版本;

最后最好用的出现了,虽然在分析微生物数据上还有点小瑕疵,但是已经非常舒服了,但是这个包已经被作者删除,厚哥表示不会在公开这个包。半年来大家的需求似乎不断,本来从第四个版本以来我放弃了这个图形的开发,因为开发的没有厚哥的好,所以就搁置了一年,到如今,我只能捡起来继续做一些工作,尽量让这个功能好用点。还有就是任何问题的解决方案都不应该只有一个,太容易就断掉了,所以增加一种问题的解决方法,虽然不一定是最好的,也是有必要的。我也没有参考厚哥之前的代码,自己实现,达到一个功能也是挺有意思的,就是浪费了好多时间,代码也不够成熟,慢慢提升吧,实用性后再优化。

MatCorPlot函数参数解释

  • env.dat = env1 其他指标表格,参见要求

  • tabOTU = tabOTU1 otu表格,list文件,最多三个。

  • distance = “bray”群落距离计算方法,这里就两种 bray和jcd。

  • method = “metal” 门特尔检验方法, 这里两种,另外一种是偏门特尔检验。

  • x = F 是否设置x轴标签。

  • y = F 是否设置y轴标签

  • diag = T 是否设置对角线标签。

  • sig = TRUE 是否仅仅展示显著的色块

  • siglabel = FALSE 显著色标是否标记星号

  • shownum = TRUE 是否展示相关值

  • numpoint = 色块point类型,默认22号方块,直接使用pch编号即可更换。注意必须更换具有fill属性的编号。

  • numsymbol = 27 这是symbol,扩展了ggplot中point类型,如果要使用,则需要另外安装R包ggsymbol。需要github安装

  • numpoint2 这部分只可以使用ggplot中的pch点形状,默认21号点,控制link部分点形状。

  • lacx = “left” 相关热图展示方向,x轴,可选“right”

  • lacy = “bottom” 相关热图展示方向,y轴,可选“top”

  • range = 0.5 连线整体粗细变化,值越大变化越大。

  • p.thur = 0.3 显著性阈值

  • onlysig = F 是否只展示显著性的连线。

实战

注意这个功能为2020年11月29号加入,之前安装的没有这个功能。

devtools:: install_github("taowenmicro/ggClusterNet")

需要R包和数据(内置)

library(phyloseq)
library(ggClusterNet)
library(tidyverse)
data(ps)
ps1 = filter_taxa(ps, function(x) sum(x ) > 200 , TRUE);ps1
## phyloseq-class experiment-level object
## otu_table OTU Table: [ 442 taxa and 18 samples ]
## sample_data Sample Data: [ 18 samples by 10 sample variables ]
## tax_table Taxonomy Table: [ 442 taxa by 7 taxonomic ranks ]
## phy_tree Phylogenetic Tree: [ 442 tips and 441 internal nodes ]
otu = as.data.frame(t(vegan_otu(ps1)))
mapping = as.data.frame( sample_data(ps1))
data(env1)

关于微生物组数据的要求:要求很简单,将otu表格作为list对象即可,就像下这样,多个optu表格自然都添加进去list对象即可。

其他指标数据要求:一张数据框,行名是样本,列名字是指标。

tabOTU1 = list(otu1 = otu)
data(env1)

默认参数会会给出一套解决方案,当然可以换

# ?MatCorPlot
p0 p0
654f3e297332033e0e2ea87a6a6710fe.png

numpoint2改变link部分点形,并标记显著性,去除不显著的元素,标记显著的R值。

p1 env.dat = env1,
tabOTU = tabOTU1,
numpoint2 = 22,
sig = F,
lacx = "right
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值