关于这种“网络模块”和“模块饼图”的可视化方法知道好多同学都很好奇这种网络图,特别是右边这个是怎么得到的,本篇就作个简单操作演示。左图:简单展示了一个微生物关联网络,图中每一个节点代表一种OTU,节点颜色表示该OTU所属的微生物分类单元(这里以门水平划分),节点之间的边表示OTU之间存在正相关(红色边)或负相关(蓝色边)关系;对网络拓扑结构分析时划分了模块,并在网络可视化时按模块将OTU聚类后以不同的圈展示。这种网络图突出微生物节点间的互作状态和类型。右图:统计了网络中各模块内,不同类别微生物所包含的节点数量,并绘制以饼图表示。此时将微生物节点之间的关联交互淡化,更突出各模块内微生物的分类组成。

关于网络模块:在网络拓扑结构分析中,通过数学方法划分的模块实际上是对节点聚类的过程,结果将是,划分为同一模块内的节点之间往往连接紧密,不同模块间的节点之间连接较少。

当然如果只是这样描述似乎没有任何生物学意义,微生物网络模块的实际价值体现,还需结合具体的文献来理解了。例如这是某种理解方式:模块可以代表相似的生态环境,模块内的物种归因于生态位重叠而通常存在更多的交互,这种交互可以是有利的合作也可以是资源竞争;模块间的物种交互较少,归因于隔离,意味着物种间的共发生模式受到阻碍。(大神师兄们曾这样教导俺)

好了言归正传,来简单描述下这种网络图怎样得到。

左图不多说了,放在Cytoscape中随手一调就出来了。

关于右图怎么得到的,手动拼的......白鱼同学也曾尝试过寻找Cytoscape中有没有插件可以做这种样式,但是很遗憾的是一直没找见,不知是否真的有这种插件存在......但是无妨,其实手动拿AI(Adobe Illustrator)拼一下,也是很简单的。具体而言,首先在Cytoscape中调整出节点网络图,然后设法(如使用R)统计各模块内不同微生物类群所包含的节点数量并绘制饼图,最后在AI中将饼图叠加到网络图上方。

以下是大致的过程。

准备网络数据

示例数据的百度盘链接(提取码,hk18):

https://pan.baidu.com/s/111RDUmyoD-oyHuH8R2Q3jQ

网盘附件提供了一个OTU水平的微生物关联网络的示例数据。

“edge.txt”是网络边列表文件,记录了存在关联的微生物OTU,包括名称(source和target)、权重(weigth,代表了OTU间关联的强度)以及关联类型等信息(type,copresence代表共存,mutualExclusion代表互斥)。

“node.txt”是网络节点列表文件,shared name为网络中各节点的名称,即参与网络互作的各微生物OTU的名称;其后的各列为节点属性信息,包括这些OTU所属的门水平分类(phylum,界门纲目科属种的“门”),以及提前划分好的网络模块(modularity_class)等。

接下来:

(1)使用R读取节点列表进行统计,网络各模块中,各类微生物门所含OTU节点的数量,并绘制饼图展示各模块中各类门水平节点的数量比例;

(2)将边列表和节点列表两个文件,导入Cytoscape中可视化微生物关联网络;

(3)使用AI(Adobe Illustrator)进行拼图,将R绘制的饼图和Cytoscape的网络图组合,得到“饼图模块”网络样式。

(1)R语言统计各模块内的节点分类数量并绘制饼图

针对示例数据,代码如下。大家替换成自己的数据运行时,记得对颜色指定项进行修改。

