作者简介: 本文作者系大学统计学专业教师,多年从事统计学的教学科研工作,在随机过程、统计推断、机器学习领域有深厚的理论积累与应用实践。

igraph是一套用于网络分析与可视化的r包,它以高效、便捷、使用简单的特点在网络分析研究中广泛采用。igraph可以在R环境下免费下载安装,目前也有Python实现的igraph. 本文将介绍如何使用igraph包进行基础的网络分析与可视化。

1. igraph 网络

首先,清除R环境里的所有对象后,加载igraph包。

# Remove all the objects we created so far.
rm(list = ls())
library(igraph)

1.1 产生一个网络

我们产生一个有3个结点的无向图。它的结点用1, 2, 3表示,边分别是1–>2, 2–>3, 3–>1.

g1 <- graph( edges=c(1,2, 2,3, 3, 1), n=3, directed=F )
# A simple plot of the network
plot(g1)


g1是一个igraph对象。现在,我们生成一个10结点的有向图。

g2 <- graph( edges=c(1,2, 2,3, 3, 1), n=10 )
plot(g2)

g3 <- graph( c("John", "Jim", "Jim", "Jill", "Jill", "John")) # named vertices
# When the edge list has vertex names, the number of nodes is not needed
plot(g3)

g4 <- graph( c("John", "Jim", "Jim", "Jack", "Jim", "Jack", "John", "John"), isolates=c("Jesse", "Janis", "Jennifer", "Justin") )
# In named graphs we can specify isolates by providing a list of their names.
plot(g4, edge.arrow.size=.5, vertex.color="gold", vertex.size=15, vertex.frame.color="gray", vertex.label.color="black", vertex.label.cex=0.8, vertex.label.dist=2, edge.curved=0.2)


下面的代码生成不同风格的图。

plot(graph_from_literal(a---b, b---c)) # the number of dashes doesn't matter

plot(graph_from_literal(a--+b, b+--c))

plot(graph_from_literal(a+-+b, b+-+c))

plot(graph_from_literal(a:b:c---c:d:e))

gl <- graph_from_literal(a-b-c-d-e-f, a-g-h-b, h-e:f:i, j)
plot(gl)

1.2 边、结点与网络属性

显示边与结点

E(g4) # The edges of the object

+ 4/4 edges (vertex names):
[1] John->Jim Jim ->Jack Jim ->Jack John->John

V(g4) # The vertices of the object

+ 7/7 vertices, named:
[1] John Jim Jack Jesse Janis Jennifer Justin

显示网络矩阵

g4[]

g4[1,]

V(g4)$name # automatically generated when we created the network.

1.3 图与图模型

空图

eg <- make_empty_graph(40)
plot(eg, vertex.size=10, vertex.label=NA)

完全图

fg <- make_full_graph(40)
plot(fg, vertex.size=10, vertex.label=NA)

星型图

st <- make_star(40)
plot(st, vertex.size=10, vertex.label=NA)

树型图

tr <- make_tree(40, children = 3, mode = "undirected")
plot(tr, vertex.size=10, vertex.label=NA)

环形图

rn <- make_ring(40)
plot(rn, vertex.size=10, vertex.label=NA)

Erdos-Renyi 随机图

# ‘n’ is number of nodes, ‘m’ is the number of edges
er <- sample_gnm(n=100, m=40)
plot(er, vertex.size=6, vertex.label=NA)

Watts-Strogatz small-world model

# Creates a lattice (with dim dimensions and size nodes across dimension) and rewires edges
# randomly with probability p. The neighborhood in which edges are connected is nei.
# You can allow loops and multiple edges.
sw <- sample_smallworld(dim=2, size=10, nei=1, p=0.1)
plot(sw, vertex.size=6, vertex.label=NA, layout=layout_in_circle)

Rewiring a graph

each_edge() 是一个rewiring方法,它以概率prob均匀地随机改变边的终端,即,重新定义边。

rn.rewired <- rewire(rn, each_edge(prob=0.1))
plot(rn.rewired, vertex.size=10, vertex.label=NA)

【R语言实例】igraph — 网络分析与可视化包(2)

