作者:谢佳标
微软中国MVP,多届中国R语言大会演讲嘉宾,目前在创梦天地担任高级数据分析师一职, 作为创梦天地数据挖掘组的负责人,带领团队对游戏数据进行深度挖掘, 主要利用R语言进行大数据的挖掘和可视化工作。
在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))
网络关系图包括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进行美化")
Gephi是专业的复杂网络分析软件,基于Java开发,使用OpenGL作为可视化引擎。所以需要在本机安装jre1.7以上版本,才能正常使用Gephi。在其主页http://gephi.org/上可以下载最新的版本,其针对Windows、Linux、Mac X系统都提供了发布版可以直接安装。
现在,我们通过Gephi工具来对某款游戏的社交性进行分析。首先新建一个项目,然后在数据资料选择中,点击输入电子表格,将节点数据集Nodes和边数据集Links导入到Gephi中:
当我们把数据导入到Gephi后,在概览的图窗口已生成一个简单网络图,右上角显示了一共有77个节点和254条边,创建的是有向图。
自动生成的网络图相对来说比较简单,我们利用左上角的外观设置来改变节点颜色。方法是在数值设定的选择一种渲染方式的下拉框中选择Group,让不同组别节点用不同颜色表示;并点击图下方的T按钮,显示节点标签。
在左下角布局功能中选择一个布局选项,我们可以在下拉框选择自己希望的网络图布局,并可以调整布局参数。
彩蛋要不要
R语言资深实战讲师谢佳标老师,继R语言十三式之后,利剑再出!
十五大案例,面向实战,案例满满,学完即用!
心血课程、口碑讲师,扬帆出发,理论结合应用,握住开启R语言实战之门金钥匙!
课程更有天善学院促销活动等你来,炎炎六月,热力绝配!
点击阅读原文或扫码立即学习