#读取节点属性列表node  #查看网络中一共包含哪些门类群细菌#并统计各门类群细菌所含节点数量,由大到小排个序phylum phylum  #这个示例中共计 12 类细菌门,因此手动分配 12 种颜色代指#大家使用自己的数据时,视情况修改颜色数量和赋值color     '#FFED6F', '#CCEBC5', '#BC80BD', '#FCCDE5', '#B3DE69', '#FDB462')names(color)  color    #查看预指定的颜色#最后统计网络中各模块内,各门水平细菌所含节点数量#并绘制饼图展示,通过 ggplot2 实现library(ggplot2)dir.create('plot', recursive = TRUE)  #创建目录“plot”用于存放图片for (module in unique(node$modularity_class)) {        node_module         node_phylum                 p                 geom_bar(stat = 'identity', width = 1) +                coord_polar(theta = 'y') +                scale_fill_manual(limits = names(color), values = color) +                theme(panel.grid = element_blank(), panel.background = element_blank(),                        axis.text.x = element_blank()) +                labs(x = '', y = '')        ggsave(paste('plot/', module,'.pdf', sep = ''), p)}#备注:#scale_fill_manual() 指定颜色时,limit 和 values 搭配,可以使颜色和微生物一一对应,即使数据中缺失该微生物也不会使顺序错乱#输出的每个图片,文件名称均以模块名称命名

工作路径下将生成一个目录“plot”,本示例网络中共计8个模块,因此将获得8个饼图,存储在“plot”中,样式大致如此。

(2-3)Cytoscape网络图可视化及AI拼图

上面是准备工作,接下来是具体的可视化操作过程,包括如何在Cytoscape中进行微生物网络的可视化,以及通过AI(Adobe Illustrator)组合图片。过程总体来说不是很难,以下是一个简单的操作视频,帮助大家理解。

注:4:45之前,是Cytoscape调整网络图过程;如果只关注饼图怎样叠加,直接跳到4:45之后即可。此外,视频没有声音(声音难听,懒得说话......),操作过程看鼠标点击的位置和字幕注解就可以了,还是很好理解的。备注:bilibili视频链接:https://www.bilibili.com/video/BV1zA411t7MD友情链接

基础统计图(以R作图为主)

柱形图类:堆叠柱形图分组柱形图双向柱形图蝴蝶图箱线图类:箱线图    提琴图    密度提琴图饼图类:饼图扇形图圆环图蜘蛛饼图旭日图星形图面积图类:堆叠面积图散点图类:二维散点图    三维散点图    火山图    曼哈顿图折线或曲线图类:折线图和拟合线    平行坐标图雷达图类:雷达图集合可视化:在线韦恩图韦恩图花瓣图UpSet图    网络图代Venn图圈图:关联弦图    简单弦图   基因组变异圈图SNV位点圈图三元相图:三元图树形图:聚类树    聚类树+堆叠柱形图    聚类树+排序散点图

相关图:相关矩阵    Mantel相关图

网络和流:CytoscapeGephi    冲击图桑基图 弧线图

illustrator作图

illustrator作图教程1-绘制质膜结构图

illustrator作图教程2-乙烯信号转导通路图

