图形视觉化(Graph Visualization)
网络可视化(Network Visualization)
以下是马德里三一一连环爆炸案参与者制作的关系网,数据来自两个重要变量,nodes包含了所有的序列(id),人名(label)和组别(group),edges包含了所有的连线的起始(from),终点(to),线粗(value)
> head(nodes)
id group label
1 1 1 Jamal Zougam
2 2 0 Mohamed Bekkali
3 3 1 Mohamed Chaoui
4 4 0 Vinay Kholy
5 5 0 Suresh Kumar
6 6 1 Mohamed Chedadi
> # edges 中存在重复的连线
> # 一是因为懒,二是节点的size数值区别更大(自动*2)
> head(edges)
from to value
1 1 2 1
2 1 3 3
3 1 4 1
4 1 5 1
5 1 6 1
6 1 7 4
借助visNetwork
和igraph
生成网络图,节点的连线数为节点的大小(nodes里的value列)
library(visNetwork)
library(igraph)
# 关系变量(?)
g <- graph_from_data_frame(edges, directed = FALSE, vertices = nodes)
# 节点大小
value <- as.numeric(strength(g))
nodes$value <- value
visNetwork(nodes, edges, main = "Terrorist connections") %>%
# 优化斥力是网络更好看
visPhysics(solver="repulsion") %>%
visLegend(main = "Bombing group") %>%
# 选择(点击)某节点后生成网络的距离为1
visOptions(highlightNearest = list(enabled =TRUE, degree = 1),
nodesIdSelection = TRUE)
在左上角选择或者点击对应的节点,会形成以此点为核心距离为1的关系网
优化边介数来计算分类,再以此分类为组别重新绘图
ceb <- cluster_edge_betweenness(g)
# 将结果赋予原nodes里的group列
nodes$group <- ceb$membership
visNetwork(nodes,edges, main = "Terrorist connections")%>%
visPhysics(solver = "repulsion") %>%
visOptions(highlightNearest = list(enabled =TRUE, degree = 1),
nodesIdSelection = TRUE)
也可绘制igraph样貌的网络图
visNetwork(nodes,edges, main = "Terrorist connections")%>%
visIgraphLayout() %>%
visPhysics(solver = "repulsion")
【没有了Q弹的感觉,但图生成更快,棱角分明】