# Analise de redes # # Bibliotecas utilizadas library(igraph) library(dplyr) library(networkD3) # Leitura do arquivo exemplo_01.net no formato de "grafo" ------------- g1 <- read.graph("exemplo1.net", format="pajek") str(g1) g1 V(g1) E(g1) plot(g1) # Uma visualizacao "rapida" da rede # Matriz de Adjacencia ----------------------------------------- ma <- as_adjacency_matrix(g1, type ="both") ma # Medidas relacionadas a rede ---------------------------------- # Densidade densidade <- edge_density(g1) densidade # calculo da densidade: n_arestas / (n_nos 8 (n_nos - 1)/2) n_arestas <- length(E(g1)) n_nos <- length(V(g1)) n_arestas / ( n_nos*(n_nos-1)/2 ) # Grau medio grau.medio <- mean(degree(g1)) grau.medio # Comprimento de caminho medio (average path length) L.medio <- average.path.length(g1, unconnected = TRUE) L.medio # Diametro diametro <- diameter(g1) diametro # Coeficiente de agrupamento medio agrup.medio <- transitivity(g1, type = "average") agrup.medio # Medidas relacionadas aos nos --------------------------------- # Grau grau.nos <- degree(g1) grau.nos # Tabela para Grau grau.tab <- as.data.frame(grau.nos) grau.tab$No <- row.names(grau.tab) names(grau.tab) <- c("Grau","Nó") grau.tab <- grau.tab[,c(2,1)] grau.tab <-grau.tab[order(-grau.tab$Grau),] grau.tab <- as.data.frame(grau.tab) grau.tab # Pagerank pg.rnk <- page.rank(g1) pg.rank <- pg.rnk$vector # Tabela para page rank pgrnk.tab <- as.data.frame(pg.rank) pgrnk.tab$No <- row.names(pgrnk.tab) names(pgrnk.tab) <- c("PageRank","Nó") pgrnk.tab <- pgrnk.tab[,c(2,1)] pgrnk.tab <- pgrnk.tab[order(-pgrnk.tab$PageRank),] pgrnk.tab <- as.data.frame(pgrnk.tab) pgrnk.tab # Intermediacao interm.nos <- betweenness(g1,normalized = TRUE) # Tabela para intermediacao betw.nos.tab <- as.data.frame(interm.nos) betw.nos.tab$No <- row.names(betw.nos.tab) names(betw.nos.tab) <- c("Betweenness","Nó") betw.nos.tab <- betw.nos.tab[,c(2,1)] betw.nos.tab <- as.data.frame(betw.nos.tab) betw.nos.tab # Clustering agrup <- transitivity(g1, type = "local") # Tabela para Clustering agrup.tab <- as.data.frame(agrup) agrup.tab$No <- row.names(grau.tab) names(agrup.tab) <- c("Clustering","Nó") agrup.tab <- agrup.tab[,c(2,1)] agrup.tab <- as.data.frame(agrup.tab) agrup.tab # Data frame agregado resumo1 <- merge(grau.tab,pgrnk.tab,by="Nó") resumo2 <- merge(betw.nos.tab,agrup.tab,by="Nó") resumo.no <- merge(resumo1,resumo2,by="Nó") resumo.no <- resumo.no[order(-resumo.no$PageRank),] resumo.no rm(resumo1,resumo2) resumo.no <- resumo.no %>% arrange(desc(PageRank)) # Medidas para arestas ----------------------------------------- interm.arestas <- edge_betweenness(g1, directed = FALSE) interm.arestas # Layouts para a rede ------------------------------------------ # Mudanca das propriedades do grafo: V(g1)$tamanho <- degree(g1)*5 + 2 #E(g1)$arrow.mode <- 0 # Circular L.circ.2 <- layout_in_circle(g1) plot(g1, layout=L.circ.2,vertex.size = V(g1)$tamanho) # Fruchterman-Reingold L.fr.2 <- layout_with_fr(g1) plot(g1, layout=L.fr.2,vertex.size = V(g1)$tamanho) # Kamada Kawai L.kk.2 <- layout_with_kk(g1) plot(g1, layout=L.kk.2,vertex.size = V(g1)$tamanho) # detecção de comunidades com edgebetweenness comunid <- cluster_edge_betweenness(g1) comunid comunid$membership # atribuindo grupo aos nos V(g1)$grupos <- comunid$membership # Adicionando cores library(RColorBrewer) cores <- brewer.pal(9, "Set1") # Atribuindo cores aos grupos vetorcor1 <- cores[as.numeric(as.factor(V(g1)$grupos))] plot(g1, vertex.color=vetorcor1,layout=L.fr.2,vertex.size = V(g1)$tamanho) # Analisando os grupos a partir do resultado de comunidades dendPlot(comunid, mode="hclust") # grafo com comunidades plot(comunid, g1,vertex.color=vetorcor1,layout=L.fr.2,vertex.size = V(g1)$tamanho) # Grafo em D3 (biblioteca ) g1_d3 <- igraph_to_networkD3(g1, group = V(g1)$grupos) # force directed network plot forceNetwork(Links = g1_d3$links, Nodes = g1_d3$nodes, Source = 'source', Target = 'target', NodeID = 'name', Group = 'group',zoom = TRUE) # A partir daqui executa arquivo exemplo1.Rmd ---------------------------------- # output1 = "ex1.doc" output2 = "ex1.html" #output = output1 output = output1 rmarkdown::render('exemplo1.Rmd', output_file = output, #params = params, envir = new.env(parent = globalenv())) #----------------------------------------------------------- # #######################################################################