如果已经具有.net数据便直接可以利用R的igraph包进行计算网络的中心性系数与绘制对偶图。而如果数据为shp或其他,则需要先进行数据的转化,转化为.net数据再放入R中计算。
同样Matlab,也有对应计算这些参数的函数,详情可查询matlab的centrality等函数,python的networkx也提供了相关的函数。
Betweenness Centrality
library(igraph)
Betweenness<-function()
{
file=file.choose()
Graph=read.graph(file,format="pajek")
Bet=betweenness(Graph,V(Graph),FALSE,NULL,TRUE,FALSE)
write.table(Bet,"Betweenness.txt")
}
Closeness Centrality
library(igraph)
Closeness<-function()
{
file=file.choose()
Graph=read.graph(file,format="pajek")
close=closeness(Graph,V(Graph),mode=c("out","in","all","total"),NULL,TRUE)
write.table(close,"Closeness.txt")
}
Degree
library(igraph)
Degree<-function()
{
file=file.choose()
Graph=read.graph(file,format="pajek")
deg=degree(Graph,V(Graph))
write.table(deg,"Degree.txt")
}
利用.net数据来绘制其对应的对偶图
library(igraph)
G <- read.graph(file="C:\\Users\\lenovo\\Desktop\\1.net",format = "pajek")
plot(G,vertex.size=5,layout=layout.fruchterman.reingold,
vertex.shape='circle',vertex.label.cex=1.0,
vertex.label.color='black',
edge.arrow.size=0) #连线的箭头的大小为0,即无箭头
#vertex.size=1表示节点的大小
#layout表示布局方式(发散性)
#vertex.label=NA,不显示任何点信息,默认显示idx号
#vertex.color=V(g)$color 点的颜色设置
#mark.groups表示设置分组
#vertex.shape='none'不带边框
#vertex.label.cex=1.5, #节点字体大小
#vertex.label.color='red'
#edge.arrow.size=0.7 #连线的箭头的大小
#edge.color = grey(0.5)#线的颜色
#edge.arrow.mode = "-" 箭头换成线
#vertex.label.dist=5 点标签和节点之间的距离一般0.1,便于错开重叠