Network
1. 写在前面
本期教程:网络可视化。 应用场景:蛋白互作网络(PPI); ceRNA网络;社交关系图;相关性图等。 需要的文件:我们在使用network,igraph等包进行网络可视化的时候,一般需要两个数据,nodes数据和edges,即节点数据和边数据。ヽ( o・ェ・)ノ
2. 用到的包
rm(list = ls()) library(tidyverse) library(network) library(igraph)
3. 示例数据
本次使用的示例数据是Daniel van der Meulen在1585年收到的信件所组成,包括writer,source, destination和date
letters <- read_csv("correspondence-data-1585.csv")
4. 整理nodes数据
我们将source和destination提取出来并去重,整理为nodes文件;同时,我们为每一个城市创建一个ID.
sources <- letters %>% distinct(source) %>% rename(label = source) destinations <- letters %>% distinct(destination) %>% rename(label = destination) nodes <- full_join(sources, destinations, by = "label")%>% rowid_to_column("id")
5. 整理edges数据
整理edges文件与nodes文件类似; 在此,我们计算一下从source城市到destination城市间的来信次数,定义为weight; 后面我们会以weight定义边的粗细; 最后我们将nodes文件中的ID加入。
edges <- letters %>% group_by(source, destination) %>% summarise(weight = n()) %>% ungroup() %>% left_join(nodes, by = c("source" = "label")) %>% rename(from = id) %>% left_join(nodes, by = c("destination" = "label")) %>% rename(to = id) edges <- edges %>% dplyr::select(., from, to, weight)
6. 网络可视化(一)
方法一:network包可视化
6.1 构建网络文件routes_network <- network(edges, nodes, matrix.type = "edgelist", # "adjacency", # "edgelist", # "incidence", ignore.eval = FALSE)
note! matrix.type有三个选项,分别为adjacency, edgelist, incidence; 这里我们是edgelist的格式,有时你可能会有adjacency格式的数据做为输入文件.
6.2 初步绘图plot(routes_network, vertex.cex = 3)
plot(routes_network, vertex.cex = 3, mode = "circle")
7. 网络可视化(二)
方法二:igraph包可视化
detach(package:network) rm(routes_network) 7.1 构建网络文件
这里用到igraph包的graph_from_data_frame函数
routes_igraph <- graph_from_data_frame(d = edges, vertices = nodes, directed = TRUE) 7.2 初步绘图
plot(routes_igraph, edge.arrow.size = 0.2)
这里采用graphopt算法进行排列,可以更直观地看到Haarlem, Antwerp和Delft之间的关系
plot(routes_igraph, layout = layout_with_graphopt, edge.arrow.size = 0.2)
✅ add_layout_(); ✅ component_wise(); ✅ layout_as_bipartite(); ✅ layout_as_star(); ✅ layout_as_tree(); ✅ layout_in_circle(); ✅ layout_nicely(); ✅ layout_on_grid(); ✅ layout_on_sphere(); ✅ layout_randomly(); ✅ layout_with_dh(); ✅ layout_with_fr(); ✅ layout_with_gem(); ✅ layout_with_graphopt(); ✅ layout_with_kk(); ✅ layout_with_lgl(); ✅ layout_with_mds(); ✅ layout_with_sugiyama(); ✅ merge_coords(); ✅ norm_coords(); ✅ normalize()
甜甜圈最后祝大家早日不卷!~
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-21
,如有侵权请联系 [email protected] 删除
网址:Network https://mxgxt.com/news/view/1170357
相关内容
Social Network VisualizerFacebook Social Network Dataset
Star Network星网:社交 DeFi网络,星网公链【starnetwork星网吧】
Python基于network模块制作电影人物关系图
DSTC大蒜头:DTC Network引领数字金融新纪元的未来之路
社交网络 The Social Network
浅说社会网络分析法(Social Network Analysis, SNA)
网络图(Network Diagram)
ONE冠军赛宣布与区块链平台Theta Network达成全球合作伙伴,推出NFT产品
社交网络分析:数据挖掘的新方向1.背景介绍 社交网络分析(Social Network Analysis,SNA)是一种