igraph包——绘制网络图

简介: 本文是复杂网络课的一个小作业,主要学习如何导入图数据以及如何利用igraph包绘制网络图。

本文是复杂网络课的一个小作业,主要学习如何导入图数据以及如何利用igraph包绘制网络图

$SSZM06L@II0P6[$]W6C1RB.png


导入边数据和节点数据


这里主要是将边数据和节点数据分别导入,再利用igraph包中的graph_from_data_frame()将边,节点数据进行合并构成一个网络图。注意:节点数据中可包含一些属性(年龄,性别等),这些属性可以再在分析和绘图中起到较大作用。比如:各个节点的形状可由年龄大小决定,节点颜色可由性别决定。在我们本文的数据中,只包含一个节点属性(课程所含类别:1,2,3,4),数据包含36个节点,35条边。

edges <- read.table('edge.csv', header=T, sep=',') #导入边数据vertices <- read.table('vertices.csv', header=T, sep=',') #导入节点数据edges;verticesgraph <- graph_from_data_frame(edges, directed = F, vertices=vertices)

directed = TRUE表示有方向;如果不需要节点数据,可以设置vertices=NULL。接下来对改图进行绘制,有两种生成方式,一是直接绘制,参数放plot()里面;二是通过修改图的方式设置参数,然后利用plot()绘制。


生成方式1(没有颜色分类)



igraph.options(vertex.size=3, vertex.label=NA, edge.arrow.size=0.5)V(graph)$color <- colrs[V(graph)$color]plot(graph,       layout=layout.reingold.tilford(graph,circular=T),  #layout.fruchterman.reingold表示弹簧式发散的布局,     vertex.size=5,     #节点大小       vertex.shape='circle',    #节点不带边框none,,圆形边框circle,方块形rectangle       vertex.color="lightgreen",#设置颜色,其他如red,blue,cyan,yellow等     vertex.label=vertices$name, #NULL表示不设置,为默认状态       vertex.label.cex=0.8,    #节点字体大小       vertex.label.color='black',  #节点字体颜色,red       vertex.label.dist=0.4,   #标签和节点位置错开     edge.arrow.size=0,#连线的箭头的大小,若为0即为无向图,当然有些数据格式不支持有向图       edge.width = 0.5, #连接线宽度     edge.color="gray")  #连线颜色


效果如下:


U`~@)X0))~F43PW5){6Q`DU.png

当然,上面的plot函数中,很多参数你都可以使用默认参数,最主要的是layout的设置。下面我整理了一些用的比较多的选项。


生成方式2(有颜色分类)


这里主要是将节点的属性color加入其中,通过颜色来呈现。因为节点比较多,所以把V(graph)$size调的比较小。


l = layout.reingold.tilford(graph,circular=T)V(graph)$size <- 8  colrs <- c('#0096ff', "lightblue", "azure3","firebrick1")V(graph)$color <- colrs[vertices$color] #根据类型设置颜色,按照类型分组V(graph)$label.color <- 'black' #设置节点标记的颜色V(graph)$label <- V(graph)$name E(graph)$arrow.size=0.3 #设置箭头大#生成图plot(graph, layout=l)




效果如下:

I@ZK{X$G7$`VLN_{Y@96ZDD.png

目录
相关文章
|
4月前
|
弹性计算 运维 Kubernetes
看阿里云操作系统控制台如何一招擒拿网络丢包
阿里云操作系统控制台帮忙客户快速定位问题,不仅成功完成业务部署并实现稳定运行,更有效遏制了持续性成本消耗。
|
8月前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
251 12
|
12月前
|
Linux iOS开发 网络架构
如何使用 Ping 命令监测网络丢包情况?
如何使用 Ping 命令监测网络丢包情况?
9171 48
|
缓存 算法 物联网
基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量
本系统基于MATLAB 2017b,对AODV与LEACH自组网进行了升级仿真,新增运动节点路由测试,修正丢包率统计。AODV是一种按需路由协议,结合DSDV和DSR,支持动态路由。程序包含参数设置、消息收发等功能模块,通过GUI界面配置节点数量、仿真时间和路由协议等参数,并计算网络性能指标。 该代码实现了节点能量管理、簇头选举、路由发现等功能,并统计了网络性能指标。
383 73
|
12月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
240 32
|
11月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
11月前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
2365 2
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
|
存储 弹性计算 测试技术
阿里云服务器实例规格vCPU、内存、网络带宽、网络收发包PPS、连接数等性能指标详解
阿里云服务器ECS实例可以分为多种实例规格族。根据CPU、内存等配置,一种实例规格族又分为多种实例规格。而实例规格又包含vCPU、处理器、内存、vTPM、本地存储、网络带宽、网络收发包PPS、连接数、弹性网卡、云盘带宽、云盘IOPS等指标,本文为大家详细介绍实例规格的这些指标,以供大家了解和选择。
937 14
阿里云服务器实例规格vCPU、内存、网络带宽、网络收发包PPS、连接数等性能指标详解