R包igraph探究
前段时候由于项目的原因,需要画图,然后开始接触R语言的igraph包,网上零零散散的搜罗了不少的信息,放在这边交流分享的同时也给自己留个备份吧~
1.首先是读取文件,基本选用的都是csv文件
edge1<-read.csv("D:/9th_smj/onetimecut.csv",header=F)
vertex3<-read.csv("D:/9th_smj/vertex.csv",header=F)
2.设置变量的格式
edge1[,1]=as.character(edge1[,1])
edge1[,2]=as.character(edge1[,2])
edge1[,3]=as.character(edge1[,3])
edge1[,4]=as.character(edge1[,4])
edge<-edge1[c(1,3)]
vertex3[,1]=as.character(vertex3[,1])
vertex3[,2]=as.character(vertex3[,2])
3.图构建
people = data.frame(id = vertex3[,1], name = vertex3[,2]) g=graph.data.frame(d=edge,direct=T,vertices=people)
4.画图
png('D:/9th_smj/cuttoone.png',width=900,height=900)
set.seed(20)#设定种子节点,同一种布局画出来的图就是可以重复,不然即使同一种布局,展现的时候由于位置的随机也会呈现出不一样的结果
plot(g, layout = layout.fruchterman.reingold, vertex.size = V(g)$size+2,vertex.color=V(g)$color,vertex.label=V(g)$label,vertex.label.cex=1,edge.color = grey(0.5), edge.arrow.mode = "-",edge.arrow.size=5)
dev.off()
针对plot函数的一些参数,特别解释下:
4.1 layout设置图的布局方式
选项有:layout、layout.auto、layout.bipartite、layout.circle、layout.drl、layout.fruchterman.reingold、layout.fruchterman.reingold.grid、layout.graphopt、layout.grid、layout.grid.3d、layout.kamada.kawai、layout.lgl、layout.mds、layout.merge、layout.norm、layout.random、layout.reingold.tilford、layout.sphere、layout.spring、layout.star、layout.sugiyama、layout.svd
4.2 vertex.size设置节点的大小:不同节点不同大小
de<-read.csv("c:/degree-info.csv",header=F)
V(g)$deg<-de[,2]
V(g)$size=2
V(g)[deg>=1]$size=4
V(g)[deg>=2]$size=6
V(g)[deg>=3]$size=8
V(g)[deg>=4]$size=10
V(g)[deg>=5]$size=12
V(g)[deg>=6]$size=14
4.3 vertex.color设置节点的颜色:不同标记有不用的颜色
color<-read.csv("c:/color.csv",header=F)
col<-c("red","skyblue")
V(g)$color=col[color[,1]]
4.4 vertex.label设置节点的标记
V(g)$label=V(g)$name vertex.label=V(g)$label
4.5 vertex.label.cex设置节点标记的字体大小
4.6 edge.color设置边的颜色:不同的边有不一样的颜色
E(g)$color="grey"
for(i in 1:length(pa3[,1])){
E(g,path=pa3[i,])$color="red"
}
edge.color=E(g)$color
4.7 edge.arrow.mode设置边的连接方式
4.8 edge.arrow.size设置箭头的大小
4.9 设置边的宽度
E(g)$width=1
5.聚类分析
感觉igraph包所提供的聚类算法还是很多的,将几种常用的列出,随后有时间的话再附上算法思想及参考文献
5.1 边的中介度聚类
system.time(ec <- edge.betweenness.community(g))
print(modularity(ec))
plot(ec, g,vertex.size=5,vertex.label=NA)
5.2 随机游走
system.time(wc <- walktrap.community(g))
print(modularity(wc))
#membership(wc)
plot(wc , g,vertex.size=5,vertex.label=NA)
5.3 特征值(个人理解觉得类似谱聚类)
system.time(lec <-leading.eigenvector.community(g))
print(modularity(lec))
plot(lec,g,vertex.size=5,vertex.label=NA)
5.4 贪心策略?
system.time(fc <- fastgreedy.community(g))
print(modularity(fc))
plot(fc, g,vertex.size=5,vertex.label=NA)
5.5 多层次聚类
system.time(mc <- multilevel.community(g, weights=NA))
print(modularity(mc))
plot(mc, g,vertex.size=5,vertex.label=NA)
5.6 标签传播
system.time(lc <- label.propagation.community(g))
print(modularity(lc))
plot(lc , g,vertex.size=5,vertex.label=NA)
6.文件输出
zz<-file("d:/test.txt","w")
cat(x,file=zz,sep="\n")
close(zz)
7.查看变量数据类型和长度
mode(x)
length(x)
R包igraph探究的更多相关文章
- R语言igraph 包-构建网络图
igaph 是一个项目,目标是建立一条简单,易用的网络分析工具,有 R, python, C/C++ 等语言的具体实现: 项目主页: http://igraph.org/ 在R语言中,对应的就是 ig ...
- R包介绍
R语言的使用,很大程度上是借助各种各样的R包的辅助,从某种程度上讲,R包就是针对于R的插件,不同的插件满足不同的需求,截至2013年3月6日,CRAN已经收录了各类包4338个. 一. R语言包的安装 ...
- R 包
[下面列出每个步骤最有用的一些R包] .数据导入 以下R包主要用于数据导入和保存数据: feather:一种快速,轻量级的文件格式:在R和python上都可使用 readr:实现表格数据的快速导入 r ...
- R包MetaboAnalystR安装指南(Linux环境非root)
前言 这是代谢组学数据分析的一个R包,包括用于代谢组学数据分析.可视化和功能注释等众多功能.最近有同事在集群中搭建蛋白和代谢流程,安装这个包出现了问题,于是我折腾了一上午. 这个包的介绍在:https ...
- 普通用户安装 R 包
转自 http://bnuzhutao.cn/archives/901 一般 R 语言的书籍上,介绍安装 R 包的方法都是这样的: install.packages("packagename ...
- R(三): R包原理及安装
包(package)是多个函数的集合,常作为分享代码的基本单元,代码封装成包可以方便其他用户使用.越来越多的R包正在由世界上不同的人所创建并分发,这些分发的R包,可以从CRAN 或 github 上获 ...
- 高质量、处于持续更新的R包
本文在Creative Commons许可证下发布 自由软件的问题是开发人员没有稳定的资金来源支持,可能更新上做不到持续.经过考证和圈内朋友的帮助,现在把R包中高质量.持续更新的跟大数据事业相关的R包 ...
- 如何将R包安装到自定义路径
参考 设置环境变量R_LIBS将R包安装到自定义路径 实际上是可以解决问题的, #环境变量完成以后,启动(重启)R,运行 .libPaths() 加载R包时,发现路径仍然未变成自定义的. 那么参 ...
- 工业级GBDT算法︱微软开源 的LightGBM(R包正在开发....)
看完一篇介绍文章后,第一个直觉就是这算法已经配得上工业级属性.日前看到微软已经公开了这一算法,而且已经发开python版本,本人觉得等hadoop+Spark这些平台配齐之后,就可以大规模宣传啦~如果 ...
随机推荐
- OpenStack调研:OpenStack是什么、版本演变、组件关系(Havana)、同类产品及个人感想
一点调研资料,比较浅,只是觉得部分内容比较有用,记在这里: 首先,关于云计算,要理解什么是SAAS.PAAS.IAAS,这里不述:关于虚拟化,需要知道什么是Hypervisor,这里也不述: Open ...
- 附加数据库后无法创建发布,error 2812 解决
日前,由于业务需要,我要把一个数据库直接迁移到新的实例上 用的方法比较古老,就是直接停旧服务器,将数据文件复制到新服务器上,附加数据库 当然这个附加没有什么可说的了,但是在附加后需要将原来库上的发布重 ...
- 帆软报表FineReport中数据连接之Weblogic配置JNDI连接
1. 制作报表的原理 在帆软报表FineReport设计器中先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成J ...
- UrlEncode 和 HtmlEncode
UrlEncode 是将指定的字符串按URL编码规则,包括转义字符进行编码.
- Hibernate中Java对象的三种状态
Hibernate中Java对象的三种 ...
- PAT 1041. 考试座位号(15)
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...
- win2008无密码共享
http://jingyan.baidu.com/album/76a7e409dc4b5cfc3a6e1566.html?picindex=15
- Java里String.split需要注意的用法
我们常常用String的split()方法去分割字符串,有两个地方值得注意: 1. 当分隔符是句号时("."),需要转义: 由于String.split是基于正则表达式来分割字符串 ...
- JSX语法简介
React的核心机制之一就是可以在内存中创建虚拟的DOM元素.React利用虚拟DOM来减少对实际DOM的操作从而提升性能. JSX简介 JSX就是Javascript和XML结合的一种格式.Reac ...
- Js前端代码异常监控
window.onerror = function(msg,url,line,col,error){ //没有URL不上报!上报也不知道错误 if (msg != "Script error ...