前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >igraph包——绘制网络图

igraph包——绘制网络图

作者头像
庄闪闪
发布2021-04-09 10:46:58
2.3K0
发布2021-04-09 10:46:58
举报
文章被收录于专栏:庄闪闪的R语言手册

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

导入边数据和节点数据

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

代码语言:javascript
复制
edges <- read.table('edge.csv', header=T, sep=',') #导入边数据
vertices <- read.table('vertices.csv', header=T, sep=',') #导入节点数据
edges;vertices
graph <- graph_from_data_frame(edges, directed = F, vertices=vertices)

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

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

代码语言:javascript
复制
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")  #连线颜色

效果如下:

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

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

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

代码语言:javascript
复制
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)

效果如下:

参考文献:Statistical Analysis of Network Data with R by Eric D. Kolaczyk, Gábor Csárdi

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档