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, 有不同的自动化的布局算法

参考资料:

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

时间: 2024-10-29 19:08:15

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

安装R语言的包的方法

安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA")  # 安装 TSA install.packages("TSA", contriburl="url",  dependencies = TRUE) # 安装TSA 2. 手动安装(离线安装) 在Windows下: 下载对应的package.zip文件 打开R的菜单条->Packages->"Install packa

R语言的包管理功能

现代的开发语言都已经不再是单一的编程语言和编译环境,而是一个网络化的分布式系统.通过包(packages)管理程序进行软件模块的安装.卸载.更新等操作. 包管理的思路从Linux操作系统而来,通过Debian的apt-get可以从全球数万个网站快速获取软件的最新版本.在Mac OS X上也可以通过MacPort或Brew进行软件包的管理.Java语言自己不带包管理程序,但可通过maven进行包的自动下载和编译.链接.nodejs是通过npm进行包管理.python通过pip进行包管理.这些都是在

R语言diagram包画订单状态流图

代码如下: library("diagram") #a <- read.table(file="clipboard",header=TRUE) write.table(a,file="a.txt",sep=";") aa <- a c <- matrix(nrow=ncol(aa),ncol=ncol(aa),0) i <- 1 while(i<=ncol(aa)){ j <- 1 whil

R语言TTR包的安装

R语言是一门统计语言,主要用于数学建模.统计计算.数据处理.可视化 等几个方向,R语言天生就不同于其他的编程语言.R语言封装了各种基础学科的计算函数,我们在R语言编程的过程中只需要调用这些计算函数,就可以构建出面向不同领域.不同业务的.复杂的数学模型. 一.作用 1.TTR包的目的是在R当中构造技术分析和其它技术交易规则的函数.TTR可在CRAN中找到,目前的版本号是0.22(更新2013-3-18). TTR目前的功能是提供了一些常见的技术分析指标的函数,可以分为下面几类: 移动平均 趋势检测

R语言igraph作社团挖掘结果图

利用R语言的igraph作社团挖掘的图 输入:网络拓扑文件(边);社区划分结果文件(顶点  社区号) 输出:社区划分的结果图 代码: ######测试代码###### if(T){ library(igraph) library(grDevices) rm(list=ls()) network=read.csv("./dataset/data/karate.txt",sep=" ",header=F) community=read.csv("./resul

R语言 机器学习包

from:http://www.zhizhihu.com/html/y2009/410.html 机器学习是计算机科学和统计学的边缘交叉领域,R关于机器学习的包主要包括以下几个方面:  1)神经网络(Neural Networks): nnet包执行单隐层前馈神经网络,nnet是VR包的一部分(http://cran.r-project.org/web/packages/VR/index.html).  2)递归拆分(Recursive Partitioning): 递归拆分利用树形结构模型,来

R语言jiebaR包的分词学习

实训中的自然语言处理部分,首先就是要分词了,学习一下! 上手jiebaR 使用jiebaR的第一步当然是安装jiabaR包并加载咯 安装: install.packages("jiebaR")    加载:  library(jiebaR) 三种分词语句的写法: wk = worker() #方法1 wk["我希望未来会很好"] #方法2 wk<="我希望未来会很好" #此处用=的话可不行哟 #方法3 segment("我希望未来

R语言 recommenderlab 包

recommend li_volleyball 2016年3月20日 library(recommenderlab) ## Warning: package 'recommenderlab' was built under R version 3.2.4 ## Loading required package: Matrix ## Loading required package: registry ## Loading required package: arules ## ## Attach

R语言XML包的数据抓取

htmlParse 函数 htmlParse加抓HTML页面的函数. url1<-"http://www.caixin.com/"url<-htmlParse(url1,encoding="UTF-8") 但是有的网站会出现报错.例如淘宝,错误信息为: Warning message:XML content does not seem to be XML: 'https://www.taobao.com/' 原因为htmlParse可以抓取http的页面