Графический дизайн сетей с ggraph и visNetwork
library(udpipe)
library(tidyverse)
library(igraph)
library(ggraph)
library(visNetwork)
caesar <- udpipe_read_conllu("https://github.com/locusclassicus/text_analysis_2024/raw/main/files/bg_latinpipe.conllu")
caesar_subset <- caesar |>
filter(upos %in% c("NOUN"))
cooc2 <- cooccurrence(caesar_subset, term = "lemma",
group = c("doc_id", "sentence_id")) |>
as_tibble() |>
filter(cooc > 40)
caesar_g <- graph_from_data_frame(cooc2, directed = TRUE)
V(caesar_g)$degree <- as.numeric(degree(caesar_g))
V(caesar_g)$group <- ifelse(V(caesar_g)$degree > 4, "Частые", "Редкие")
my_cols <- c("Частые" = "#D35400", "Редкие" = "#F39C12")
set.seed(21092024)
ggraph(caesar_g, layout = "dh", maxiter = 100) +
geom_edge_arc(strength = 1,
arrow = arrow(angle = 20, length = unit(0.2, "cm"), ends = "last", type = "closed"),
end_cap = circle(1.5, "mm")) +
geom_node_point(aes(size = degree, fill = group),
shape = 21) +
geom_node_label(aes(label = name),
nudge_y = 0.7) +
scale_fill_manual(values = my_cols) +
scale_size(guide = 'none') +
theme_graph(base_family = "sans") +
theme(legend.position = "bottom") +
labs(title = "Слова-соседи в Записках Цезаря")
