igraph包快速上手

浏览: 3771

在R中,igraph包是专门用来处理网络图的。使用之前先通过install.packages("igraph")下载安装。

igraph包非常容易创建各种常规图,其中包括无边图(make_empty_graph函数)、星形图(make_star函数)、环形图(make_ring函数)、完全图(make_full_graph函数)、树状图(make_tree函数)等图形。这些函数的用法都非常简单,读者请查阅帮助文档。

我们还有另外一种创建各种布局网络图的通用方法,就是先创建一个graph对象,然后利用plot函数绘制网络图,并通过设置layout参数来实现不同布局的效果。

> library(igraph)
> g <- graph(c(2,1,3,1,4,1,5,1,6,1,7,1),directed = F) #创建无向图g
> par(mfrow=c(2,3))
> plot(g,vertex.size=40,layout=layout_on_grid,main="简单的网格布局") # 简单的网格布局
> plot(g,vertex.size=40,layout=layout.auto,main="自动布局") #自动布局
> plot(g,vertex.size=40,layout=layout_as_star,main="星形布局") #星形布局
> plot(g,vertex.size=40,layout=layout.circle,main="环形布局") # 环形布局
> plot(g,vertex.size=40,layout=layout_randomly,main="随机布局") # 随机布局
> plot(g,vertex.size=40,layout=layout_as_tree(g),main="树状布局") # 树状布局
> par(mfrow=c(1,1))

Clipboard Image.png

网络关系图包括3大元素:点、边、点与边的标识。我们可以对其进行优化。

> # 对网络图g进行美化
> library(RColorBrewer)
> weight <- seq(1,3,length.out=ecount(g)) #生成边的权重
> # 方法一
> V(g)$color <- brewer.pal(9,"Set1")[1:vcount(g)] # 设置点填充颜色
> V(g)$frame.color <- NA # 不显示点边框
> V(g)$label.color <-"white" # 设置点标签颜色为白色
> V(g)$label.font <- 2 # 设置点标签的字体为粗体
> V(g)$label.cex <- 2 # 设置点标签字体大小
> E(g)$width <- weight # 根据边的权重设置边的粗细
> E(g)$color <- "steelblue4" # 设置边的颜色
> E(g)$lty <- 2 # 设置边为虚线
> plot(g,main="对网络图g进行美化")

Clipboard Image.png

Gephi是专业的复杂网络分析软件,基于Java开发,使用OpenGL作为可视化引擎。所以需要在本机安装jre1.7以上版本,才能正常使用Gephi。在其主页http://gephi.org/上可以下载最新的版本,其针对Windows、Linux、Mac X系统都提供了发布版可以直接安装。

现在,我们通过Gephi工具来对某款游戏的社交性进行分析。首先新建一个项目,然后在数据资料选择中,点击输入电子表格,将节点数据集Nodes和边数据集Links导入到Gephi中:

Clipboard Image.png

Clipboard Image.png

当我们把数据导入到Gephi后,在概览的图窗口已生成一个简单网络图,右上角显示了一共有77个节点和254条边,创建的是有向图。

Clipboard Image.png

自动生成的网络图相对来说比较简单,我们利用左上角的外观设置来改变节点颜色。方法是在数值设定的选择一种渲染方式的下拉框中选择Group,让不同组别节点用不同颜色表示;并点击图下方的T按钮,显示节点标签。

Clipboard Image.png

在左下角布局功能中选择一个布局选项,我们可以在下拉框选择自己希望的网络图布局,并可以调整布局参数。

Clipboard Image.png

推荐 3
本文由 谢佳标 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册