R网络图—不同数据类型下网络图的绘制方法

2017 年 10 月 9 日 数萃大数据 周世荣

网络图是一种常用的数据可视化手段,广泛应用于社会关系挖掘,文本挖掘中。今天这篇短文主要讲解不同数据类型下网络图的绘制。涉及常用的邻接阵、边数据框以及双边邻接阵三种数据类型,鉴于各种绘制网络图的R包都直接或间接的依赖于igraph包,为减少大家的阅读负担,本文所有的操作都在igraph中操作,后续的博文中会陆续介绍如何使用其他封装度高的包绘制网络图。这样一来必然导致绘制的网络图非常丑陋,不过这不是这节的重点,本文的重点是认识绘制网络图的数据类型以及不同数据类型下网络图的绘制方法。

邻接阵

邻接阵是一个简单0,1的方阵。矩阵的行列名称都为网络图的节点,0表示两个节点无关,1表示两个节点有关联。

  
    
    
    
  1. set.seed(20171008)

  2. indactor=rbinom(25,1,0.55)

  3. dta=matrix(indactor,ncol=5)

  4. row.names(dta)=LETTERS[1:5]

  5. colnames(dta)=LETTERS[1:5]

  6. dta

对邻接阵使用graph.adjacency构造网络图对象,然后使用plot绘制

  
    
    
    
  1. ga=graph.adjacency(dta,mode="undirected",weighted=NULL)

  2. ga

  3. plot(ga)

边数据框

边数据框是最直接的绘制网络图的数据类型,它有两列分别表示网络图中每一边的出发点和结束点。为了便于与第一种数据类型比较,这里使用了相同的对应关系。

  
    
    
    
  1. Edges=data.frame(from=c('A','A','A','B','B','B','B','C','C','D'),

  2.   to=c('B','C','E','B','C','D','E','C','D','E'),stringsAsFactors = F)

  3. head(Edges)

对边数据框使用graph.data.frame构造网络图对象,然后使用plot绘制

  
    
    
    
  1. gb=graph.data.frame(Edges,directed=FALSE)

  2. gb

  3. plot(gb)

双边邻接阵

双边邻接阵是一种比较切合实际的数据类型,它的类型与邻接阵基本一样,但它的列名和行名不同

  
    
    
    
  1. A=c(1,1,0,0)

  2. B=c(1,0,1,0)

  3. C=c(1,0,1,0)

  4. D=c(0,1,0,1)

  5. E=c(0,0,1,1)

  6. dtc=matrix(c(A,B,C,D,E),nrow=5,byrow=TRUE)

  7. dimnames(dtc)=list(c("A","B","C","D","E"),c("Group1","Group2","Group3","Group4"))

  8. dtc

对双边邻接阵使用graph.incidence构造网络图对象,然后使用plot绘制,为了更好展现这种数据类型,我对网络图节点的特征进行了简单设置

  
    
    
    
  1. #前5个点用圈表示,后5个用方块表示

  2. shapes=c("circle","circle","circle","circle","circle","square","square",

  3. "square","square")

  4. #设置点的位置,前5个位于中心,后5个向偏移0.6个单位

  5. labeldistances=c(0,0,0,0,0,0.6,0.6,0.6,0.6)

  6. #vertex.label.degree用来规定点标签放置的位置

  7. plot(gc,vertex.shape=shapes,vertex.label.degree=-pi/2,

  8.     vertex.label.dist=labeldistances,vertex.color=V(gc)$type)

推荐阅读

微课|ggplot2:饼图

趣事分享 | python与微信

基于R语言对《平凡的世界》人物进行挖掘

用R语言实现汉语转拼音及英语

Python微课:用Python验证你的策略吧!——Zipline回测

Python微课 | Seaborn——Python优雅绘图(上)

【统计思想之终】——莫愁前路无知己,天下谁人不识君。

跟我学R爬虫|HTML基础与R语言解析

易图秒懂の机器学习诞生 奠基篇

更多微课请关注【数萃大数据】公众号,点击学习园地—可视化

欢迎大家关注微信公众号:数萃大数据

登录查看更多
1

相关内容

【KDD2020】自适应多通道图卷积神经网络
专知会员服务
119+阅读 · 2020年7月9日
【ICML2020】多视角对比图表示学习,Contrastive Multi-View GRL
专知会员服务
79+阅读 · 2020年6月11日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【电子书】大数据挖掘,Mining of Massive Datasets,附513页PDF
专知会员服务
104+阅读 · 2020年3月22日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
新书《面向机器学习和数据分析的特征工程》,419页pdf
专知会员服务
142+阅读 · 2019年10月10日
从数据结构到算法:图网络方法初探
机器之心
7+阅读 · 2019年8月12日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
Stata绘图:简单好用的37条外部命令
R语言中文社区
25+阅读 · 2018年9月22日
数据分析师应该知道的16种回归技术:弹性网络回归
数萃大数据
91+阅读 · 2018年8月16日
keras系列︱深度学习五款常用的已训练模型
数据挖掘入门与实战
10+阅读 · 2018年3月27日
模型汇总23 - 卷积神经网络中不同类型的卷积方式介绍
深度学习与NLP
5+阅读 · 2017年10月12日
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
python进行数据分析之数据聚合和分组运算
Python技术博文
3+阅读 · 2017年8月21日
AdarGCN: Adaptive Aggregation GCN for Few-Shot Learning
Arxiv
14+阅读 · 2019年11月26日
Arxiv
22+阅读 · 2019年11月24日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
VIP会员
相关VIP内容
【KDD2020】自适应多通道图卷积神经网络
专知会员服务
119+阅读 · 2020年7月9日
【ICML2020】多视角对比图表示学习,Contrastive Multi-View GRL
专知会员服务
79+阅读 · 2020年6月11日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【电子书】大数据挖掘,Mining of Massive Datasets,附513页PDF
专知会员服务
104+阅读 · 2020年3月22日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
新书《面向机器学习和数据分析的特征工程》,419页pdf
专知会员服务
142+阅读 · 2019年10月10日
相关资讯
从数据结构到算法:图网络方法初探
机器之心
7+阅读 · 2019年8月12日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
Stata绘图:简单好用的37条外部命令
R语言中文社区
25+阅读 · 2018年9月22日
数据分析师应该知道的16种回归技术:弹性网络回归
数萃大数据
91+阅读 · 2018年8月16日
keras系列︱深度学习五款常用的已训练模型
数据挖掘入门与实战
10+阅读 · 2018年3月27日
模型汇总23 - 卷积神经网络中不同类型的卷积方式介绍
深度学习与NLP
5+阅读 · 2017年10月12日
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
python进行数据分析之数据聚合和分组运算
Python技术博文
3+阅读 · 2017年8月21日
Top
微信扫码咨询专知VIP会员