R语言的igraph画社交关系图示例

R语言中的igraph可以很方便地画出社交关系图。下面是几个示例。

1.最简单的社交关系图

library(igraph)

dolphin <- read.csv('dolphins.csv',head=T,fileEncoding='UTF-8',stringsAsFactors=F)

g <- graph.data.frame(dolphin)

jpeg(filename='dolphins.jpg',width=800,height=800,units='px')

plot(g,

vertex.size=5,

layout=layout.fruchterman.reingold,

vertex.shape='circle',

vertex.label.cex=1.0,

vertex.label.color='black',

edge.arrow.size=0) #连线的箭头的大小为0,即无箭头

dev.off()

画出的图,如下:

2.关系图中某人或某几个人的关系图

某个人(这里是海豚)的关系图(节点4):

jpeg(filename='dolphins_sub.jpg',width=800,height=800,units='px')

gn<-graph.neighborhood(g, order=1)

plot(gn[[1]],

layout=layout.fruchterman.reingold)

dev.off()

某个人的两层关系图(节点6):

gn<-graph.neighborhood(g, order=2)

plot(gn[[2]], layout=layout.fruchterman.reingold)

dev.off()

某两个人的关系图:

jpeg(filename='dolphins_sub3.jpg',width=800,height=800,units='px')

gn<-graph.neighborhood(g, order=1)

plot(gn[[1]]+gn[[2]], layout=layout.fruchterman.reingold)

dev.off()

3.根据联系人的多少决定节点的大小和色彩,连线设成弧线

source("http://michael.hahsler.net/SMU/ScientificCompR/code/map.R")

E(g)$curved <- 0.2 #将连线设成弧线,数值越大弧线越弯

jpeg(filename='dolphins_curve1.jpg',width=800,height=800,units='px')

layout=layout.fruchterman.reingold

plot(g, layout=layout, vertex.size=map(degree(g),c(1,20)), vertex.color=map(degree(g),c(1,20)))

dev.off()

4.给社交关系图划分社区,不同的社区用不同的颜色表示

cl <- optimal.community(g)

E(g)$curved <- 0

jpeg(filename='dolphins_commu2.jpg',width=800,height=800,units='px')

layout=layout.fruchterman.reingold

plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[cl$membership+1L],)

dev.off()

5.设定社区的数目

sg1 <- cluster_spinglass(g, spins=3, gamma=1.0) #spins是社区的数目

jpeg(filename='dolphins_commu9.jpg',width=800,height=800,units='px')

layout=layout.fruchterman.reingold

plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[sg1$membership],)

dev.off()

6.画出某一社区

画出示例5的社区中,membership为1的社区。

sg1 <- cluster_spinglass(g, spins=3, gamma=1.0)

jpeg(filename='dolphins_subcommu.jpg',width=800,height=800,units='px')

layout=layout.fruchterman.reingold

subg <- induced.subgraph(g, which(membership(sg1)==1))

plot(subg, layout=layout, vertex.size=5, vertex.color= 1,)

dev.off()

7.不同布局方式下社区的显示

以上的布局为layout=layout.fruchterman.reingold

如果是其他布局,社区的显示会有变化。

sg1 <- cluster_spinglass(g, spins=3, gamma=1.0)

jpeg(filename='dolphins_commu10.jpg',width=800,height=800,units='px')

layout=layout.circle

plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[sg1$membership],)

dev.off()

sg1 <- cluster_spinglass(g, spins=3, gamma=1.0)

jpeg(filename='dolphins_commu11.jpg',width=800,height=800,units='px')

layout=layout.sphere

plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[sg1$membership],)

dev.off()

以上的示例仅为抛砖引玉。

有关igraph的demo可以看demo(package="igraph")。

在R中键入demo(package="igraph"),它会给出子项目:

centrality Classic and other vertex centrality indices

cohesive Cohesive blocking, the Moody & White method

community Community structure detection

crashR A crash-course into R

hrg Hierarchical random graphs

smallworld Small-world networks

然后键入子项目看demo。如demo(package="igraph", community),它会给出community的示例。

原文发布时间为:2015-08-31

时间: 2024-08-25 13:20:07

R语言的igraph画社交关系图示例的相关文章

WEB画人立方关系图

问题描述 效果:SOSO的华尔兹http://tag.soso.com/i/%E8%94%A1%E4%BE%9D%E6%9E%97?pid=tag.index.hot&ch=tag.index.hothttp://tag.soso.com 人立方http://renlifang.msra.cn/guanximap.aspx?query=%e5%a7%9a%e6%98%8e 目前的需求:希望使用WEB开发一个关系图,首先是粗线条的,打个比方:比如先是国家与国家的关系,然后产生一个图,再点到某个国家

