# pacchetti library(tidyverse) library(quanteda) library(igraph) # dati load("dati/es_twitter.rda") # matrice delle co-occorrenze rt.fcm <- rt2 %>% mutate(text = str_replace_all(text, "[\'’]", "' ")) %>% corpus() %>% # tokenizzazione tokens(remove_punct = T) %>% # matrice documenti termini dfm() %>% # selezione dei soli hashtags dfm_select("#*") %>% # soglia di occorrenze dfm_trim(min_termfreq = 4) %>% # matrice delle cooccorrenze fcm() # dalla matrice di adiacenza g2 <- graph_from_adjacency_matrix(rt.fcm[1:10,1:10], # pesi weighted = T) %>% # non orientato as.undirected() %>% # semplificato simplify() V(g2)$frequency <- meta(rt.fcm, "margin", "object")[1:10] set.seed(123) par(mar = c(0,0,0,0)) plot(g2, edge.curved = 0.2, asp = 1, vertex.frame.color = "transparent", # dimensione dei nodi proporzionali alle frequenze vertex.size = V(g2)$frequency/max(V(g2)$frequency)*40, # spessore dei link proporzionali ai pesi edge.width = E(g2)$weight/max(E(g2)$weight)*10 ) # dal dataframe dell'edgelist # trasformiamo la matrice dell'esempio precedente df <- tidytext::tidy(rt.fcm[1:10,1:10]) %>% rename(term1 = document, term2 = term, weight = count) graph_from_data_frame(df, # non orientato directed = F) %>% # semplificato simplify()