❝本节来介绍如何使用「ggraph」包来绘制相关性网络图,非常简单的一个小案例;
library(tidyverse)
library(widyr)
library(ggraph)
library(tidytext)
library(RColorBrewer)
df<- read_csv("data.csv")
❝使用「str_to_lower」将字符转换为小写,[:punct:]将标点符号移除 ❞
p <- df %>%
mutate(tags = str_to_lower(str_remove_all(tags, "[:punct:]"))) %>%
select(name,tags) %>%
separate_rows(tags, sep = " ") %>%
count(name,tags) %>%
filter(n > 3) %>%
pairwise_cor(tags, name, n) # 计算相关性
❝由于需要用到的颜色较多因此使用「colorRampPalette」函数来扩展调色板 ❞
mycolors <- colorRampPalette(brewer.pal(8, "Set1"))(20)
p %>% ggraph(layout = "fr")+
geom_edge_link(aes(color = correlation > 0, width = correlation), alpha = 0.6)+
geom_node_point(size=5,aes(color=name)) +
geom_node_text(aes(label = name),color="black",
hjust = 0.5, vjust = 0.5,
check_overlap = T, size=4)+
scale_color_manual(values = mycolors) +
scale_edge_width_continuous(range = c(1,2)) +
scale_edge_color_brewer(palette = "Paired")+
theme_void() +
theme(plot.margin = margin(0,1,0,0,"cm"))+
guides(color = "none")