使用python绘制人人网好友关系图示例_python

代码依赖:networkx matplotlib 复制代码 代码如下:  #! /bin/env python# -*- coding: utf-8 -*- import urllibimport urllib2import cookielibimport reimport cPickle as pimport networkx as nximport matplotlib.pyplot as plt __author__ = """Reverland (lhtlyy@gma

预测分析:R语言实现.

数据科学与工程技术丛书 预测分析:R语言实现 Mastering Predictive Analytics with R [希] 鲁伊·米格尔·福特(Rui Miguel Forte) 著 吴今朝 译 图书在版编目(CIP)数据 预测分析:R语言实现/(希)鲁伊·米格尔·福特(Rui Miguel Forte)著:吴今朝译. -北京:机械工业出版社,2016.10 (数据科学与工程技术丛书) 书名原文:Mastering Predictive Analytics with R ISBN 978-

为什么要学习R语言

R的诞生 1992年, 肉丝 (Ross Ihaka)和 萝卜特 (Robert Gentleman)两个人在S语言(贝尔实验室开发的一种统计用编程语言)的基础上开始构思一种新的用于统计学分析的开源语言,直到1995年第一个版本正式发布(和各位年龄相仿).因为他们名字的第一个字母都是R,所以这门语言就被叫做R.这两个人都是统计学教授出身,再加上R语言的生父S语言,所以 R语言在统计学方面有着纯正的血统 ! 如果你平时的工作会涉及到统计学,那么接触R语言实在是太正常不过了. 另外,关于R语言的开发

哈佛教授公开R语言源码,教你用R制作gif动图

在日常教学的过程中,我有时会用动画来形象地解释概念,并且通过 @rafalab账号(https://twitter.com/rafalab)在社交媒体上分享. John Storey最近问我是否可以公开这些源代码.由于我不甚有条理,而且这些动画都是灵机一动想出来的,所以之前这些代码分散在几个不相关联的文件中.John的请求促使我把这些代码整理在一起发布在这里. 所有的gif动图都是用R语言绘制的数张图片的叠加.在代码中你可以发现,我用几种不同的方法将单独的图片转化成动态gif图.第一种方法(不推

独家 | 6步教你用R语言制作动图

引言   数据可视化可能是数据科学领域最重要却通常最少被提及的部分.   我这么说是因为创造数据故事和可视化对你的顾客最终怎么看待你的工作有巨大的影响.数据科学不仅仅是说你的模型如何复杂或精细,它是使用基于数据的洞察力来解决问题(的范畴).并且,为了实施这些解决方案,你的领导们需要了解你的计划. 在创造有影响力的可视化进程中,挑战之一便是创造能够自己讲话的图像.这篇文章将会告知一种方式来帮你创作可使用的生动的GIF图像(即图表可交互化格式).当你想要显示基于时间或者基于循环的故事时,这种方式将对

java web-java 画url之间的关系图

问题描述 java 画url之间的关系图 用java jdk1.8,以wwww.jxufe.cn的域名为例,分析该域名下(超出该域名的网页忽略)所有网页的静态链接关系,并运用图形的方式展现关系. 有可以提供的思路么?我想问问有什么开源框架来画各种url之间的关系图呢?谢谢大家 解决方案 无非就是抓取页面,正则表达式提取链接,然后递归抓取,放在一个图的数据结构中. 在一个2d平面上画出所有节点,并且把他们之间有关系的用直线连起来. 当然,要考虑图的美观,需要额外的算法. 解决方案二: 去学学数据挖

RKWard v0.5.5发布 一款R语言的图形化开发工具

RKWard v0.5.5发布一款R语言的图形化开发工具.R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. 更新说明: New features and improvements - Re-organize the default toolbar actions of the main window - Detached windows are now restored in detached state w

奥美发布国内外社交媒体竞争关系图

中介交易 SEO诊断 淘宝客 云主机 技术大厅 奥美发布国内外社交媒体竞争关系图(点击原图直接查看大图) [搜狐IT消息]北京时间3月3日消息,据国外媒体报道,奥美(Ogilvy)日前发布了一份信息图,详细列出了各领域内的主要社交媒体网站及对应的中国同类网站. 该信息图的上一个版本是六个月前发布的,随着团购网站Groupon和问答网站Quora,以及腾讯的迅速崛起,旧版的信息已经不够准确. 新版信息图显示:网络销售领域主要由eBay.淘宝和京东展开角逐.社交网络领域则是LinkedIn对阵Wel