Import Libraries

## Warning: package 'igraph' was built under R version 3.6.1

Create Directed Graph

graphNode <- graph(c(1,2,2,3,3,4,4,1),directed = FALSE,n=7)
graphNodes <- graph(c("Amy","Ram","Ram","Li","Li","Amy","Amy","Li","kate","Li"))
plot(graphNode,vertex.color="orange",vertex.size=40,edge.color="purple")

plot(graphNodes,vertex.color="green",vertex.size=40,edge.color="red",main="Twitter Example")
graphNode[]

## 7 x 7 sparse Matrix of class "dgCMatrix"
##                   
## [1,] . 1 . 1 . . .
## [2,] 1 . 1 . . . .
## [3,] . 1 . 1 . . .
## [4,] 1 . 1 . . . .
## [5,] . . . . . . .
## [6,] . . . . . . .
## [7,] . . . . . . .

Network Measures

degree(graphNodes,mode = "all")
##  Amy  Ram   Li kate 
##    3    2    4    1
degree(graphNodes,mode = "in")
##  Amy  Ram   Li kate 
##    1    1    3    0
degree(graphNodes,mode = "out")
##  Amy  Ram   Li kate 
##    2    1    1    1
diameter(graphNodes,directed = FALSE,weights = NA)
## [1] 2
edge_density(graphNodes,loops = FALSE)
## [1] 0.4166667
ecount(graphNodes)/(vcount(graphNodes)*(vcount(graphNodes)-1))
## [1] 0.4166667
closeness(graphNodes,mode = "all",weights = NA)
##       Amy       Ram        Li      kate 
## 0.2500000 0.2500000 0.3333333 0.2000000
betweenness(graphNodes,directed = TRUE,weights = NA)
##  Amy  Ram   Li kate 
##    2    0    3    0
edge.betweenness(graphNodes,directed = TRUE,weights = NA)
## [1] 3 2 5 1 3

Read Data File

This data contain

data <- read.csv("networkdata.csv",header = TRUE)
socialData <- data.frame(data$first,data$second)
head(socialData)
##   data.first data.second
## 1         AA          DD
## 2         AB          DD
## 3         AF          BA
## 4         DD          DA
## 5         CD          EC
## 6         DD          CE

Create Network

net <- graph.data.frame(socialData,directed = TRUE)
V(net)
## + 52/52 vertices, named, from e156d45:
##  [1] AA AB AF DD CD BA CB CC BC ED AE CA EB BF BB AC DC BD DB CF DF BE EA
## [24] CE EE EF FF FD GB GC GD AD KA KF LC DA EC FA FB DE FC FE GA GE KB KC
## [47] KD KE LB LA LD LE
E(net)
## + 290/290 edges from e156d45 (vertex names):
##   [1] AA->DD AB->DD AF->BA DD->DA CD->EC DD->CE CD->FA CD->CC BA->AF CB->CA
##  [11] CC->CA CD->CA BC->CA DD->DA ED->AD AE->AC AB->BA CD->EC CA->CC EB->CC
##  [21] BF->CE BB->CD AC->AE CC->FB DC->BB BD->CF DB->DA DD->DA DB->DD BC->AF
##  [31] CF->DE DF->BF CB->CA BE->CA EA->CA CB->CA CB->CA CC->CA CD->CA BC->CA
##  [41] BF->CA CE->CA AC->AD BD->BE AE->DF CB->DF AC->DF AA->DD AA->DD AA->DD
##  [51] CD->DD AA->DD EE->DD CD->DD DB->AA AA->FC BE->CC EF->FD CF->FE BB->DD
##  [61] CD->DD BA->AB CD->EC BE->EE CE->CC CD->CC ED->CC BB->CC BE->CE DD->CE
##  [71] AC->CD ED->CD FF->CD AC->CD DD->CD DD->CD AE->GA AE->GA AE->GA AE->GA
##  [81] BA->ED BE->ED EB->ED CD->ED FD->EF FD->EF CD->BB BF->BB BC->BB BB->CF
##  [91] AE->AC DD->DA BE->CA BE->CA CB->CA CB->CA CC->CA BE->CC BE->CC DB->DD
## + ... omitted several edges
V(net)$label <- V(net)$name
V(net)$degree <- degree(net)

Histogram Of Node Degree

hist(V(net)$degree,col="orange",main = "Histogram Of Node Degree",ylab = "Frequency",xlab = "Degree Of Vertices")

Network Diagram

plot(net,vertex.color="orange",vertext.size=2,edge.arrow.size=0.1,vertex.label.cex=0.8)

Highlight Degree And Layouts

plot(net,vertex.color=rainbow(52),
     vertext.size=V(net)$degree*0.4,
     edge.arrow.size=0.1,
     layout=layout.fruchterman.reingold)

plot(net,vertex.color=rainbow(52),
     vertext.size=V(net)$degree*0.4,
     edge.arrow.size=0.1,
     layout=layout.graphopt)

plot(net,vertex.color=rainbow(52),
     vertext.size=V(net)$degree*0.4,
     edge.arrow.size=0.1,
     layout=layout.kamada.kawai)

Hub And Authorities

hs <- hub_score(net)$vector
as <- authority.score(net)$vector
par(mfrow=c(1,2))
set.seed(123)
plot(net,vertex.size=hs*30,main="Hubs",vertex.color=rainbow(52),edge.arrow.size=0.1,
     layout=layout.kamada.kawai)
set.seed(123)
plot(net,vertex.size=hs*30,main="Authorities",vertex.color=rainbow(52),edge.arrow.size=0.1,layout=layout.kamada.kawai)

par(mfrow=c(1,1))

Community Detection

net <- graph.data.frame(socialData,directed = FALSE)
cnet <- cluster_edge_betweenness(net)
plot(cnet,net,vertex.size=10,vertex.label.cex=0.8)