【R语言实例】igraph — 网络分析与可视化包(1)相关推荐

  1. 【R语言实例】igraph — 网络分析与可视化包(2)

    作者简介: 本文作者系大学统计学专业教师,多年从事统计学的教学科研工作,在随机过程.统计推 断.机器学习领域有深厚的理论积累与应用实践. 2. 从文件读取网络数据 数据集1: 边列表 边列表数据集由两 ...

  2. R语言用igraph绘制网络图可视化

    这篇文章假定你已经知道如何用igraph库建立一个基本的网络图. 基本上,igraph允许将几种类型的输入转化为一个图形对象,可以使用plot()函数绘制,如下所示. # 创建数据 network & ...

  3. R语言实例:diamonds 数据可视化分析报告

    文章目录 数据描述 导入数据 变量含义 数据清洗 检查缺失值及重复值 探索性分析 钻石的形状 钻石的重量分布 每种切割类型.颜色.清晰度的钻石分别有多少个 钻石的价格 最昂贵的10只钻石的属性信息 理 ...

  4. R语言使用igraph包进行网络(network)可视化实战

    R语言使用igraph包进行网络(network)可视化实战 目录 R语言使用igraph包进行网络(network)可视化实战 #包的安装和导入

  5. R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex)、将变量映射到网络的边(edge)

    R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex).将变量映射到网络的边(edge) 目录

  6. R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战

    R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战 目录 R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战

  7. R语言机器学习与大数据可视化暨Python文本挖掘与自然语言处理核心技术研修

    中国通信工业协会通信和信息技术创新人才培养工程项目办公室 通人办[2017] 第45号 "R语言机器学习与大数据可视化"暨"Python文本挖掘与自然语言处理" ...

  8. “R语言机器学习与大数据可视化”暨“Python文本挖掘与自然语言处理”核心技术高级研修班的通知

    中国通信工业协会通信和信息技术创新人才培养工程项目办公室 通人办[2017] 第45号 "R语言机器学习与大数据可视化"暨"Python文本挖掘与自然语言处理" ...

  9. 【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享...

    原文链接:http://tecdat.cn/?p=24198 聚类是将总体或数据点划分为多个组的任务,以使同一组中的数据点与同一组中的其他数据点更相似,而与其他组中的数据点不相似.它基本上是基于它们之 ...

最新文章

  1. 边缘触发(Edge Trigger)和条件触发(Level Trigger)
  2. 每天一道LeetCode-----寻找二叉搜索树中第k小的元素
  3. 算法设计与分析(第四周)同时选最大和最小 优化解法
  4. Java并发编程实战~Lock
  5. android手机两种方式获取IP地址
  6. 简单又有效!神奇的轻量级通用上采样算子CARAFE
  7. 为什么使用3msip2协议_知识卡片 | 链路状态路由协议OSPF凭什么会取代RIP?
  8. 随机数相加等于固定值_excel随机函数出来的数相加等于一个想要的固定值
  9. github里的默认域_FProbe 获取域/子域的列表,并探查工作中的http / https服务器。...
  10. 违反计算机信息网络国际联网安全,给你普及一下为了加强对计算机信息网络国际联网的安全保护,维护公共秩序和社会稳定,早在1997年12月30日【刁爱青吧】_百度贴吧...
  11. 2021-09-07python深拷贝和浅拷贝
  12. 计算机模拟泊松分布,R语言进行数值模拟:模拟泊松回归模型的数据
  13. 给大家推荐一个经典的ping工具-MTR
  14. 计算机软考程序员试题,最全历年程序员软考考试上午真题合集(附答案).doc...
  15. Linux安装字体库
  16. zmeet会议在金融、教育和场景特点与产品功能方案
  17. mysql jemalloc_jemalloc优化MySQL、Nginx内存管理
  18. python zemax_python的用途和优点
  19. yapi token注入漏洞
  20. 最适合游戏的显卡排行榜,显卡天梯图

热门文章

  1. 微信H5页面源码如何看
  2. 软件测试基础——概念篇
  3. java graphics2d 乱码_Graphics2D 中文乱码
  4. dream_c梦想标准化语言评估,孩子语言发展落后,诊断治疗需“量体裁衣”
  5. ENVI系列--遥感影像UTM投影计算公式
  6. VMware克隆虚拟机镜像、导入镜像,图文教程
  7. 一将成,万骨枯,趣店上市背后的残酷游戏
  8. 2020年5月面试精心整理java面试题,覆盖了大部分面试题(附答案)
  9. 启动docker 报ERROR: failed to register layer: symlink
  10. 智博联反射波测桩分析软件 V141125专业版