【R语言实例】igraph — 网络分析与可视化包(1)
作者简介: 本文作者系大学统计学专业教师,多年从事统计学的教学科研工作,在随机过程、统计推断、机器学习领域有深厚的理论积累与应用实践。
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)相关推荐
- 【R语言实例】igraph — 网络分析与可视化包(2)
作者简介: 本文作者系大学统计学专业教师,多年从事统计学的教学科研工作,在随机过程.统计推 断.机器学习领域有深厚的理论积累与应用实践. 2. 从文件读取网络数据 数据集1: 边列表 边列表数据集由两 ...
- R语言用igraph绘制网络图可视化
这篇文章假定你已经知道如何用igraph库建立一个基本的网络图. 基本上,igraph允许将几种类型的输入转化为一个图形对象,可以使用plot()函数绘制,如下所示. # 创建数据 network & ...
- R语言实例:diamonds 数据可视化分析报告
文章目录 数据描述 导入数据 变量含义 数据清洗 检查缺失值及重复值 探索性分析 钻石的形状 钻石的重量分布 每种切割类型.颜色.清晰度的钻石分别有多少个 钻石的价格 最昂贵的10只钻石的属性信息 理 ...
- R语言使用igraph包进行网络(network)可视化实战
R语言使用igraph包进行网络(network)可视化实战 目录 R语言使用igraph包进行网络(network)可视化实战 #包的安装和导入
- R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex)、将变量映射到网络的边(edge)
R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex).将变量映射到网络的边(edge) 目录
- R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战
R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战 目录 R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战
- R语言机器学习与大数据可视化暨Python文本挖掘与自然语言处理核心技术研修
中国通信工业协会通信和信息技术创新人才培养工程项目办公室 通人办[2017] 第45号 "R语言机器学习与大数据可视化"暨"Python文本挖掘与自然语言处理" ...
- “R语言机器学习与大数据可视化”暨“Python文本挖掘与自然语言处理”核心技术高级研修班的通知
中国通信工业协会通信和信息技术创新人才培养工程项目办公室 通人办[2017] 第45号 "R语言机器学习与大数据可视化"暨"Python文本挖掘与自然语言处理" ...
- 【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享...
原文链接:http://tecdat.cn/?p=24198 聚类是将总体或数据点划分为多个组的任务,以使同一组中的数据点与同一组中的其他数据点更相似,而与其他组中的数据点不相似.它基本上是基于它们之 ...
最新文章
- 边缘触发(Edge Trigger)和条件触发(Level Trigger)
- 每天一道LeetCode-----寻找二叉搜索树中第k小的元素
- 算法设计与分析(第四周)同时选最大和最小 优化解法
- Java并发编程实战~Lock
- android手机两种方式获取IP地址
- 简单又有效!神奇的轻量级通用上采样算子CARAFE
- 为什么使用3msip2协议_知识卡片 | 链路状态路由协议OSPF凭什么会取代RIP?
- 随机数相加等于固定值_excel随机函数出来的数相加等于一个想要的固定值
- github里的默认域_FProbe 获取域/子域的列表,并探查工作中的http / https服务器。...
- 违反计算机信息网络国际联网安全,给你普及一下为了加强对计算机信息网络国际联网的安全保护,维护公共秩序和社会稳定,早在1997年12月30日【刁爱青吧】_百度贴吧...
- 2021-09-07python深拷贝和浅拷贝
- 计算机模拟泊松分布,R语言进行数值模拟:模拟泊松回归模型的数据
- 给大家推荐一个经典的ping工具-MTR
- 计算机软考程序员试题,最全历年程序员软考考试上午真题合集(附答案).doc...
- Linux安装字体库
- zmeet会议在金融、教育和场景特点与产品功能方案
- mysql jemalloc_jemalloc优化MySQL、Nginx内存管理
- python zemax_python的用途和优点
- yapi token注入漏洞
- 最适合游戏的显卡排行榜,显卡天梯图
热门文章
- 微信H5页面源码如何看
- 软件测试基础——概念篇
- java graphics2d 乱码_Graphics2D 中文乱码
- dream_c梦想标准化语言评估,孩子语言发展落后,诊断治疗需“量体裁衣”
- ENVI系列--遥感影像UTM投影计算公式
- VMware克隆虚拟机镜像、导入镜像,图文教程
- 一将成,万骨枯,趣店上市背后的残酷游戏
- 2020年5月面试精心整理java面试题,覆盖了大部分面试题(附答案)
- 启动docker 报ERROR: failed to register layer: symlink
- 智博联反射波测桩分析软件 V141125专业版