R语言igraph 包-构建网络图
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 包-构建网络图的更多相关文章
- R语言 ggplot2包
R语言 ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...
- R语言-神经网络包RSNNS
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- R语言-Knitr包的详细使用说明
R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...
- R语言dplyr包初探
昨天学了一下R语言dplyr包,处理数据框还是很好用的.记录一下免得我忘记了... 先写一篇入门的,以后有空再写一篇详细的用法. #dplyr learning library(dplyr) #fil ...
- R语言扩展包dplyr——数据清洗和整理
R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报 分类: R Programming(11) ...
- 安装R语言的包的方法
安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA") # 安装 TSA install.packages("TS ...
- R语言rvest包网络爬虫
R语言网络爬虫初学者指南(使用rvest包) 钱亦欣 发表于 今年 06-04 14:50 5228 阅读 作者 SAURAV KAUSHIK 译者 钱亦欣 引言 网上的数据和信息无穷无尽,如 ...
- Bagging(R语言实现)—包外错误率,多样性测度
1. Bagging Bagging即套袋法,其算法过程如下: 从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次 ...
- R语言扩展包dplyr笔记
引言 2014年刚到, 就在 Feedly 订阅里看到 RStudio Blog 介绍 dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等 ...
随机推荐
- 将map中的查询参数拼装到URL路径中
被调接口的URL路径: //被调接口url String apiUrl = "http://api.open.xxxxxx.com/implatform/interview/send?acc ...
- Android下基于SDL的位图渲染(一)
环境准备 安装Android开发环境(java.android-sdk.android ndk.gcc). 我使用的ndk版本是r10b/r10d,在win10/ubutu 15.04编译 下载sdl ...
- ROW_NUMBER() OVER函数的基本用法,也可用于去除重复行
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW ...
- LeetCode: Binary Search Tree Iterator 解题报告
Binary Search Tree Iterator Implement an iterator over a binary search tree (BST). Your iterator wil ...
- Windows系统盘瘦身指南
[本文出自天外归云的博客园] Windows系统的C盘空间越来越小,按以下四步进行清理,还你6个G: 1.开启腾讯管家之类的软件进行第一轮垃圾清理: 2.删除以下文件夹,"C:\Progra ...
- Redis 密码设置
如果不加密码,默认只能本机访问,加密码也是为了安全考虑 1.进入Redis 的安装目录,找到redis.conf文件.用vi命令打开文件 输入 / requirepass 进行查找,输入n查找下一个 ...
- SVD分解及线性最小二乘问题
这部分矩阵运算的知识是三维重建的数据基础. 矩阵分解 求解线性方程组:,其解可以表示为. 为了提高运算速度,节约存储空间,通常会采用矩阵分解的方案,常见的矩阵分解有LU分解.QR分解.Cholesky ...
- PHP error_reporting() 函数
实例 规定不同的错误级别报告: <?php // 关闭错误报告 error_reporting(0); // 报告 runtime 错误 error_reporting(E_ERROR | E_ ...
- 【Android】Android6.0读取通话记录
需求:读取通话记录,然后列表显示,每条记录的数据包括姓名.号码.类型(来电.去电.未接,字体颜色分别为绿.蓝.红),然后长按条目弹出一个列表弹窗,显示[复制号码到拨号盘].[发短信].[打电话]. 先 ...
- mysql中varbinary、binary、char、varchar异同
binary 与 varbinary 类型和char与varchar类型是相似的,只是他们存储的是二进制数据,也就是说他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于 ...