查看原文
其他

ggraph优雅的绘制环状网络图

ANERYAN R语言数据分析指南 2023-06-15

欢迎关注R语言数据分析指南

本节来介绍如何使用「ggraph」绘制圆形网络图,这里使用了一个R包「ccgraph」,各位观众老爷细细体会,下面通过一个小例子来进行展示

加载R包

library(tidygraph)
library(ggraph)
library(tidyverse)
library(magrittr)
library(devtools)
library(tidytext)
library(tidygraph)
library(RColorBrewer)

安装R包

install_github("gaospecial/ccgraph")
library(ccgraph)

导入数据

otu <- read_tsv("otu_taxa_table.xls") %>% 
  select(OTU:C5,taxonomy) %>% 
  separate(taxonomy,
           into=c("domain","phylum","class","order","family","genus","species"),sep=";") %>% 
  mutate_at(vars(c(`domain`:`species`)),~str_split(.,"__",simplify=TRUE)[,2]) %>% 
  column_to_rownames("OTU")

table <- otu %>% select_if(~is.numeric(.)) %>% rownames_to_column("ID")
tax <- otu %>% select_if(~!is.numeric(.)) %>% rownames_to_column("ID")

数据清洗

title_description_tf_idf <- table %>% left_join(.,tax %>% select(1,phylum),by="ID") %>% 
  select(-ID) %>% 
  group_by(phylum) %>%
  summarise(across(where(is.numeric), ~ sum(.x, na.rm=TRUE))) %>% 
  pivot_longer(-phylum) %>%
  filter(phylum!="",value!=0) %>% 
  set_colnames(c("title","word","n")) %>% 
  bind_tf_idf(word, title , n)

生成边文件&点文件

title_description_tf_idf
country_index <- c("title","word")
nodes_country <- gather_graph_node(title_description_tf_idf ,index = country_index, value = "n",root="phylum")
edges_country <- gather_graph_edge(title_description_tf_idf ,index = country_index,root="phylum")

数据整合

graph_country <- tbl_graph(nodes_country,edges_country)

数据可视化

ggraph(graph_country,layout = 'dendrogram', circular = TRUE) + 
  geom_edge_diagonal(aes(color=node1.node.branch),alpha=1/3) + 
  geom_node_point(aes(size=node.size,color=node.branch),alpha=1/3) + 
  coord_fixed()+
  theme_void()+
  theme(legend.position = "none")+
  scale_size(range = c(0.5,80)) +
  geom_node_text(aes(x = 1.0175 * x,y = 1.0175 * y,
      label = node.short_name,
      angle = -((-node_angle(x, y) + 90) %% 180) + 90,
      filter = leaf,color = node.branch), size =3, hjust = 'outward') +
  scale_colour_manual(values= rep( brewer.pal(9,"Paired") , 30))+
  geom_node_text(aes(label=node.short_name,filter = !leaf,color = node.branch),
                 fontface="bold",size=4,family="Times")

参考:https://github.com/gaospecial/ccgraph

数据获取

本节内容到此结束,更详细的介绍请参考上方链接,喜欢的小伙伴欢迎转发此文档附上一句话到朋友圈「30分钟后后台截图给我」,即可获取对应的数据及代码,如未及时回复可添加我的微信

欢迎大家扫描下方二位码加入「QQ交流群」,与全国各地上千位小伙伴交流

「关注下方公众号下回更新不迷路」,如需要加入微信交流群可添加小编微信,请备注单位+方向+姓名

往期推荐

ggplot2优雅的绘制环状面积图

ggblend绘制完美的散点图

ggplot2优雅绘制小清新版箭头图

哥俩好-ggplot2绘制配对条形图

circlize优雅的绘制多重注释弦图

跟着Nature学绘图(3) 再谈ggplot2绘制热图

跟着论文学习ggplot2绘图

跟着Nature学绘图(2) 箱线图-累积分布曲线图

跟着Nature学绘图(1) 热图|散点图

R包安装终极方案

手把手教你绘制ggplot版circlize图

ggplot2优雅的绘制网络图

手把手教你计算旁系同源基因ka/ks值

使用rstatix优雅的进行统计分析

R优雅的进行多因素方差分析

ggplot2优雅的绘制旭日图

ggplot2绘制美美的花瓣图

ggplot2绘制美美的月亮图

手把手教你用OTU表绘制物种组成图

ggplot2绘制美美的棒棒糖图

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存