R数据可视化igraph布局与绘

北京最佳手足癣医院 http://m.39.net/baidianfeng/a_8833641.html
R数据可视化——igraph布局与绘图前言

图是一种抽象的数学结构,不同对象之间通过线条连接起来,而对象在图中并没有固定的位置表示,不同的放置位置显示出的效果通常是不一样的。

选择一种优秀的布局方式,可以让图形呈现出更好的效果,而igraph的工作方式是通过一类node-edge的算法来进行布局的。

算法会将节点作为二维或三维空间上的点,使用直线或曲线来连接两个相邻的节点。对于有向图来说,带箭头的线表示连接方向。在边两端的节点可以由不同的几何图形来表示,而一些重要的节点或边的属性可以用来设置图形参数值。

图的可视化通常由三个步骤组成:

找到节点在二维或三维空间上合适的排列方式,这一步可能是最重要的。好的布局往往能够解释一些有趣的现象,如对称性、密集连接区域。

从上面的图可以看出,第一个随机布局,完全看不出什么有价值的信息,而从第二和第三幅可以看出存在某些对称性

将节点和边的重要属性映射到图像上

安排好节点与边的绘制顺序

布局

布局算法用于寻找合适的排列方式,但是找到优秀的排列确实不容易,因此,大部分的算法都是通过间接测量来评估布局的好坏。而且是一种启发式的方法来求解,所以并不是每次都能找到最优解。

大部分的布局算法只适用于较小的图,较大的图需要一些特殊技术来处理。

igraph中所有布局算法都是layout_*()形式,每个布局算法都会返回一个layout实例,类似列表型的对象,包含了每个节点在图中的x、y坐标。

布局函数

布局是通过plot()函数的layout参数来控制的,例如

我们随机生成一张图

g-sample_gnm(n=15,m=25)plot(g)

随机布局

plot(g,layout=layout_randomly)

圆形布局

plot(g,layout=layout_in_circle)

力导向布局,最常用的是Fruchterman-Reingold算法

plot(g,layout=layout_with_fr)

另一种比较常用的力导向算法KamadaKawai

plot(g,layout=layout_with_kk)

设置树状图

par(mfrow=c(1,3))tree-make_tree(20,3)plot(tree,layout=layout_as_tree)#自底向上plot(tree,layout=layout_as_tree(tree,flip.y=FALSE))#圆形排列plot(tree,layout=layout_as_tree(tree,circular=TRUE))

设置根节点

par(mfrow=c(1,2))tree2-make_tree(10,3)+make_tree(10,2)plot(tree2,layout=layout_as_tree)plot(tree2,layout=layout_as_tree(tree2,root=c(1,11),rootlevel=c(2,1)))

传递位置矩阵

g-sample_gnm(n=15,m=25)l-cbind(1:vcount(g),c(1,vcount(g):2))plot(g,layout=l)绘制图形

我们在前面的介绍中,都只用了plot()函数来绘制图形,所有的一切图形属性都是默认的,默认的颜色、大小、布局等。在我们设置了边和节点的颜色属性之后,图片才显示出了不同的颜色。

在这里,我们将介绍如何来调整节点和边的图形属性,igraph的绘制参数包括

我们以KEEE数据库中的ErbB信号通路中的EGF-ERBB2-RAS-ERK信号通路为例。

利用KEGG

转载请注明:http://www.sonphie.com/jibzd/14412.html

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 网站简介| 发布优势| 服务条款| 隐私保护| 广告合作| 网站地图| 版权申明

    当前时间: