igaph 是一个项目,目标是建立一条简单,易用的网络分析工具,有 R, python, C/C++ 等语言的具体实现;

项目主页:

http://igraph.org/

在R语言中,对应的就是 igraph 这个R包

安装:

install.packages("igraph")

使用:

对于图 graph 这种数据结构而言,最基本的元素包括节点(node) 和 边(节点之间的连线,edge);

igraph 这个R包提供了很多种创建graph的方式,我们先看一个最基本的例子,从数据框创建一个graph;

我们将要创建的graph 如下:

可以看到,这个graph 包括5个节点,首先创建一个数据框,这个数据框中的每一行是一个节点,每一列是节点的属性

代码如下:

> actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David",
"Esmeralda"),
age=c(48,33,45,34,21),
gender=c("F","M","F","M","F")) > actors
name age gender
1 Alice 48 F
2 Bob 33 M
3 Cecil 45 F
4 David 34 M
5 Esmeralda 21 F

actors 这个数据框保存了图中所有节点的信息,共5个节点,有name, age, gender 3种属性;注意节点的属性是自定义的

接下来创建另外一个数据框,保存边的信息,

代码如下:

> relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
+ "David", "Esmeralda"),
+ to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
+ same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE),
+ friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3))
> relations
from to same.dept friendship advice
1 Bob Alice FALSE 4 4
2 Cecil Bob FALSE 5 5
3 Cecil Alice TRUE 5 5
4 David Alice FALSE 2 4
5 David Bob FALSE 1 2
6 Esmeralda Alice TRUE 1 3

relations 数据框保存了节点之间的连线信息, from, to 两列描述了这条边是从哪个节点到哪个检点,最后的3列是每条边的一些自定义的属性

当两个数据框创建完成之后,就可以利用 graph_from_data_frame 函数创建一个graph, 代码如下:

g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)

第一个参数是保存edge 信息的数据框,directed 参数控制graph 有无方向,vertices 参数是保存节点信息的数据框

最后进行一个简单的可视化

plot(p)

就可以得到如下所示的图:

上面只是最基本的可视化的例子,对于graph 而言,有directed graph 和 undirected graph 两种,在可视化的时候,最核心的东西是计算每个节点的位置,对于不同类型的graph, 有不同的自动化的布局算法

通过layout 参数可以方便的指定,使用不同的布局算法

代码示例:

plot(g, layout = layout.fruchterman.reingold)

效果图如下:

参考资料:

https://rdatamining.wordpress.com/2012/05/17/an-example-of-social-network-analysis-with-r-using-package-igraph/

http://kateto.net/networks-r-igraph

R语言igraph 包-构建网络图的更多相关文章

  1. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  2. R语言-神经网络包RSNNS

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  3. R语言-Knitr包的详细使用说明

    R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...

  4. R语言dplyr包初探

    昨天学了一下R语言dplyr包,处理数据框还是很好用的.记录一下免得我忘记了... 先写一篇入门的,以后有空再写一篇详细的用法. #dplyr learning library(dplyr) #fil ...

  5. R语言扩展包dplyr——数据清洗和整理

    R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报  分类: R Programming(11)  ...

  6. 安装R语言的包的方法

    安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA")  # 安装 TSA install.packages("TS ...

  7. R语言rvest包网络爬虫

    R语言网络爬虫初学者指南(使用rvest包) 钱亦欣 发表于 今年 06-04 14:50   5228 阅读   作者 SAURAV KAUSHIK 译者 钱亦欣 引言 网上的数据和信息无穷无尽,如 ...

  8. Bagging(R语言实现)—包外错误率,多样性测度

    1.      Bagging Bagging即套袋法,其算法过程如下: 从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次 ...

  9. R语言扩展包dplyr笔记

    引言 2014年刚到, 就在 Feedly 订阅里看到 RStudio Blog 介绍 dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等 ...

随机推荐

  1. 【linux排错】"error while loading shared libraries: xxx.so.x" 错误的原因和解决办法

    一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: lcw: error : cannot open shared object file: No such file ...

  2. js模拟form打开新窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. vs code 快捷键的使用

    vs code 快捷键的使用 shift + f12 快速查找函数的生成Ctrl+F12 查看单个函数的定义Shift+F12 查看所有函数的定义ctrl + ` 是打开运行的程序ctrl + Tab ...

  4. tf.Variable

    tf.Variable __init__( initial_value=None, trainable=True, collections=None, validate_shape=True, cac ...

  5. Eclipse Git下载问题:Internal error; consult Eclipse error log

    在使用Git下载代码时偶尔会遇到  Internal error; consult Eclipse error log 这个报错. 简述下个人解决思路: Eclipse 错误日志报错为:org.ecl ...

  6. DB2安装过程中可能遇到的错误

    WARNING:DBT3534W  The db2prereqcheck utility determined that ASLR is set to ON and that this could c ...

  7. go语言简述

    Go是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go语言被设计成一门应用于搭建web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言.对于高性能分布式系统领域而言,Go语 ...

  8. Medium开发团队谈架构设计_转

    转自:Medium开发团队谈架构设计 背景 说到底,Medium是个社交网络,人们可以在这里分享有意思的故事和想法.据统计,目前累积的用户阅读时间已经超过14亿分钟,合两千六百年. 我们支持着每个月两 ...

  9. 如何在CentOS 6.5上升级PHP

    CentOS 6.5上默认安装PHP 5.3.因为后台网站无法正确运行在PHP 5.3上,所以计划将PHP升级到开发平台一样的版本PHP 5.5.为了方便,我们采用YUM的方式升级PHP 工具/原料 ...

  10. python django查询12306火车票

    逢年过节,想坐个高铁票,都得上12306去买票,但用过的都会发现,它会把临近站点的也筛出来了.但有时我们压根就不会考虑买到临近站点的. 另一方面,在购票高峰期,有可能你要的出发站到目的站都没有票了,这 ...