今天分享另外一个最近学习的一个画图的小技巧。
说到网络图的绘制,大家可能首先想到的是Cytoscape,它在生物学相关的领域应用非常广泛,我自己也是常用这个,但是总觉得调整起来很麻烦,配色选起来总觉得自己画的很丑陋,然后里面可供选择的layout也总觉得美观差点意思。这里给大家推荐另一款开源软件:Gephi 。
官网:
https://gephi.org
下面paper中的几个例子,尤其是宏基因组好多结果的展示都是出自它手。
包括下面这个漂亮点的樱花图(下篇文章分享学习绘制这个高大上的图)。
=========下载与安装========
Gephi支持Windows、Mac、Linux三种常见的操作系统,目前官网最新的稳定版本是0.9.2。
https://gephi.org/users/download/ \\直接下载安装即可
========数据准备和导入=======
类似于Cytoscape,网络图的数据一般有两个:边文件(edge)和点文件(node)。
边文件,主要是由成对的节点Id构成,(源)Source和(目标)Target两个点连成一条线(边),边文件中也可以加入边的描述信息,比如边的id、类型、权重等信息。
点文件,主要是对边文件中的“点”进行描述,是点的属性文件,我们可以在其中可添加点的分组信息用于网络图的可视化,以便后面控制颜色了,形状等。
通常来说,这两个文件中,边文件是必需要有的,它是构成网络图的核心,而点文件是非必需的,因为它主要做一些控制。
一般文件的存储可以用csv文件或者制表符分割的txt文件。
通过File/Import spreadsheet导入边文件。
原始的效果如下:
同样的操作,我们导入node的文件,但是记得加到目前的工作区内。
好的一点,Gephi右侧提供了statistic的功能,会进行一些简单的网络统计计算:例如平均度,模块化指数等,详细的介绍如下:
平均度(Average degree):表示每个节点连接边的平均数,如果络图是无向图,平均度的计算为 2*edges/nodes。
平均路径长度(Average network distance):任意两个节点之间的距离的平均值。反映网络中各个节点间的分离程度。值越小代表网络中节点的连接度越大。
模块化指数(Modularity index):衡量了网络图结构的模块化程度。一般>0.44 就说明该网络图达到了一定的模块化程度。
聚类系数(Clustering coefficient):和平均路径长度一起,能够展示所谓的‘小世界’效应,从而给出一些节点聚类或抱团的总体迹象。网络的小世界特性指网络节点的平均路径小。
网络直径(Diameter):网络图直径最大测量长度,即任意两点都有 1 个最短距离,这些最短距离之中的最大值即为该网络图直径。
====网络调整和美化======
调整node的layout,这里改为Fruchterman Reingold,参数保持默认。
效果如下:
然后,调整点的颜色和大小(这也是为什么设置一个node的文件,为了方便进行控制)。点的颜色在Partition选项下选择taxonomy列的数据,点(眼睛的图标)的大小选degree(我选的min=10,max=30),效果如下:
Preview里面可以查看最终的效果图,其中预览里面:
边框宽度:设为0.0,不显示节点边框。
显示标签:打勾,显示节点标签。
字体:此处修改为 Times New Roman 23号加粗
缩短标签:打勾,不然标签会过长导致相互覆盖。
厚度:根据显示需要修改边线厚度,此处可以修改(5)。
重新调整权重:打勾,根据边线权重显示不同厚度。
点的颜色也可以在Partition选项下选择计算得到的Modularity的数据,会按模块进行着色。
Gephi 支持多种格式的输出:SVG、PNG、PDF、gexf图文件等。
导出的矢量图可用AI等图形编辑软件进一步修改,图形文件(GEXF (Graph Exchange XML Format) )也可以用脚本来处理,图个性化地添加图例等。图文件也是一种标签语言(感觉类似HTML语言格式,感觉可以自己修改了)。
本文使用 文章同步助手 同步