cytoscape使用方法_关于这种“网络模块”和“模块饼图”的可视化方法相关推荐

  1. python用类名直接调用方法_一文读全 Python 的面向对象编程方法

    背景介绍: Python 支持三种形式的编程,分别是:"命令式"."函数式"和"面向对象式". 很多优秀的开源 Python 项目里都用到了 ...

  2. 华为交换机关机方法_华为交换机常用的三种vlan划分方法~

     点击"华为考试HCIE俱乐部"→点击右上角"..."→"设为星标"   资讯丨干货丨入群 联系小E微信:SPOTO123456 作为华为设 ...

  3. java获取随机数方法_《Java语言程序设计》Java获取随机数方法

    <Java语言程序设计>Java获取随机数方法 在Java中我们可以使用java.util.Random类来产生一个随机数发生器.它有两种形式的构造函数,分别是Random()和Rando ...

  4. 基于html5的矢量图绘制方法研究,基于HTML5和WebGL的三维地形可视化方法研究

    摘要: 近年来地理信息的需求急速增长,越来越多的GIS应用走向网页化.移动化.WebGIS应用也在逐渐从二维层面向三维层面发展,三维地形可视化是三维GIS的基础,基于Web的三维地形可视化也成为新的研 ...

  5. zs040蓝牙模块使用方法_三菱CCLINK-IE网络模块使用方法

    随着工业自动化的发展,我们平常使用的产品越来越多,种类越来越丰富.这些都归功于工业自动化设备的功劳.现在工业自动化设备也越来越智能,工业4.0的成功运用.使工业现场的数据采集更加智能化,简单化以及高效 ...

  6. 600度近视眼恢复方法_近视眼了怎么办?试试这几种方法,或许能奏效

    眼睛可以说是心灵的窗户,但是有时这扇心灵之窗也容易出现问题.近视已经成为了困扰现在众多朋友的主要问题之一.一旦出现了近视问题,就会感到特别的头痛,不知道近视眼怎么办?事实上,不同程度的近视眼有着不同的 ...

  7. 调用父级方法_通信:找到任意组件实例的findComponents系列方法,5个终极方案

    已经介绍了两种组件间通信的方法:provide / inject 和 dispatch / broadcast.它们有各自的使用场景和局限,比如前者多用于子组件获取父组件的状态,后者常用于父子组件间通 ...

  8. removelogo使用方法_怎么给视频去水印?这三种方法简单又高效

    不管是做新媒体工作,还是从事视频剪辑,都会跟视频打交道,需要下载和用到一些视频,很多时候也会遇到视频上有水印的情况,需要去除水印才能使用,下面就给大家带来三种去除视频水印的方法,下面一起来看吧. 1. ...

  9. ios 摇一摇不走响应方法_猫咪不和主人亲近?这几种方法让它变得黏人,赶都赶不走|猫|宠物猫|主人...

    现代人逐渐把猫狗当成伴侣动物.它们都是毛茸茸的,但除此之外,它们之间似乎没有其他相似之处.换句话说,猫不是狗!猫是一个非常独特的物种,不同于其他动物和其他动物.每只猫都有自己的好恶. 说了这么多,只要 ...

  10. indexof方法_[ 翻译 ] ES6中数组去重的三种方法

    原文:How to Remove Array Duplicates in ES6 翻译:Hytonight云息 有三种方法可以过滤掉一个数组的重复元素并且返回去重后的新数组.我最喜欢使用Set,因为它 ...

最新文章

  1. PHP 利用AJAX获取网页并输出(原创自Zjmainstay)
  2. linux里打包和压缩文件,linux ---打包和压缩文件
  3. 【LeetCode】排序
  4. 『TensorFlow』专题汇总
  5. 学会这些套路和用词,Discussion不愁没思路
  6. 【算法学习笔记】堆排序和归并排序、其他几种排序的代码实现、比较和应用(习题)
  7. python中e-r图_E-R图基本步骤
  8. php增删改查怎么封装,php增删改查封装方法
  9. 11g表名大小写 oracle_oracle表名、字段名大小写问题。
  10. jQuery笔记——jQuery选择器实例应用
  11. 格雷码转二进制c语言程序,systemC构建格雷码和二进制的转换
  12. unity3d 绘制小地图_Unity3D —— 小地图制作插件NJG MiniMap
  13. cecore.cls.php 08cms,08cms小说系统 v1.0PHP CMS源码下载-华软网
  14. Ps图片文字处理与python多张图片合成
  15. 2019 acm-icpc 西安全国邀请赛 J
  16. switch 求分段函数
  17. win7系统笔记本配置双屏
  18. Chromium为视频标签 video 全屏播放的过程分析
  19. Java找工作的准备点
  20. 3d游戏建模如何学习?资深大咖经验分享

热门文章

  1. php基础语法学习汇总
  2. 80sec被黑原因分析
  3. win7的配置要求详解
  4. 用小学的试题测试你,换个脑袋吧~~~
  5. 剑指_3.1数组中重复的数字(Python/C++)
  6. html文档utf8文档字节,HTML UTF-8 参考手册
  7. 2580 php to yuan,PHP版汉字转拼音类-ASCII版本 | 学步园
  8. linux设备数内核选项,linux内核设备树修改指南 / linux kernel device tree modify guide
  9. 日期格式 java_Java日期格式转换
  10. 【跃迁之路】【586天】程序员高效学习方法论探索系列(实验阶段343-2018.09.14)...