zl程序教程

您现在的位置是:首页 >  Java

当前栏目

ggraph快速绘制相关性网络图

2023-02-18 16:35:33 时间

❝本节来介绍如何使用「ggraph」包来绘制相关性网络图,非常简单的一个小案例;

加载R包

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")